[英]How to show Cdialog with std::async
我有一個名為 A 的派生類是從CDialog
繼承的,我創建了一個名為 a 的對象,並希望利用成員函數 domodal 來顯示對話框。 盡管如此,此對話框無法顯示並且父窗口被阻止。
A a(this);
auto DlgResult = std::async(std::launch::async, &A::DoModal,&a);
DlgResult.wait();
if (DlgResult.get() == IDOK)
{
std::wstring ss = a.get_text_fromdlg();
}
誰能幫幫我,謝謝!
如果我是你,我不會與 Async 和 DoModal 搏斗,因為 DoModal() 的目的是等待對話框的響應,讓應用程序知道如何前進。
下面,我添加了一個更簡單的選項。 只需創建指向 Dialog 類的成員變量指針,然后使用 Show Window。 此外,在這種情況下,您可以考慮將對話框置於最上方,以免失去焦點。
MFCClass1* m_pDlg = new MFCClass1();
void CMFCApplication1Dlg::OnBnClickedButton1()
{
m_pDlg->Create(IDD_DIALOG1);
m_pDlg->ShowWindow(SW_SHOWNORMAL);
SetWindowPos(&m_pDlg->wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.