鱼C论坛

 找回密码
 立即注册
查看: 1847|回复: 4

win32 课程中,源代码的不理解。请教

[复制链接]
发表于 2014-9-29 21:57:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

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

x
                .data?
hInstance        dd                ?
hWinMain        dd                ?

_WinMain        proc
                local        @stWndClass:WNDCLASSEX
                local        @stMsg:MSG

1                invoke        GetModuleHandle,NULL
2                mov         hInstance,eax
3                invoke        RtlZeroMemory,addr @stWndClass,sizeof @stWndClass
4
5              invoke     LoadCursor,0,IDC_ARROW
6                mov        @stWndClass.hCursor,eax
7                push        hInstance
8                pop        @stWndClass.hInstance
9                mov        @stWndClass.cbSize,sizeof WNDCLASSEX
10                mov        @stWndClass.style,CS_HREDRAW or CS_VREDRAW
11                mov        @stWndClass.lpfnWndProc,offset _ProcWinMain
12                mov        @stWndClass.hbrBackground,COLOR_WINDOW + 1
13                mov        @stWndClass.lpszClassName,offset szClassName
14                invoke        RegisterClassEx,addr @stWndClass


第一个问题第二行中的mov         hInstance,eax,这里面的hInstance 是不是全局变量中的那个?
第二个问题第三行中的RtlZeroMemory,后面的两个参数。为什么指的是 lpCursorName和 hInstance难道不应该是所有的所有的成员吗? (lpCursorName和 hInstance)是通过IDA反汇编看出来的
第三个问题第七行中的PUSH  hInstance 跟第八行pop        @stWndClass.hInstance 中的hInsthance 中的是同一个吗?是不是都是全局变量的那个?
请解答,谢谢,自学不容易,老师讲的又过于快

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

使用道具 举报

 楼主| 发表于 2014-9-30 09:56:30 | 显示全部楼层
自己给自己顶一下,来个大牛帮助下啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-1 06:04:06 | 显示全部楼层
第一个问题 =  是的,将返回值保存到全局变量
第二个问题 =  RtlZeroMemory其实就是将一段内存置0的函数,参数1为开始地址,2为长度。一般的结构在内存中也就是一段连续的内存,sizeof取了这个结构的长度(这个长度包含了你说的所有成员),addr取了这个结构的开始地址
第三个问题 = PUSH  hInstance就是你第1个问题那个,@stWndClass.hInstance 中的hInsthance是这个结构@stWndClass的一个成员
push  hInstance                      ;压栈全局变量hInstance
pop   @stWndClass.hInstance   ; 出栈 (就是将上面那个全局变量赋值给这个结构的成员hInstance)

你可以这样理解
mov   eax,hInstance
mov   @stWndClass.hInstance,eax

我觉得还是看书比较好,可以前后翻看理解代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-1 08:40:43 | 显示全部楼层
嗯,非常感谢您的回复。我看了后面的小甲鱼的视频,就明白了。还是谢谢你。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2014-11-1 03:47:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 14:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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