设置 MFC 对话框表单标题

Posted

技术标签:

【中文标题】设置 MFC 对话框表单标题【英文标题】:Set MFC dialog form caption 【发布时间】:2014-04-04 08:21:40 【问题描述】:

我需要设置对话框表单标题。我试图创建可能使用类向导绑定到标题的 CString 变量。但是选择菜单中没有主窗体控件。这样做的方法是什么?

这是我的对话框:

#include "stdafx.h"
#include "MyDlg.h"
#include "afxdialogex.h"


// MyDlg dialog

IMPLEMENT_DYNAMIC(MyDlg, CDialog)

MyDlg::MyDlg(CWnd* pParent /*=NULL*/)
    : CDialog(MyDlg::IDD, pParent)
    , m_edit(_T(""))




MyDlg::~MyDlg()



void MyDlg::DoDataExchange(CDataExchange* pDX)

    CDialog::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_EDIT1, m_edit);



BEGIN_MESSAGE_MAP(MyDlg, CDialog)
    ON_BN_CLICKED(IDOK, &MyDlg::OnBnClickedOk)
END_MESSAGE_MAP()


// MyDlg message handlers


void MyDlg::OnBnClickedOk()


    // TODO: Add your control notification handler code here
    CDialog::OnOK();
    txt=m_edit;

这是创建对话框的代码:

BOOL CPreparationApp::InitInstance()


    MyDlg Dlg;
//how to tell Dlg to have form caption "BLABLABLA"?
    Dlg.DoModal();


        return TRUE;

【问题讨论】:

【参考方案1】:

希望我以正确的方式理解了您的问题:

// MyDlg.h
class MyDlg

 public:    // private is fine too if you're OOP nazi but you have to provide a SetDlgCaption method then.
    CString m_strDlgCaption;
;

// MyDlg.cpp
BOOL MyDlg::OnInitDialog( )

    SetWindowText( m_strDlgCaption );



BOOL CPreparationApp::InitInstance()


    MyDlg Dlg;

    Dlg.m_strDlgCaption = _T("A fancy caption for your dialog");
    Dlg.DoModal();

【讨论】:

类似 Dlg.SetWindowText("BLABLABLA"); ?此代码引发异常 当您确定您的窗口存在时,您必须这样做。正如@ScottMcP-MVP 建议的那样,您可以将它放在 OnInitDialog 中。如果你事先知道你的标题是什么,放一个CString成员变量和一个Set方法来填充它,调用MyDlg dlg之间的方法;和 dlg.DoModal();在您的 OnInitDialog 中,您可以调用 SetWindowText( m_yourMemberVariable );【参考方案2】:

如果您还没有这样做,您首先需要在对话框类中为 OnInitDialog 添加一个覆盖。这是对话框及其控制窗口存在后您可以执行代码的第一个位置。您可以在 OnInitDialog 中放入 SetWindowText(_T("BLABLABLA")) 来设置对话框标题。

【讨论】:

以上是关于设置 MFC 对话框表单标题的主要内容,如果未能解决你的问题,请参考以下文章

接收 MFC 对话框的 PostMessage 消息

从 MFC DLL 显示对话框

在 mfc 中打开另一个表单

无法在基于 MFC 对话框的应用程序中使用 SetDlgItemTextW() 设置对话框的标题

MFC中如何设置Dialog(对话框)标题栏中文字的颜色

所有应用程序顶部的 MFC 对话框窗体