我有一个简单的程序。它看起来像这样:
bool i = fasle;
int WINAPI WinMain(HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nCmdShow)
{
/*COMMENT TO REPRESENT WNDCLASSEX STUFF*/
return messages.wParam;
}
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_CREATE:
CreateWindow(
TEXT("button"),TEXT("Activate"),
WS_VISIBLE | WS_CHILD,
10,
100,
100,
50,
hwnd,
(HMENU) 1,
NULL, NULL
);
CreateWindow(
TEXT("button"),TEXT("Deactivate"),
WS_VISIBLE | WS_CHILD,
10,
250,
100,
50,
hwnd,
(HMENU) 2,
NULL, NULL
);
break;
case WM_COMMAND:
if(LOWORD(wParam) == 1){
i = true;
}
if(LOWORD(wParam) == 2){
i = false;
}
break;
case WM_DESTROY:
PostQuitMessage (0);
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
无论怎样,我想要一段时间的声明。循环看起来像这样:
while(1)
{
if(i == true)
{
/*DO STUFF*/
}
}
在哪里可以将循环添加到我的代码中以使其永久运行?
答案 0 :(得分:2)
在哪里可以将循环添加到我的代码中以使其永久运行?
在另一个主题中。
抱歉,这是GUI的一个事实。 Win32 GUI编程模型是事件驱动的,在事件驱动的系统中,您无法在GUI线程上执行长时间运行,因为GUI线程永远不会有机会处理任何消息。
所以,你必须在不同的线程中移动你的无限(或甚至只是很长)的循环。
然而,这很可能是X-Y问题。 (http://xyproblem.info/)