宝峰科技

 找回密码
 注册

QQ登录

只需一步,快速开始

智能终端设备维修查询系统注册会员邮箱认证须知!
查看: 2390|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2020-6-5 22:18
  • 签到天数: 22 天

    [LV.4]偶尔看看III

    潇潇 发表于 2011-7-25 00:01:19 | 显示全部楼层 |阅读模式

    欢迎您注册加入!这里有您将更精采!

    您需要 登录 才可以下载或查看,没有账号?注册

    x
    C++ 2008 中消息实现HEX字串转",0x"格式源码:
    1. #include "resource.h"
    2. #include <wtypes.h>
    3. #include <winuser.h>



    4. // 全局变量:
    5. HINSTANCE g_hIns;                 // 当前实例
    6. HWND g_hCtrlWnd = NULL;

    7. LRESULT CALLBACK CtrlWndProc(HWND ,UINT ,WPARAM ,LPARAM );//主窗口处理函数

    8. int WINAPI WinMain(HINSTANCE hIns,HINSTANCE hPre,LPSTR lpCmdLine,int nCmdShow)

    9. {

    10.         WNDCLASS WndClass;
    11.         TCHAR szCtrlPanelClass[]=TEXT("FormMain");// 主窗口类名

    12.         MSG msg;
    13.         g_hIns=hIns;// 将实例句柄存储在全局变量中


    14.         //注册窗口类开始

    15.         /*typedef struct _WNDCLASS {
    16.         UINT       style;
    17.         WNDPROC    lpfnWndProc;
    18.         int        cbClsExtra;
    19.         int        cbWndExtra;
    20.         HINSTANCE  hInstance;
    21.         HICON      hIcon;
    22.         HCURSOR    hCursor;
    23.         HBRUSH     hbrBackground;
    24.         LPCTSTR    lpszMenuName;
    25.         LPCTSTR    lpszClassName;
    26.         } WNDCLASS, *PWNDCLASS; */

    27.         WndClass.style=CS_VREDRAW|CS_HREDRAW;
    28.         WndClass.lpfnWndProc=CtrlWndProc;
    29.         WndClass.cbClsExtra=0;
    30.         WndClass.cbWndExtra=DLGWINDOWEXTRA;
    31.         WndClass.hInstance=hIns;
    32.         WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    33.         WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
    34.         WndClass.hbrBackground=(HBRUSH)(COLOR_BTNFACE+1);
    35.         WndClass.lpszMenuName=NULL;
    36.         WndClass.lpszClassName=szCtrlPanelClass;

    37.         if(!RegisterClass(&WndClass))
    38.         {
    39.                 MessageBox(NULL,TEXT("窗口注册失败!"),TEXT("出错"),MB_OK);
    40.                 return 0;
    41.         }

    42.         //注册窗口类结束

    43.         //保存实例句柄并创建主窗口
    44.         g_hCtrlWnd=CreateDialog(hIns,szCtrlPanelClass,NULL,NULL);
    45.         ShowWindow(g_hCtrlWnd,nCmdShow);

    46.         //主消息循环
    47.         while(GetMessage(&msg,NULL,0,0))
    48.         {
    49.                 TranslateMessage(&msg);
    50.                 DispatchMessage(&msg);
    51.         }


    52.         return 0;
    53. }

    54. LRESULT CALLBACK CtrlWndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)//主窗口处理函数
    55. {
    56.         switch(message)
    57.         {
    58.         case WM_CREATE:
    59.                 g_hCtrlWnd=hWnd;
    60.                 return 0;
    61.         case WM_SHOWWINDOW:

    62.                 return 0;
    63.         case WM_COMMAND:
    64.                 switch(LOWORD(wParam))
    65.                 {
    66.                 case IDC_BUTTON1:
    67.                         TCHAR HexData[_MAX_ENV]={0};
    68.                         TCHAR NewHexData[_MAX_ENV]={0};
    69.                         int sLen=0;
    70.                         int kLen=0;
    71.                         sLen=SendMessage(GetDlgItem(hWnd,IDC_EDIT1),WM_GETTEXTLENGTH,0,0);
    72.                         //sLen=SendDlgItemMessage(hWnd,IDC_EDIT1,WM_GETTEXTLENGTH,0,0);
    73.                         GetDlgItemText(hWnd,IDC_EDIT1,(LPWSTR)HexData,sLen);
    74.                         if (sLen>0)
    75.                         {
    76.                                 for (int i=0;i<=sLen;i++)
    77.                                 {
    78.                                         if(HexData[i]==' ')
    79.                                                 kLen=kLen+1;
    80.                                 }
    81.                                
    82.                                 int j=0;
    83.                                 int k=0;

    84.                                 if(sLen>= kLen)
    85.                                         k=(sLen-kLen)/2;

    86.                                 while(j<=k)
    87.                                 {
    88.                                         for (int i=0;i<=sLen;i++)
    89.                                         {       
    90.                                                 if(i==0)
    91.                                                 {
    92.                                                         NewHexData[j]='0';
    93.                                                         NewHexData[j+1]='x';
    94.                                                         NewHexData[j+2]=HexData[i];
    95.                                                         j=j+2;
    96.                                                 }
    97.                                                 else
    98.                                                 {
    99.                                                         NewHexData[j]=HexData[i];
    100.                                                 }

    101.                                                 if(HexData[i]==' '|| HexData[i]=='\n')
    102.                                                 {
    103.                                                         NewHexData[j]=',';
    104.                                                         NewHexData[j+1]='0';
    105.                                                         NewHexData[j+2]='x';
    106.                                                         j=j+2;
    107.                                                 }
    108.                                                 j++;
    109.                                         }               
    110.                                 }

    111.                                 SetWindowText(GetDlgItem(hWnd,IDC_EDIT2),NewHexData);
    112.                         }
    113.                         else
    114.                         {
    115.                                 SetWindowText(GetDlgItem(hWnd,IDC_EDIT2),TEXT("请输入HEX数据……"));
    116.                         }
    117.                         return 0;
    118.                 }
    119.                 break;
    120.        

    121.         case WM_SIZE:

    122.                 return 0;

    123.         case WM_DESTROY:
    124.                 PostQuitMessage(0);
    125.                 return 0;
    126.         default:
    127.                 return DefWindowProc(hWnd,message,wParam,lParam);
    128.         }
    129.         return 0;
    130. }
    复制代码


    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    免责声明

    本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件编程开发或软件的逆向分析文章、逆向分析视频、补丁、注册机和注册信息,仅限用于学习和研究软件安全的目的。全体用户必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习编程开发技术或逆向分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识。所以您如果喜欢某程序,请购买注册正版软件,获得正版优质服务!不得将上述内容私自传播、销售或者用于商业用途!否则,一切后果请用户自负!

    QQ|Archiver|手机版|小黑屋|联系我们|宝峰科技 ( 滇公网安备 53050202000040号 | 滇ICP备09007156号-2 )

    Copyright © 2001-2023 Discuz! Team. GMT+8, 2025-5-8 01:51 , File On Powered by Discuz! X3.49

    快速回复 返回顶部 返回列表