我可以在开关(消息)语句的同时运行一段时间吗?(C )

Can I run a while() at the same time as a switch(messages) statement? (c++)

本文关键字:一段时间 运行 开关 消息 语句 我可以      更新时间:2023-10-16

我有一个简单的程序。看起来这样:

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*/
    }
}

在哪里可以将循环添加到我的代码中以使其永远运行?

在哪里可以将循环添加到我的代码中以使其永远运行?

在其他线程中。

对不起,但这是Guis生活的事实。WIN32 GUI编程模型是事件驱动的,在事件驱动的系统中,您无法在GUI线程上进行长期运行,因为那时GUI线程将永远没有机会处理任何消息。

因此,您必须在其他线程中移动无尽的跑步环。

但是,这很可能是一个X-y问题。(http://xyproblem.info/(