潇潇 发表于 2011-7-25 00:01:19

C++ 消息实现HEX字串转",0x"格式源码

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;
        HINSTANCEhInstance;
        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={0};
                        TCHAR NewHexData={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==' ')
                                                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='0';
                                                        NewHexData='x';
                                                        NewHexData=HexData;
                                                        j=j+2;
                                                }
                                                else
                                                {
                                                        NewHexData=HexData;
                                                }

                                                if(HexData==' '|| HexData=='\n')
                                                {
                                                        NewHexData=',';
                                                        NewHexData='0';
                                                        NewHexData='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;
}http://www.wgbcw.com/data/attachment/album/201107/25/000635glx2xyy04wb2x205.jpg

页: [1]
查看完整版本: C++ 消息实现HEX字串转",0x"格式源码