gpt4 book ai didi

c++ - MFC - 如何从菜单主机调用对话框

转载 作者:行者123 更新时间:2023-11-30 03:03:07 27 4
gpt4 key购买 nike

我在 Visual Studio 2010 中创建了一个 MFC SDI 应用程序,想从菜单主机中的自定义菜单条目打开模式对话框。

创建对话框资源后,我向其中添加了一个名为 Dialog1 的类。它是从 CDialogEx 扩展而来的。之后,我右键单击大型机/菜单栏中的自定义菜单条目,然后选择“添加事件处理程序”。在下面的窗口中,我选择将 COMMAND 和 UPDATE_COMMAND_UI 的函数添加到我的类 Dialog 中。添加调用对话框的代码后,我的源文件(“Dialog1.cpp”)如下所示:

#include "stdafx.h"
#include "MFCtest.h"
#include "Dialog1.h"
#include "afxdialogex.h"

IMPLEMENT_DYNAMIC(Dialog1, CDialogEx)

Dialog1::Dialog1(CWnd* pParent /*=NULL*/)
: CDialogEx(Dialog1::IDD, pParent)
{

}

Dialog1::~Dialog1()
{
}

void Dialog1::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}


BEGIN_MESSAGE_MAP(Dialog1, CDialogEx)
ON_COMMAND(ID_DIALOG_D1, &Dialog1::OnDialogD1)
ON_UPDATE_COMMAND_UI(ID_DIALOG_D1, &Dialog1::OnUpdateDialogD1)
END_MESSAGE_MAP()

void Dialog1::OnDialogD1()
{
Dialog1 dlg;
dlg.DoModal();
}


void Dialog1::OnUpdateDialogD1(CCmdUI *pCmdUI)
{
}

我知道我可能犯了一个愚蠢的错误。感谢您的帮助。

最佳答案

您将处理程序添加到了错误的类中。您需要将它们添加到 CMainframe 类,而不是对话框类。

虽然您可能希望捕获 DoModal 的返回值以了解他们是否取消了对话框,但您打开对话框的代码看起来不错。

关于c++ - MFC - 如何从菜单主机调用对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9625249/

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