MFC学习之路(六)在DoModal()之前态设置对话框窗口标题

在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!搞定!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Visual C++窗口标题改变的几种方法 在论坛中,经常有人会问到这个问题,所以今天整理了几种方法用来改变窗口标题,希望对这些朋友有所帮助。    一•单文档接口(SDI)类型窗口标题的改变    首先,我们来看Windows SDI类型窗口标题栏的结构形式。结合具体例子说明:用VC的AppWizard创建一个名为“SDITitle”的单文档类型的工程,创建完工程后,编译运行该工程,程序主窗口标题形式如下:    文档标题窗口标题    1•文档标题的改变    文档标题在是由工程中相应的文档类所控制的,因此我们可以利用SetTitle ()函数来改变文档标题。 例:改变CSDITitleDoc::OnNewDocument() 函数为: BOOL CSDITitleDoc::OnNewDocument()    { if (!CDocument::OnNewDocument()) return FALSE; SetTitle (" 文档标题 " );    return TRUE;    }    运行程序,则每次选择选单中的“文件”的“新建”选项时,文档标题就变成 “文档标题- SDITitle”。    2•主窗口标题的改变    主窗口标题默认是工程的文件名,正如前面AppWazied生成的SDITitle工程执行后,标题栏的形式总为“(文档名)- SDITitle”。    改变主窗口标题有两种:    第一种方法:利用ResourceView打开工程的资源,修改String Table中的IDR_MAINFRAME的值。将原来的“SDITitle\n\nTitle\n\n\nTitle.Document\nTitle Document”改为“标题改变示例\n\nTitle\n\n \nTitle. Document\nTitle Document”。这样改变后,主窗口标题栏的形式就为“((((-标题改变示例”。    第二种方法:具体改变方法如下:
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值