基于对话框的编程之静态文本控件(Static Text)的使用
一、效果图
二、具体步骤
(1)设置内容和获取内容
1、新建一个MFC应用程序,命名为02 CStaticText,应用程序类型选择基于对话框,其他默认设置
2、修改静态文本控件的显示内容
新增一个静态文本控件,右键属性修改Caption,即可修改可显示内容
3、新增两个按钮,一个用于设置静态文本控件的内容,另一个用于获取内容,效果如下:
4、为静态文本控件添加变量
右键选择Add Variable...
此时,会提示以下错误,这是由于以STATIC为结尾的ID不可以添加变量,需要修改ID
右键属性,修改ID为ID_TEXT
重新添加变量,设置访问权限为private,变量名称为m_text,点击Finish
找到DoDataExchange函数,我们可以看到控件名已经和一个变量名相绑定
5、为第一个按钮添加点击事件,设置静态文本控件的内容
//点击按钮,让哈哈变呵呵
void CMy02CStaticTextDlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
//设置文本内容
m_text.SetWindowTextW(TEXT("呵呵"));
}
6、为第二个按钮添加点击事件,获取文本中的内容
//点击按钮,获取文本中的内容,并且弹出
void CMy02CStaticTextDlg::OnBnClickedButton2()
{
// TODO: Add your control notification handler code here
CString str;
m_text.GetWindowTextW(str);
MessageBox(str);
}
运行程序,此时点击第一个按钮,可将哈哈设为呵呵,再点击第二个按钮,会弹出呵呵
(2)利用静态文本控件显示一个位图
1、新建一个静态文本控件,修改ID为ID_PIC,添加变量,设置访问权限和变量名称
2、将要显示的图片放到目录下
3、在OnInitDialog初始化函数中添加显示代码
// TODO: Add extra initialization here
//用static_Text显示图片
//设置静态控件窗口风格为位图居中显示
m_pic.ModifyStyle(0xf, SS_BITMAP | SS_CENTERIMAGE);
//通过路径获取bitmap句柄
#define HBMP(filepath,width,height) (HBITMAP)LoadImage(AfxGetInstanceHandle(),filepath,IMAGE_BITMAP,width,height,LR_LOADFROMFILE|LR_CREATEDIBSECTION)
//宽高设置应该按照控件的大小去设置
CRect rect;
m_pic.GetWindowRect(rect);
//静态控件设置bitmap
m_pic.SetBitmap(HBMP(TEXT("./1.bmp"), rect.Width(), rect.Height()));
(3)禁用按钮
1、新增一个按钮,修改显示内容为_
2、为按钮添加变量,设置访问权限和变量名称
3、添加点击事件,编辑代码如下
void CMy02CStaticTextDlg::OnBnClickedButton3()
{
// TODO: Add your control notification handler code here
//点击按钮,修改显示内容
m_btn.SetWindowTextW(TEXT("O(∩_∩"));
//获取内容
CString str;
m_btn.GetWindowTextW(str);
MessageBox(str);
//设置点击状态
m_btn.EnableWindow(FALSE);
}
4、效果如下