gpt4 book ai didi

c++ - MFC DoModal 对话框

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:28 28 4
gpt4 key购买 nike

好吧,我承认我对 Windows API 甚至 MFC 都一无所知。

当出现问题(文件名字符串中的非法字符)时,我会弹出一个错误窗口,我希望错误框是模态的。

我一直想不通为什么它在访问 doModal 时会崩溃。

这是我认为可以解决此问题的代码。此代码位于主窗口中按钮的事件处理程序中。

CDialog *BadFileD = new CDialog();
BadFileD->Create(IDD_STATUS, this);
BadFileD->DoModal();

我是不是有点智障了?

最佳答案

MFC对话框分为模态对话框和非模态对话框两种模式。

(1)模态对话框的使用:

CDialog dlg;
dlg.DoModal();

(2) 无模式对话框的使用:

CMyDialog *pDlg = new CMyDialog();
pDlg->Create(ID_DLG, this);
pDlg->ShowWindows(SW_SHOW);

如您所见,我们需要一个新指针,但不要删除它。因此,您需要在我们的 CMyDialog 类中执行以下操作:

  1. OnOk()OnCancel() 中添加DestroyWindow() 方法。
  2. PostNcDestroy() 方法中添加“delete this;”。

如果不这样做,您的代码可能会导致内存泄漏。 BadFileD 是类成员,您在析构函数中将其删除。我建议使用无模式对话框。

关于c++ - MFC DoModal 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6528694/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com