【发布时间】:2020-02-07 17:52:48
【问题描述】:
我用过
PostMessage(NULL,WM_DUCKWND,0,0);
在哪里
#define WM_DUCKWND (WM_USER +4)
将用户定义的消息发送到当前线程中的所有窗口。
详情
这是直接在主函数中 (DUCKPROC_CLASS_MSG_NAME 和 DUCKPROC_WINDOW_MSG_NAME 都是用户自定义的宏)
//create message-only window
WNDCLASS wndc={};
wndc.lpfnWndProc = MsgWindowProc;
wndc.hInstance = hInstance;
wndc.lpszClassName = DUCKPROC_CLASS_MSG_NAME;
RegisterClass(&wndc);
auto hw=CreateWindowEx(NULL, DUCKPROC_CLASS_MSG_NAME, DUCKPROC_WINDOW_MSG_NAME, NULL, 0, 0, 0, 0, HWND_MESSAGE, NULL, hInstance, NULL);
//post
PostMessage(NULL,WM_DUCKWND,0,0);
//message loop
MSG msg = {};
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
并像这样使用 WindProc
LRESULT CALLBACK MsgWindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch (uMsg)
{
case WM_DUCKWND:
[BREAKPOINT][BREAKPOINT][BREAKPOINT][BREAKPOINT]
return 0;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
但是,断点并未按预期触发。
怎么回事?
【问题讨论】:
标签: c++ c windows winapi window