gpt4 book ai didi

c++ - MFC 应用程序 DialogBased 使用 propertyPage,CDialog 的 DoModal() 不打开任何对话框

转载 作者:太空宇宙 更新时间:2023-11-04 11:45:43 25 4
gpt4 key购买 nike

在 VS2013 中,我创建了一个基于对话的 MFC 应用程序。我修改了项目以便在应用程序开始时使用 PropertyPage 和 Propertysheet,因此,它不会启动 CDialog,而是启动我的属性页。

之后,我创建了一个对话框,类关联(from::CdialogEx)。我想在单击按钮后打开此对话框。

在点击按钮后,我会:

CMyDialog myDialog;
myDialog.DoModal();

我没有任何错误消息,但是,我没有在屏幕上显示我的对话框。

也许是因为这个对话框没有 child 没有?

有人可以帮帮我吗?

非常感谢,

最好的问候,

尼克修斯

编辑:

这是我的入口点:

#include "stdafx.h"
#include "KenoApp.h"
#include "KenoDlg.h"

#include "GenerationDlg.h"
#include "KenoSheet.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CKenoApp

BEGIN_MESSAGE_MAP(CKenoApp, CWinApp)
ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()


// construction CKenoApp

CKenoApp::CKenoApp()
{

}


// Seul et unique objet CKenoApp

CKenoApp theApp;


// initialisation de CKenoApp

BOOL CKenoApp::InitInstance()
{
AfxEnableControlContainer();

// Standard initialization

#ifdef _AFXDLL
// Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif

CKenoSheet KenoSheet;
KenoSheet.SetTitle(L"Keno Helper v1.1");

CGenerationDlg Generation;
CKenoDlg KenoDlg;

KenoSheet.AddPage(&KenoDlg);
KenoSheet.AddPage(&Generation);

//m_pMainWnd = &KenoSheet;

int nResponse = KenoSheet.DoModal();

// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}

然后,在我的属性页面上:

CAboutDlg myDialog;
theApp.m_pMainWnd = &myDialog;
myDialog.DoModal();

我现在的问题是,DoModal() 关闭了我的应用程序。

最佳答案

快速修复:在应用程序的 InitInstance() 中:

CMyPropSheet pps(_T("My Property Sheet"), NULL, 0);
//m_pMainWnd = &pps; // *** remark away this line if you have it
int nResponse = pps.DoModal();
// do response ...

CTestDlg dlg;
m_pMainWnd = &dlg; // this line is a must have
nResponse = dlg.DoModal();
// do response ...

以上代码假设 PropertySheet 和 Dialog 将在应用程序的 InitInstance() 中依次启动。从你那里得到更多信息后,它似乎不是你想要的方式,所以上面的代码不适用于你的问题。在使用我的建议之前,请将您的代码还原为原始代码。

关于c++ - MFC 应用程序 DialogBased 使用 propertyPage,CDialog 的 DoModal() 不打开任何对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19937959/

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