对话框窗口中的消息框(VS 2012,MFC C++)

Posted

技术标签:

【中文标题】对话框窗口中的消息框(VS 2012,MFC C++)【英文标题】:MessageBox in Dialog windows (VS 2012, MFC C++) 【发布时间】:2015-03-21 22:56:22 【问题描述】:

我创建了新的对话框窗口(Visual Studio 2012,基于对话框的 MFC 应用程序)并从程序菜单中调用它,如下所示:

CDialog dlg(IDD_Dialog1);
dlg.DoModal();

在新窗口中(IDD_Dialog1)我正在尝试制作一个 MessageBox。通过单击按钮 MessageBox 不显示。

如何正确制作?

【问题讨论】:

您必须从CDialog 驱动一个新类,例如命名为CMyDialog。你可以在CDialog上搜索教程,有很多。或者在资源部分添加一个新对话框,双击资源中的对话框,Visual Studio 会自动为你创建类。在资源编辑器中,在对话框中插入一个按钮,双击该按钮,VS 应该创建一个函数来处理单击该按钮时发生的情况。 你能分享一些代码吗? 请显示使用MessageBox的代码。或者,尝试使用AfxMessageBox。 【参考方案1】:

这里有一些你不应该真正需要的基本代码。最好使用 Visual Studio 向导制作 MFC 应用程序,基于对话框或其他东西,然后转到资源编辑器,创建一个对话框,在资源编辑器中双击该对话框,它会为您完成。仍在资源编辑器中时,将一个按钮拖放到对话框中,双击您刚刚放入的那个按钮...

//mydialog.h
class CMyDialog : public CDialog

public:
   CMyDialog(int id, CWnd* parent = NULL);
   void OnButton1();
   DECLARE_MESSAGE_MAP()
;

//mydialog.cpp
BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
   ON_COMMAND(IDC_BUTTON1, OnButton1)
END_MESSAGE_MAP()

CMyDialog::CMyDialog(int id, CWnd* parent) : CDialog(id, parent)


void CMyDialog::OnButton1()
   MessageBox(L"hello world");


//myapp.cpp
BOOL CMyApp::InitInstance()

   CWinApp::InitInstance();
   CMyDialog dlg(IDD_DIALOG1);
   dlg.DoModal();
   return 0;

【讨论】:

以上是关于对话框窗口中的消息框(VS 2012,MFC C++)的主要内容,如果未能解决你的问题,请参考以下文章

MFC,实现消息框自动倒计时的功能...

子窗口将消息转发给父窗口

VS2010-MFC(对话框:为控件添加消息处理函数)

MFC 模态对话框的奇怪行为

MFC怎么在主窗口显示后,加载子窗口

使用 VS6 C++ GUI 编辑器、MFC 以屏幕(像素)为单位调整全屏窗口大小?