鱼C论坛

 找回密码
 立即注册
查看: 1731|回复: 12

win32汇编 窗口程序没反应

[复制链接]
发表于 2013-9-23 10:17:57 | 显示全部楼层 |阅读模式
5鱼币
  1. .386
  2. .model flat,stdcall
  3. option casemap:none

  4. include windows.inc
  5. include user32.inc
  6. include kernel32.inc
  7. include gdi32.inc

  8. includelib gdi32.lib
  9. includelib user32.lib
  10. includelib kernel32.lib
  11. ;--------------------------------------------------------------------------------
  12. .data
  13. ClassName db 'WinClass',0
  14. AppName db '第一个程序',0
  15. .data?
  16. hInstance HINSTANCE ?
  17. ;--------------------------------------------------------------------------------
  18. .code
  19. start:
  20. call WinMain
  21. invoke ExitProcess,NULL
  22. ;--------------------------------------------------------------------------------
  23. WinMain proc
  24. LOCAL wc:WNDCLASSEX ;窗口结构体
  25. LOCAL msg:MSG ;消息结构体
  26. LOCAL hwnd:HWND ;窗口句柄
  27. ;获取本程序 模块句柄
  28. invoke GetModuleHandle,NULL
  29. mov hInstance,eax
  30. ;填表
  31. mov wc.cbSize,offset WNDCLASSEX
  32. mov wc.style ,2 or 1
  33. mov wc.lpfnWndProc,offset WinMainProc
  34. mov wc.hInstance,offset hInstance
  35. mov wc.hbrBackground,5
  36. mov wc.lpszClassName,offset ClassName

  37. ;获取本程序图标句柄
  38. invoke LoadIcon,NULL,NULL
  39. mov wc.hIcon,eax
  40. mov wc.hIconSm,eax
  41. ;获取本程序光标句柄
  42. invoke LoadCursor,NULL,NULL
  43. mov wc.hCursor,eax


  44. ;注册窗口
  45. invoke RegisterClassEx,addr wc
  46. ;创建窗口
  47. invoke CreateWindowEx,NULL,addr ClassName ,addr AppName,WS_OVERLAPPEDWINDOW,0,0,500,500,NULL,NULL,hInstance,NULL
  48. mov hwnd,eax
  49. ;显示
  50. invoke ShowWindow,hwnd,1
  51. ;刷新
  52. invoke UpdateWindow,hwnd
  53. ;消息机制
  54. .while 1
  55. invoke GetMessage,addr msg,NULL,0,0

  56. .if(!eax)
  57. .break
  58. .endif

  59. invoke TranslateMessage,addr msg ;翻译
  60. invoke DispatchMessage,addr msg ;发送
  61. .endw
  62. ret
  63. WinMain endp

  64. ;--------------------------------------------------------------------------------
  65. WinMainProc Proc hwnd:HWND,msg:UINT,wparam:WPARAM,lparam:LPARAM
  66. .if msg==WM_DESTROY
  67. invoke PostQuitMessage,NULL ;终止进程
  68. .elseif msg==WM_CREATE
  69. .else
  70. ;这个函数是默认的窗口处理函数,我们可以把不关心的消息都丢给它来处理
  71. invoke DefWindowProc,hwnd,msg,wparam,lparam
  72. .endif

  73. ret
  74. WinMainProc endp

  75. ;--------------------------------------------------------------------------------


  76. end start
复制代码

编译器没有报错
点击运行 没有显示窗口

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-23 11:07:51 | 显示全部楼层
.data?
hInstance HINSTANCE ?  我想知道 汇编里面有这个HINSTANCE宏吗
CreateWindowEx,NULL,  创建函数第一个参数可以不写吗
WinMainProc Proc hwnd:   Win子程序的参数还要定义类型吗 而且不用保存ebx esi edi 这几个寄存器?
算了你的跟正常程序相差太多了 自己慢慢研究吧  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-25 10:20:10 | 显示全部楼层
新人,来看学习的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-25 10:35:59 | 显示全部楼层
新人,来看学习的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-25 20:41:50 | 显示全部楼层
看了一下,好像还不错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-26 09:23:27 | 显示全部楼层
路过,进来学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-26 21:28:45 | 显示全部楼层
:lol:WIN32汇编写起来太蛋疼了,感觉还不如用C
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-27 00:28:53 | 显示全部楼层
希望以后看到更多你的好分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-27 08:23:02 | 显示全部楼层
新人,多多学习一下的{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-29 03:39:46 | 显示全部楼层
机器中枪了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-30 21:26:13 | 显示全部楼层
可能是注册窗口出问题了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-1 18:50:00 | 显示全部楼层
来学习一下。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-3 00:24:29 | 显示全部楼层
懂了 呵呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-13 00:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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