在DoModal()之前态设置对话框窗口标题
有一个对话框变量CDlgTest dlg;
我们要根据运行时的内容动态设置窗口标题。
那么,像下面这样做,可以吗?
dlg.SetWindowText(_T("你想设置的标题"));
dlg.DoModal();
显然不行,因为SetWindowText的时候对话框没有建立,对话框句柄不存在。(MFC中,隐藏了句柄这个参数)。
通过重载CDlgTest里面的OnInitDialog()函数设置,好主意,不过似乎无法动态更改吧?
========================这不是好办法=========================
那该怎么做呢?
方法是在CDlgTest里面定义一个公有变量,例如:CString m_strCaption;
然后在OnInitDialog()函数里面增加如下代码:
SetWindowText(m_strCaption;);
调用的时候
dlg.m_strCaption = _T("你想设置的标题");
dlg.DoModal();
========================这不是好办法=========================
咕~~(╯﹏╰)b,把成员变量暴露出来还真不是个好办法,完了用户忘记赋值了呢?
应该把CString m_strCaption;设置为私有变量。
然后在构造函数里面传递值,这样用户也不会忘记赋值。
CDlgTest::CDlgTest(const CString& str, CWnd* pParent /*=NULL*/)
: CDialogEx(CDlgTest::IDD, pParent)
{
m_strCaption = str;
}
CTestDlg dlg(_T("你想设置的标题"));
dlg.DoModal();
OK!搞定!