c++ - 我可以同时运行 while() 和 switch(messages) 语句吗? (c++)

标签 c++ windows while-loop

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

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 语句运行。循环看起来像这样:

while(1)
{
    if(i == true)
    {
        /*DO STUFF*/
    }
}

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

最佳答案

Where can I add my loop into my code to make it run forever?

在不同的线程中。

抱歉,这是 GUI 的常态。 Win32 GUI 编程模型是事件驱动的,在事件驱动的系统中,您不能在 GUI 线程上执行长时间运行的操作,因为这样 GUI 线程就永远没有机会处理任何消息。

因此,您必须在不同的线程中移动无限(甚至只是长时间)运行的循环。

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

关于c++ - 我可以同时运行 while() 和 switch(messages) 语句吗? (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43699128/

相关文章:

c++ - auto main()->int 是什么意思?

c++ - 是什么导致 MS Visual Studio 无法识别构建错误?

windows - 使用 azure CLI 2.0 从自己创建的自定义镜像创建 Windows 虚拟机时出现问题

javascript - 我的reverse()函数有什么问题吗?

Python:更改 'for' 循环的条件

c++ - 在库的一个 header 中前向声明所有类是否有任何(非明显的)缺点?

c++ - 获取鼠标按钮单击

Windows 7 触摸屏 - 禁用多点触控手势不起作用

windows - 在 Docker for Windows 中运行正常的 Win32 应用程序

python-3.x - python while循环范围函数