c++ - 如何使用 std::async 显示 Cdialog

标签 c++ mfc cdialog stdasync

我有一个名为 A 的派生类继承自 CDialog,我创建了一个名为 a 的 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);
}

enter image description here

关于c++ - 如何使用 std::async 显示 Cdialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59366384/

相关文章:

c++ - 编译器确定给出或省略参数

c++ - 使用C++和MFC进行动态图绘制

window - 如何从 CDialog 派生类获取窗口句柄?

c++ - CUDA __global__ 函数中的 printf

c++ 为 psudo 随机数生成器生成一个好的随机种子

c++ - visual studio 2010 c++ 加载时间

c++ - 有什么方法可以知道目录是否包含子目录?

c++ - 在 OnInitDialog() 中断言失败

c++ - 将 CDialog 分成两个不同背景的区域(里面的目标图片)