我可以在 win32 应用程序的主线程中手动调用 window 消息的处理吗?
Can I manually invoke processing of window messages in the main thread in a win32 application?
我有一个 Win32 MFC 应用程序,它在循环中执行一些处理。当前 window 在循环 运行 时停止重绘。我能否以某种方式为循环内的消息队列分配时间,或者我是否必须将处理移动到不同的线程以释放主线程以进行消息处理?
您可以使用以下代码片段来处理消息:
MSG msg;
if (::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if (::GetMessage(&msg, NULL, 0, 0))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
但是最好为长时间的操作设置单独的线程,以防止阻塞主应用程序线程。
我有一个 Win32 MFC 应用程序,它在循环中执行一些处理。当前 window 在循环 运行 时停止重绘。我能否以某种方式为循环内的消息队列分配时间,或者我是否必须将处理移动到不同的线程以释放主线程以进行消息处理?
您可以使用以下代码片段来处理消息:
MSG msg;
if (::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
if (::GetMessage(&msg, NULL, 0, 0))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
但是最好为长时间的操作设置单独的线程,以防止阻塞主应用程序线程。