TA的每日心情 | 奋斗 2020-6-5 22:18 |
---|
签到天数: 22 天 [LV.4]偶尔看看III
|
欢迎您注册加入!这里有您将更精采!
您需要 登录 才可以下载或查看,没有账号?注册
x
C++ 2008 中消息实现HEX字串转",0x"格式源码:- #include "resource.h"
- #include <wtypes.h>
- #include <winuser.h>
- // 全局变量:
- HINSTANCE g_hIns; // 当前实例
- HWND g_hCtrlWnd = NULL;
- LRESULT CALLBACK CtrlWndProc(HWND ,UINT ,WPARAM ,LPARAM );//主窗口处理函数
- int WINAPI WinMain(HINSTANCE hIns,HINSTANCE hPre,LPSTR lpCmdLine,int nCmdShow)
- {
- WNDCLASS WndClass;
- TCHAR szCtrlPanelClass[]=TEXT("FormMain");// 主窗口类名
- MSG msg;
- g_hIns=hIns;// 将实例句柄存储在全局变量中
- //注册窗口类开始
- /*typedef struct _WNDCLASS {
- UINT style;
- WNDPROC lpfnWndProc;
- int cbClsExtra;
- int cbWndExtra;
- HINSTANCE hInstance;
- HICON hIcon;
- HCURSOR hCursor;
- HBRUSH hbrBackground;
- LPCTSTR lpszMenuName;
- LPCTSTR lpszClassName;
- } WNDCLASS, *PWNDCLASS; */
- WndClass.style=CS_VREDRAW|CS_HREDRAW;
- WndClass.lpfnWndProc=CtrlWndProc;
- WndClass.cbClsExtra=0;
- WndClass.cbWndExtra=DLGWINDOWEXTRA;
- WndClass.hInstance=hIns;
- WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
- WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
- WndClass.hbrBackground=(HBRUSH)(COLOR_BTNFACE+1);
- WndClass.lpszMenuName=NULL;
- WndClass.lpszClassName=szCtrlPanelClass;
- if(!RegisterClass(&WndClass))
- {
- MessageBox(NULL,TEXT("窗口注册失败!"),TEXT("出错"),MB_OK);
- return 0;
- }
- //注册窗口类结束
- //保存实例句柄并创建主窗口
- g_hCtrlWnd=CreateDialog(hIns,szCtrlPanelClass,NULL,NULL);
- ShowWindow(g_hCtrlWnd,nCmdShow);
- //主消息循环
- while(GetMessage(&msg,NULL,0,0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- return 0;
- }
- LRESULT CALLBACK CtrlWndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)//主窗口处理函数
- {
- switch(message)
- {
- case WM_CREATE:
- g_hCtrlWnd=hWnd;
- return 0;
- case WM_SHOWWINDOW:
- return 0;
- case WM_COMMAND:
- switch(LOWORD(wParam))
- {
- case IDC_BUTTON1:
- TCHAR HexData[_MAX_ENV]={0};
- TCHAR NewHexData[_MAX_ENV]={0};
- int sLen=0;
- int kLen=0;
- sLen=SendMessage(GetDlgItem(hWnd,IDC_EDIT1),WM_GETTEXTLENGTH,0,0);
- //sLen=SendDlgItemMessage(hWnd,IDC_EDIT1,WM_GETTEXTLENGTH,0,0);
- GetDlgItemText(hWnd,IDC_EDIT1,(LPWSTR)HexData,sLen);
- if (sLen>0)
- {
- for (int i=0;i<=sLen;i++)
- {
- if(HexData[i]==' ')
- kLen=kLen+1;
- }
-
- int j=0;
- int k=0;
- if(sLen>= kLen)
- k=(sLen-kLen)/2;
- while(j<=k)
- {
- for (int i=0;i<=sLen;i++)
- {
- if(i==0)
- {
- NewHexData[j]='0';
- NewHexData[j+1]='x';
- NewHexData[j+2]=HexData[i];
- j=j+2;
- }
- else
- {
- NewHexData[j]=HexData[i];
- }
- if(HexData[i]==' '|| HexData[i]=='\n')
- {
- NewHexData[j]=',';
- NewHexData[j+1]='0';
- NewHexData[j+2]='x';
- j=j+2;
- }
- j++;
- }
- }
- SetWindowText(GetDlgItem(hWnd,IDC_EDIT2),NewHexData);
- }
- else
- {
- SetWindowText(GetDlgItem(hWnd,IDC_EDIT2),TEXT("请输入HEX数据……"));
- }
- return 0;
- }
- break;
-
- case WM_SIZE:
- return 0;
- case WM_DESTROY:
- PostQuitMessage(0);
- return 0;
- default:
- return DefWindowProc(hWnd,message,wParam,lParam);
- }
- return 0;
- }
复制代码
|
|