窗体在_tWinMain中的WaitForSingleObject期间没有响应
VC++: Form not responding during WaitForSingleObject in _tWinMain
我搜索了论坛,还没能找到答案。我是vc++编程表单的新手。我得到的很简单。我想显示一个表单,然后等待来自该表单的事件,如下所示:
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
In_opt_ HINSTANCE hPrevInstance,
_In_ LPTSTR CmdLine,
_In_ int nCmdShow)
{
bool bExit = FALSE;
Main oForm;
g_UIThread.g_hUIEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
g_MainLineThread.g_MainLineEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
oForm.Show();
while (!bExit) {
WaitForSingleObject(&g_UIThread.g_hUIEvent, INFINITE);
(etc)
问题是,形式挂起,而在WaitForSingleObject
。
MsgWaitForMultipleObjects
等替代方案。有人能帮帮我吗?非常感谢。
如您所知,WaitForSingleObject正在等待单个事件。所以它不处理窗口消息
while (!bExit) {
if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) {
// dispatch the message
} else if (WaitForSingleObject(&g_UIThread.g_hUIEvent, 0) == WAIT_OBJECT_0) {
// handle the event
}
}
如果您希望对窗口消息使用WaitForMultipleObjects,则应该使用QS_ALLINPUT来检查已发出信号的事件。(注意你应该在PeekMessage之前调用下面的代码)
MsgWaitForMultipleObjects(0, NULL, FALSE, timeout, QS_ALLINPUT) == WAIT_OBJECT_0
相关文章:
- 当服务中的事件被触发时,如何将响应从服务发送回客户端?
- C++ 信号和插槽不工作:插槽不响应事件
- NodeJs 服务器充斥着 UDP 广播,不发送响应
- C++关于ENUM的问题。我得到的响应比枚举列表大
- 应用程序在打开的简历中捕获视频后没有响应
- 使用 cpprest (Casablanca) 返回 PDF 响应
- 为什么当通过 TCP 发送的消息速率增加时,请求-响应消息对的延迟会降低?
- 如何使用从处理程序调度的最终回调将响应异步返回给调用方on_read?
- 获取加密的正文响应WinHttp HTTPS
- QtConcurrent - 在发布到 UI 线程的数千个结果中保持 GUI 响应
- 同步读取多个 TCP 响应
- HTTP 响应格式不正确?
- 如何使用软化工具包从 OPC UA 服务器异步读取操作回调中的数据值响应中获取 NodeId 详细信息
- HTTP帖子,无需等待响应
- 问题导致程序停止响应,并且姓氏未正确打印
- AT 命令响应解析器
- 将静态 IP 分配给我的 ESP32 服务器后不再响应
- 用于C++的 TCP/IP 解析器和响应器
- 我会导致太多内存泄漏,以至于我的计算机无响应吗?
- 如何从wxWebView获取响应