使用Win32 API,是否可以在一个线程中创建一个窗口或对话框,然后从另一个线程收集它的事件?
HWND是否与线程绑定?
尝试下面的人为设法示例,我从未见过GetMessage().
HWND g_hWnd;
DWORD WINAPI myThreadProc(LPVOID lpParam)
{
while(GetMessage(&msg, hWnd, 0, 0) > 0)
{
...
}
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
hWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_MYDIALOG), 0, myDlgProc);
CreateThread(NULL, 0 myThreadProc, NULL, 0, NULL);
...
}
但在这里,我做到了.
HWND g_hWnd;
HINSTANCE g_hInstance;
DWORD WINAPI myThreadProc(LPVOID lpParam)
{
hWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_MYDIALOG), 0, myDlgProc);
while(GetMessage(&msg, hWnd, 0, 0) > 0)
{
...
}
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) … 我无法让我的应用响应用户操作.因此,我想在多个线程之间拆分消息处理.
我可以简单地创建多个线程,从所有线程中读取相同的消息队列,并让哪个线程能够处理每个消息?
如果是这样,怎么办呢?
如果没有,你能提出另一种解决这个问题的方法吗?