MFC-如何从菜单主机调用对话框
MFC - How to call a dialog from the menu mainframe
我在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
中捕获返回值,以了解他们是否取消了对话框,但用于打开对话框的代码看起来很好。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 为什么 std::unique 不调用 std::sort?
- 调用专用模板时出错"no matching function for call to [...]"
- 选择要调用的构造函数
- C++为什么尽管我调用了void函数,它却不起作用
- 构造函数正在调用一个使用当前类类型的函数
- 变量没有改变?通过向量的函数调用
- 没有为自己的结构调用列表推回方法
- 如何从 cuda 中的设备函数调用现有主机函数
- 从全局内核调用主机函数
- MFC-如何从菜单主机调用对话框
- Recv()调用在远程主机终止后挂起
- 我可以在服务中有一个COM接口从Windows脚本主机调用