MFC实例:[2]获取和设置对话框标题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sunjikui1255326447/article/details/88817519

MFC实例:[2]获取和设置对话框标题

题外话:本教程所有实例编译环境为VS 2017专业版

1、打开VS 2017 -----》文件----》新建-----》项目------》MFC应用程序

2、将名称改为SetTitle-------》选择基于对话框-------》点击完成

3、选则基于对话框

4、将界面调成如下图: 

5、源文件中打开SetTitleDlg.cpp文件,找到OnInitDialog()函数,添加代码,具体代码见下一步:

5、具体代码:

BOOL CSetTitleDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// TODO: 在此添加额外的初始化代码
	CString windowsText;                   //定义变量,目的是获取出标题
	CString test("Situjing");              //定义变量并初始化,目的是将该值加载原有的标题之后
	GetWindowText(windowsText);            //获取标题
	SetWindowText(windowsText+"----------------"+test);    //设置标题

	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

程序源码:链接:https://pan.baidu.com/s/1jbMiwPraNPz0CTxpFBZDgw 
提取码:sy4j 

6、运行结果如图:

7、知识总结:

       通过查看基类的成员函数,可以找到GetDlgItemText、GetWindowText、SetDlgItemText、SetWindowText这四个函数是可以进行文本的设置或获取的。而CWnd类是所有窗口类的基类,因此,这四个函数可以应用于所有的窗口类,比如控件、从CWnd类派生的窗口类,本节仅对GetWindowText、SetWindowText进行了操作。

    获取标题函数:GetWindowText

(1)int GetWindowText(LPTSTR lpszStringBuf,
                            int nMaxCount );
(2)void GetWindowText(CString& rString);

           这两个函数也是获取窗口的文本,同样适用于控件,因为控件也是窗口。用法和上面的函数差不多,参数也是一样的。对于lpszStringBuf参数接收的文本,要判断是否成功,可以直接判断返回值是否为0,而下面一个函数,因为返回值是void,要判断,则判断rString是否为空即可,方法是:rString.IsEmpty();如果函数返回TRUE,则是空的,否则就不是空的。

获取标题函数:GetDlgItemText

 (1)int GetDlgItemText(int nID,              //窗口ID或者控件ID
                    LPTSTR lpStr,
                    int nMaxCount );

 (2)int GetDlgItemText(int nID,             //窗口ID或者控件ID
                    CString& rString );

         这个函数有两个版本,第一个参数都是控件的ID值,也就是在资源视图时给控件指定的ID,如IDC_BUTTON这样的,这个是一个宏,实际上就是一个整数值。第二个参数是LPTSTR lpStr,这是中性的字符串指针,接收_T("写入文件") 这样的参数,而CString& rString,则是一个CString对象,是MFC的一个字符串类,具有长度自动扩展的特性,相当于一个动态字符数组。因此没有第三个参数指定字符串长度。而在第一个版本中,因为是一般的字符串,则要指定一个最大字符串长度,以免字符串长度超过最大长度导致内存超界,给定一个字符串最大长度就保证不会超界,但是真要超过则会截断。
      两个函数的返回值都是整型,表示的是实际从控件中获取的字符个数,不包括结尾的空字符,如果没有获取到字符则返回0。而后面的const是C++中的一个语法规则,表示这个成员函数不能修改成员变量的值。
       注意,获取的控件的文本指的是,如果是按钮,则是按钮上的文本,如果是窗口,则是窗口的标题
    设置文本的函数:SetDlgItemText和SetWindowText

(1)void SetDlgItemText(int nID,                     //窗口ID或者空间ID

                    LPCTSTR lpszString );

(2)void SetWindowText(LPCTSTR lpszString );

        设置文本的使用就比较简单,参数的类型和获取文本的一样。返回值为void,表示一定会成功。

         区别:SetDlgItemText和GetDlgItemText两个函数第一个参数是需要窗口ID的,而SetWindowText和GetWindowText是不需要控件ID的。所以,SetDlgItemText和GetDlgItemText可以操作控件,而SetWindowText和GetWindowText只操作本窗口。
        最后要注意一下,只要给出了窗口ID就可以设置后获取或设置给定窗口ID的文本,因此,如果要用SetWindowText和GetWindowText两个函数操作其他控件的文本,比如在主窗口修改控件的文本,则需要先获取控件的窗口对象的指针,然后转换成控件对象的类型,再调用这两个函数操作控件的文本,比如((CButton*)GetDlgItem(IDOK))->SetWindowText(_T("写入文件"));这样就可以实现。

猜你喜欢

转载自blog.csdn.net/sunjikui1255326447/article/details/88817519