簡體   English   中英

如何使用 std::async 顯示 Cdialog

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM