MFC 运行后界面的按钮不能点击 假死 ,但程序正常运行

2025-04-27 15:16:59
推荐回答(3个)
回答1:

界面假死,那么你的界面能不能移动?如果也不能移动,说明你主线程(UI线程)一直在被占用,也就是说你主线做了占用大量CPU时间的事情, (可能是你的UI线程也进行了数据交互) 你可以再开一个新线程把主线程(UI线程)做的事情让该新线程去做,UI不要做占用大量CUP时间的事情。

回答2:

起线程后可加这一段。
while (1)
{
DWORD dwRet = WaitForSingleObject(hEnum, THREAD_WAIT_TIME);
if (dwRet != WAIT_FAILED && dwRet != WAIT_TIMEOUT)
{
break;
}
MSG msg;
if (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
THREAD_WAIT_TIME是很小一段时间,宏定义为5就行

回答3:

有两点要确定:

1、你的界面按钮,是不是一件置灰了
2、你的主线程有没有和工作线程建立通讯机制,比如信号对象等