能力值:
( LV2,RANK:10 )
|
-
-
2 楼
[QUOTE=;]...[/QUOTE]
另在找到一个一个程序,网站不记得了,代码贴出来吧
.386
.model flat, stdcall
option casemap:none
option proc:private
include windows.inc
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib
WM_CUSTOM_MESSAGE = WM_USER + 1001
.data
hInst dd 0
szClassName db "MsgOnlyWnd", 0
szMyTitle db "Message Only Window", 0
szMyMessage db "Custom Message Received!", 0
szMyClose db "WM_CLOSE Message Received!", 0
hwnd HWND 0
wc WNDCLASSEX <>
msg MSG <>
.code
console:
invoke GetModuleHandle, NULL
mov hInst, eax
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Register the class
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
mov wc.hInstance, eax ; hInstance
mov wc.lpszClassName, offset szClassName
mov wc.lpfnWndProc, offset WndProc
mov wc.style, CS_DBLCLKS
mov wc.cbSize, sizeof WNDCLASSEX
mov wc.hIcon, NULL
mov wc.hIconSm, NULL
mov wc.hCursor, NULL
mov wc.lpszMenuName, NULL
mov wc.cbClsExtra, 0
mov wc.cbWndExtra, 0
mov wc.hbrBackground, NULL
invoke RegisterClassEx, addr wc
.if !eax
jmp closing
.endif
invoke CreateWindowEx,\
NULL, \
addr szClassName,\
NULL,\
NULL,\ ; No need for window style
0, 0, 0, 0,\ ; Window dimension no longer needed as well
HWND_MESSAGE,\ ; Message only window
NULL,\
hInst,\
NULL
mov hwnd, eax
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
; Messageloop
; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
.while TRUE
invoke GetMessage, addr msg, hwnd, 0, 0
.break .if eax != TRUE ; Terminate the loop if quit message received
.endw
closing:
invoke ExitProcess, 0
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.if uMsg==WM_CUSTOM_MESSAGE
invoke MessageBox, hWnd, addr szMyMessage, addr szMyTitle, MB_OK or MB_ICONINFORMATION
.elseif uMsg==WM_CLOSE
invoke MessageBox, hWnd, addr szMyClose, addr szMyTitle, MB_OK or MB_ICONINFORMATION
invoke PostQuitMessage, 0
.endif
ret
WndProc endp
end console
发现运行后可以得到句柄,奇怪,。。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
FindWindowEx 只是查找,我要的建立
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
[QUOTE=;]...[/QUOTE]
终于知道了,为什么!!
在执行CreateWindowEx创建窗口过程中会引发对WinProc函数的多次调用。嘿嘿,这可不是可有可无的调用啊!在这里,我们要让缺省窗口过程DefWindowProc来完成一些默认的消息处理操作。你不必知道它做了什么事,只要把这一切消息都“扔”给它就行啦!只有让 DefWindowProc函数完成必要的消息处理,CreateWindowEx函数才能全程地完成窗口的创建(否则,窗口的创建必将失败。)。所以我们添加了调用DefWindowProc的代码。(DefWindowProc的返回值返回的是对消息处理的结果,我们再将它作为WinProc的返回值。)
文章出处
http://hi.baidu.com/zxccabbage/blog/item/f5dfefbf34c1950b19d81fac.html
|