私は基本的なウィンドウ プログラムを持っています。問題は、メッセージ ループが既に開始されてから新しいスレッドでウィンドウを作成しようとすると、ウィンドウが 1 秒間表示されて消えてしまうことです。誰もこれの理由を知りませんか?別のスレッドでウィンドウを作成できますか?
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
::hInstance =hInstance; // initialize global variables
::nCmdShow =nCmdShow;
// start thread
HANDLE threadHandle = startThread(StartUp);
MSG msg;
while(GetMessage(&msg, 0, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
::CloseHandle(threadHandle);
return static_cast<int>(msg.wParam);
}
DWORD WINAPI StartUp(LPVOID lpParam) // new thread runs here
{
//code to create a new window...
}
私がこれまでに理解したのGetMessage(&msg, 0, 0, 0)
は、現在のスレッドにウィンドウがない場合、 false を返すということです...これをラウンドする方法はありますか?