关于小甲鱼firstwindow代码中的疑惑。
_WinMain proclocal @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成员都是当作来处理呢?
WNDCLASS结构的cursor成员中,存储的是光标句柄而不是光标ID。
所以要用LoadCursor加载进内存,用句柄使用内存中的光标资源 哦,非常感谢您的回复。我去查下光标ID跟光标句柄的区别,谢谢你
页:
[1]