• 全部
...

求把C++代码转成masm32代码

pzhan 2008-07-02 11:10:41
把下面的代码转换成masm32汇编源码.谢谢!

  1. // testOfWin32Dialog.cpp
  2. //
  3. #define _WIN32_IE 0X0600

  4. #include <stdio.h>
  5. #include <windows.h>
  6. #include <commctrl.h>
  7. #include "Resource.h"


  8. #define MAX_LOADSTRING 100
  9. #define MAX_LISTITEM 5
  10. #define MAX_LISTSUBITEM 5
  11. #define MAX_TABNUM 2

  12. static HWND hDlg[2] = {NULL, NULL};
  13. MSG msg;
  14. HINSTANCE hInst;
  15. TCHAR szTitle[MAX_LOADSTRING];
  16. TCHAR szWindowClass[MAX_LOADSTRING];

  17. static TCHAR * tabString[MAX_TABNUM] = {"Index", "TBD"};
  18. static HWND hListbox;

  19. char helpindex[20][20] =
  20. {"heading", "tracking", "port configuration", "position data", "flash",
  21. "cell", "strike", "display mode", "range", "bearing",
  22. "region", "system status", "volume control", "nmi", "latitude",
  23. "longitude", "ground speed", "baud rate", "level", "tone"};

  24. HBRUSH g_hbrBackground = NULL;

  25. void InitTabControl(HWND, LPARAM);
  26. void GetItemText(HWND, const int &, TCHAR *);
  27. BOOL CALLBACK DlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
  28. HWND g_hMainDialog;

  29. int APIENTRY WinMain(HINSTANCE hInstance,
  30. HINSTANCE hPrevInstance,
  31. LPTSTR lpCmdLine,
  32. int nCmdShow)
  33. {
  34. INITCOMMONCONTROLSEX icc = {sizeof(icc), ICC_TAB_CLASSES};
  35. InitCommonControlsEx(&icc);
  36. return DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, DlgProc);
  37. }



  38. BOOL CALLBACK DlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  39. {

  40. switch(message)
  41. {
  42. case WM_INITDIALOG:

  43. InitTabControl(hwnd, lParam);

  44. break;

  45. case WM_NOTIFY:
  46. {
  47. NMHDR *hdr;
  48. hdr = (LPNMHDR)lParam;
  49. if (hdr->code == TCN_SELCHANGING || hdr->code == TCN_SELCHANGE)
  50. {
  51. int index;
  52. index = TabCtrl_GetCurSel(hdr->hwndFrom);
  53. if (index >= 0 && index <= 4) ShowWindow(hDlg[index], (hdr->code == TCN_SELCHANGE) ? SW_SHOW : SW_HIDE);
  54. }
  55. break;
  56. }

  57. case WM_COMMAND:
  58. if(LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
  59. {
  60. EndDialog(hwnd, 0);
  61. return TRUE;
  62. }
  63. break;

  64. case WM_CLOSE:
  65. EndDialog(hwnd, 0);
  66. break;

  67. case WM_DESTROY:
  68. DeleteObject(g_hbrBackground);
  69. break;
  70. default:
  71. return FALSE;
  72. }

  73. return TRUE;
  74. }

  75. BOOL WINAPI DlgProc1(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  76. {
  77. int i;

  78. hListbox = GetDlgItem(hwnd, IDC_LISTBOX);
  79. switch(msg)
  80. {
  81. case WM_INITDIALOG:
  82. for (i =0;i< 20;i++)
  83. {
  84. SendMessage(GetDlgItem(hwnd,IDC_LISTBOX), LB_ADDSTRING, 0, (LPARAM) helpindex[i]);
  85. }
  86. break;

  87. case WM_NOTIFY:
  88. {
  89. switch(wParam)
  90. {
  91. case IDC_LISTBOX:
  92. LPNMLISTVIEW pnm = (LPNMLISTVIEW)lParam;

  93. if(((LPNMHDR)lParam)->code == NM_DBLCLK)
  94. {
  95. int selected = SendMessage(hListbox, LVM_GETITEM,-1,LVNI_FOCUSED);
  96. char String[10] = "";
  97. if (selected == -1)
  98. {
  99. MessageBox(hwnd, "hey, error", "Error", MB_OK|MB_ICONINFORMATION);
  100. break;
  101. }
  102. else
  103. {
  104. sprintf(String, "%d",selected);
  105. MessageBox(hwnd, String, "Error", MB_OK|MB_ICONINFORMATION);
  106. }
  107. }
  108. break;
  109. } // end of 'switch'
  110. }
  111. break;

  112. case WM_COMMAND:
  113. break;

  114. } // end of 'switch(msg)'


  115. return (msg == WM_INITDIALOG);
  116. }

  117. BOOL WINAPI DlgProc2(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  118. {
  119. switch(msg)
  120. {
  121. case WM_COMMAND:

  122. break;
  123. } // end of 'switch(msg)'


  124. return (msg == WM_INITDIALOG);
  125. }

  126. void InitTabControl(HWND hwnd, LPARAM lParam)
  127. {
  128. TCITEM tabitem;
  129. HWND hTab;

  130. hTab = GetDlgItem(hwnd, IDC_LISTTAB);
  131. memset(&tabitem, 0, sizeof(tabitem));

  132. tabitem.mask = TCIF_TEXT;
  133. tabitem.cchTextMax = MAX_TABNUM;

  134. tabitem.pszText = "Index";
  135. SendMessage(hTab, TCM_INSERTITEM, 0, (LPARAM)&tabitem);

  136. tabitem.pszText = "TBD";
  137. SendMessage(hTab, TCM_INSERTITEM, 1, (LPARAM)&tabitem);

  138. // Get the position that the dialogs should be displayed
  139. RECT rt;
  140. GetWindowRect(GetDlgItem(hwnd, IDC_STATIC1), &rt);
  141. rt.bottom -= rt.top;
  142. rt.right -= rt.left;
  143. ScreenToClient(hTab, (LPPOINT)&rt);

  144. // Create the dialogs modelessly and move them appropriately
  145. hDlg[0] = CreateDialog((HINSTANCE)lParam, (LPSTR)IDD_PAGE1, hTab, (DLGPROC)DlgProc1);
  146. hDlg[1] = CreateDialog((HINSTANCE)lParam, (LPSTR)IDD_PAGE2, hTab, (DLGPROC)DlgProc2);

  147. MoveWindow(hDlg[0], rt.left, rt.top, rt.right, rt.bottom, 0);
  148. MoveWindow(hDlg[1], rt.left, rt.top, rt.right, rt.bottom, 0);

  149. // Show the default dialog
  150. ShowWindow(hDlg[0], SW_SHOW);
  151. }







...全文
给本帖投票
341 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pzhan 2008-07-28
  • 打赏
  • 举报
回复
只是想改成win32匯編碼這麼復雜嗎?
怎麼學windows平台下匯編的人這麼少啊!

我只是有幾個地方 譯不過來, 不知道 怎麼表達.

看樣子. 要去看基礎自己 譯了.
謝謝了.. 平均散分吧.
忘諒解!!
  • 打赏
  • 举报
回复
用IDA反编译一下,再修改修改就直接能编译。
独孤过儿 2008-07-03
  • 打赏
  • 举报
回复
反编译出来的会有一些额外的头的,要能找到入口才行
taodm 2008-07-03
  • 打赏
  • 举报
回复
编译成exe,下载个W32Dasm软件反编译一下即可 。
dbger 2008-07-02
  • 打赏
  • 举报
回复
看罗云彬的《WINDOWS环境下32位汇编语言程序设计(第2版)》

65,179

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部