zoukankan      html  css  js  c++  java
  • 鸡啄米vc++2010系列19(常用控件:静态文本框)

     上一节鸡啄米讲了颜色对话框之后,关于对话框的使用和各种通用对话框的介绍就到此为止了。从本节开始鸡啄米将讲解各种常用控件的用法。常用控件主要包括:静态文本框、编辑框、单选按钮、复选框、分组框、列表框、组合框、图片控件、列表控件、树形控件和进度条控件等等。本节教程先来讲解静态文本框的使用。

           控件的通知消息

           在将静态文本框的使用之前,先大概讲讲控件的通知消息。

           当控件有事件发生时,它会向父窗口发送通知消息。最常发生的事件就是鼠标单击了,此时控件会向父窗口发送BN_CLICKED消息,实际上也就是给父窗口发送WM_COMMAND消息,在wParam参数中包含有通知消息码(鼠标单击时的通知消息码就是BN_CLICKED)和控件ID,lParam参数中包含了控件的句柄。在MFC消息映射机制概述中,鸡啄米讲过,消息就是由三个部分组成:消息值、wParam参数和lParam参数。

           为控件通知消息添加消息映射和消息处理函数的方法,之前不止一遍讲过了。现在再来具体说明下,控件的消息映射宏的格式大致是:

           ON_通知消息码(nID, memberFun)

           nID参数是控件的ID,memberFun参数是消息处理函数名。例如,ON_BN_CLICKED(IDC_BUTTON1, &CDlg::OnBnClickedButton1)。此消息映射宏应添加到BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之间。

           消息处理函数声明的语法形式为:

           afx_msg void memberFun()

           静态文本框的使用

           在前面鸡啄米的举例中,大家应该也清楚了静态文本框的一般作用,就是用于显示文字说明。MFC提供了CStatic类,封装了对静态文本框的所有操作。

           如果我们想在程序中动态创建静态文本框,而不是像前面那样直接从Toolbox中拖到对话框模板上,那么就需要使用CStatic类的成员函数Create。Create函数的原型如下:

    virtual BOOL Create(
       LPCTSTR lpszText,
       DWORD dwStyle,
       const RECT& rect,
       CWnd* pParentWnd,
       UINT nID = 0xffff 
    );

           参数说明:

           lpszText:指定要在控件中显示的文字。如果为NULL则不会显示任何文字。

           dwStyle:指定静态控件的风格。静态文本框一般都是对话框或其他窗口的子窗口,而且是可见的,所以应该包含WS_CHILD 和WS_VISIBLE风格,另外,MSDN中说明,还可以为其设置“static control styles”中风格的任意组合。下面大概为大家说明几个风格:

    SS_BITMAP 一个位图将显示在静态控件中,Create函数的lpszText参数字符串是资源文件中定义的位图名。此风格忽略宽度和高度参数,静态控件自动调整它的尺寸来适应位图
    SS_BLACKFRAME 指定一个具有与窗口边界同色的框,默认为黑色
    SS_BLACKRECT 指定一个具有与窗口边界同色的实矩形,默认为黑色
    SS_CENTER 使显示的正文居中对齐,正文可以换行
    SS_GRAYFRAME 指定一个具有与屏幕背景同色的边框
    SS_GRAYRECT 指定一个具有与屏幕背景同色的实矩形
    SS_ICON 使控件显示一个在资源中定义的图标,图标的名字由Create 函数的lpszText 参数指定,图标自动调整它的尺寸
    SS_LEFT 左对齐正文,正文能回绕
    SS_LEFTNOWORDWRAP 左对齐正文,正文不能回绕
    SS_NOTIFY 使控件能向父窗口发送鼠标事件消息
    SS_RIGHT 右对齐正文,可以回绕
    SS_SIMPLE 使静态正文在运行时不能被改变并使正文显示在单行中
    SS_WHITEFRAME 指定一个具有与窗口背景同色的框,默认为白色
    SS_WHITERECT 指定一个具有与窗口背景同色的实心矩形,默认为白色

           我们在对话框模板添加静态文本框时,可以在静态文本框的属性页中设置它的风格,很多都与上面的风格是对应的,例如,Simple属性就相当于SS_SIMPLE风格。

           rect:指定静态控件的位置和大小,它可以是RECT结构体类型,也可以是CRect类的对象。

           pParentWnd:指定静态控件的父窗口,通常是一个CDialog对象,不能是NULL。

           nID:指定静态控件的ID。

           CStatic类的成员函数简介

           简单介绍下CStatic类的主要成员函数,下面是成员函数列表。

    GetBitmap 获取由SetBitmap函数设置的位图的句柄
    GetCursor  获取由SetCurSor设置的光标的句柄
    GetEnhMetaFile 获取由SetEnhMetaFile设置的增强图元文件的句柄
    GetIcon 获取由SetIcon设置的图标的句柄
    SetBitmap 设置要在静态控件中显示的位图
    SetCursor 设置要在静态控件中显示的光标图片
    SetEnhMetaFile 设置要在静态控件中显示的增强图元文件
    SetIcon 设置要在静态控件中显示的图标

           除了上述成员函数外,由于CStatic是CWnd的派生类,CWnd的很多成员函数也可以使用,例如,GetWindowText、GetWindowRect、SetWindowText等。

           静态文本框的基本应用方法在前面已经讲过,鸡啄米就不再举例,大家可以根据本节所讲进行试验,以对静态文本框有更多的认识。欢迎大家来鸡啄米交流学习。


  • 相关阅读:
    Building a Space Station POJ
    Networking POJ
    POJ 1251 Jungle Roads
    CodeForces
    CodeForces
    kuangbin专题 专题一 简单搜索 POJ 1426 Find The Multiple
    The Preliminary Contest for ICPC Asia Shenyang 2019 F. Honk's pool
    The Preliminary Contest for ICPC Asia Shenyang 2019 H. Texas hold'em Poker
    The Preliminary Contest for ICPC Asia Xuzhou 2019 E. XKC's basketball team
    robotparser (File Formats) – Python 中文开发手册
  • 原文地址:https://www.cnblogs.com/zfluo/p/5131907.html
Copyright © 2011-2022 走看看