aa05001 发表于 2014-10-1 14:05:16

关于小甲鱼firstwindow代码中的疑惑。

_WinMain proc
local @stWndClass:WNDCLASSEX
local @stMsg:MSG
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke RtlZeroMemory,addr @stWndClass,sizeof @stWndClass
;********************************************************************
; 注册窗口类
;********************************************************************
invoke LoadCursor,0,IDC_SIZEWE
mov @stWndClass.hCursor,eax
push hInstance
pop @stWndClass.hInstance
mov @stWndClass.cbSize,sizeof @stWndClass
mov @stWndClass.style,CS_HREDRAW or CS_VREDRAW or CS_DBLCLKS
mov @stWndClass.lpfnWndProc,offset _ProcWinMain
mov @stWndClass.hbrBackground,COLOR_WINDOW + 1
mov @stWndClass.lpszClassName,offset szClassName
invoke RegisterClassEx,addr @stWndClass

为什么注册窗口之前先要调用LoadCursor这个函数。既然wndclass结构中包含了,Cursor 这个成员,那为什么不能直接
mov @stWndClass.hCursor,IDC_SIZEWE 呢?
我去尝试了下,这样以后程序可以生成,但是不会显示这个窗口,我看了这个函数,是把图标插入到可执行的文件中,是不是注册窗口中所有的wndclass成员都是当作来处理呢?

漩涡鸣人 发表于 2014-10-1 22:18:00

WNDCLASS结构的cursor成员中,存储的是光标句柄而不是光标ID。
所以要用LoadCursor加载进内存,用句柄使用内存中的光标资源

aa05001 发表于 2014-10-2 17:49:06

哦,非常感谢您的回复。我去查下光标ID跟光标句柄的区别,谢谢你

大个的糖果 发表于 2014-11-1 07:47:13

页: [1]
查看完整版本: 关于小甲鱼firstwindow代码中的疑惑。