0
我想已經創建窗口了好幾天,但它總是告訴我:「無法創建窗口」 當隨機創建窗口,CPU變爲50%。你能幫我,告訴是什麼原因導致了這個錯誤? 這裏是源代碼:我無法創建窗口
#include<Windows.h>
int AppRunning=1;
void TellError(LPCWSTR error,HWND hWnd=NULL);
LRESULT CALLBACK WindowProcedure(HWND hWnd,UINT msg,WPARAM wparam,LPARAM lparam)
{
switch(msg){
case WM_KEYDOWN:
AppRunning=0;
break;
case WM_CLOSE:
DestroyWindow(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hWnd,msg,wparam,lparam);
}
HWND NewWindow(LPCTSTR title,int xpos, int ypos, int width, int height)
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WindowProcedure;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = GetModuleHandle(NULL);
wcex.hIcon = NULL;
wcex.hCursor = NULL;
wcex.hbrBackground = GetSysColorBrush(COLOR_BTNFACE);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = L"Svet-ver1.0";
wcex.hIconSm = LoadIcon(NULL,IDI_APPLICATION);
if(!RegisterClassEx(&wcex)){
TellError(L"Cannot register window!");
return NULL;
}
return CreateWindowEx(WS_EX_CONTROLPARENT, L"Svet3D-ver1.0", title, WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_VISIBLE, xpos, ypos, width, height, NULL, NULL, GetModuleHandle(NULL), NULL);
}
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdLine,int nCmdShow)
{
MSG msg;
HWND hWnd = NewWindow(L"Svet",100,100,500,500);
if(!hWnd){
TellError(L"Cannot create window!");
return 0;
}
while(AppRunning){
if(PeekMessage(&msg,hWnd,0,0,PM_REMOVE)){
if(!IsDialogMessage(hWnd,&msg)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
DestroyWindow(hWnd);
return 0;
}
void TellError(LPCWSTR error,HWND hWnd){
MessageBox(hWnd,error,NULL,MB_OK);
}
而你有雙CPU機器,對吧? –
的PeekMessage不會等待消息,並立即退出,你再次調用它,然後你在一個無限循環結束的兩個你的CPU /核中的一個耗時100%。 –
謝謝:)我用的GetMessage,現在,它使用0-5%的CPU – jakubinf