Loading

基于对话框的编程之静态文本控件(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、效果如下

posted @ 2020-04-08 12:14  天使的羽翼  阅读(2902)  评论(0编辑  收藏  举报