如何隐藏在线程中创建的对话框的任务栏上的选项卡

时间:2012-09-25 14:31:13

标签: windows visual-c++ mfc

我在VC ++类中创建了线程。使用常规方式,即How do you use CreateThread for functions which are class members?

现在我在这个帖子中向用户显示警告消息框。使用对话框(不使用AfxMessageBox)

对话框样式是POPUP。但它在任务栏上显示此警报的另一个新选项卡以及我的主对话框选项卡

如何从任务栏中显示删除此标签(警报标签)。

1 个答案:

答案 0 :(得分:-1)

好吧,在另一个帖子中显示一个窗口是一个很大的禁忌! 始终在UI线程中显示UI。如果你的工作线程需要显示一些UI,它需要通知UI线程(以安全的方式)让它显示对话框。

此处删除WS_EX_APPWINDOW样式解决方案。如果你做得不对,你很可能会遇到奇怪的死锁。

让你的帖子发布消息到你的UI窗口,然后在那里处理它!

#define UWM_SHOW_UI (WM_APP + 1)
//    
// In your thread procedure:
PostMessage(pThreadData->m_hWnd, UWM_SHOW_UI);
WaitForMultipleObjects(...); // Wait for both exit event (set in `OnDestroy`) and continue event.
// Handle signal... Exit or continue?
//
// In your main window message handler:
void CMyWindow::OnShowUI(WPARAM wParam, LPARAM lParam)
{
    CMyDlg dlg(this);
    dlg.DoModal();
    //
    SetEvent(m_hEventContinue); // Continue thread!
}