鱼C论坛

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

win32汇编 窗口程序没反应

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

include windows.inc
include user32.inc
include kernel32.inc
include gdi32.inc

includelib gdi32.lib
includelib user32.lib
includelib kernel32.lib
;--------------------------------------------------------------------------------
.data
ClassName db 'WinClass',0
AppName db '第一个程序',0
.data?
hInstance HINSTANCE ?
;--------------------------------------------------------------------------------
.code
start:
call WinMain
invoke ExitProcess,NULL
;--------------------------------------------------------------------------------
WinMain proc
LOCAL wc:WNDCLASSEX ;窗口结构体
LOCAL msg:MSG ;消息结构体
LOCAL hwnd:HWND ;窗口句柄
;获取本程序 模块句柄
invoke GetModuleHandle,NULL
mov hInstance,eax
;填表
mov wc.cbSize,offset WNDCLASSEX
mov wc.style ,2 or 1
mov wc.lpfnWndProc,offset WinMainProc
mov wc.hInstance,offset hInstance
mov wc.hbrBackground,5
mov wc.lpszClassName,offset ClassName

;获取本程序图标句柄
invoke LoadIcon,NULL,NULL
mov wc.hIcon,eax
mov wc.hIconSm,eax
;获取本程序光标句柄
invoke LoadCursor,NULL,NULL
mov wc.hCursor,eax


;注册窗口
invoke RegisterClassEx,addr wc
;创建窗口
invoke CreateWindowEx,NULL,addr ClassName ,addr AppName,WS_OVERLAPPEDWINDOW,0,0,500,500,NULL,NULL,hInstance,NULL
mov hwnd,eax
;显示
invoke ShowWindow,hwnd,1
;刷新
invoke UpdateWindow,hwnd
;消息机制
.while 1
invoke GetMessage,addr msg,NULL,0,0

.if(!eax)
.break
.endif

invoke TranslateMessage,addr msg ;翻译
invoke DispatchMessage,addr msg ;发送
.endw
ret
WinMain endp

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

ret
WinMainProc endp

;-------------------------------------------------------------------------------- 


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-9-29 01:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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