按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
{
m_szCha = RMB(m_double);
UpdateData(FALSE);
}
else
{
m_szCha = 〃〃;
UpdateData(FALSE);
}
}
运行界面如图 5…4 所示,详细的源代码设计可参考附带光盘。
·116 ·
…………………………………………………………Page 126……………………………………………………………
第 5 章 常用控件
图 5…4 阿拉伯数字与汉字数字之间的转换界面
技巧:改变控件的字体
控件也是窗口,可以调用 CWnd::SetFont 指定控件的新字体。该函数中使用一个 Cfont 指
针,以保证在控件撤消之前不能撤消字体对象。如下面的代码将下压按钮时的字体改为 8
号 Arial 字体。
private :
CFont m_font ;
// Set font in class implementation (。Cpp file )。 Note m_wndButton is a
//member variable added by ClassWizard。DDX routines hook the member
//variable to a dialog button contrlo。
BOOL CSampleDialog::OnInitDialog()
{
。。。
//Create an 8…point Arial font
m_font。CreateFont (MulDiv (8;pDC…》GetDeviceCaps(LOGPIXELSY);72);
;0;0;FW_NORMAL;0;0;0;ANSI_CHARSER;OUT_STROKE_PRECIS;CLIP_STROKE_PRECIS;
DRAFT_QUALITY;VARIABLE_PITCH|FF_SWISS;_T(〃Arial〃));
//Set font for push button 。
m_wndButton。SetFont (&m _font );
。。。
}
5。5 列表框(List Box )控件
5。5。1 列表框控件的使用
列表框也是一种传统控件,主要用于用户输入,它允许用户从所列出的表项中进行单项
或多项选择,被选择的项呈高亮度显示。列表框具有边框,并且一般带有一个垂直滚动条。
列表框分单选列表框和多重选择列表框两种。在单选列表框中一次只能选择一个列表项,而
在多重选择列表框中可以进行多重选择。列表框会向父窗口发送如表 5…10 所示的通知消息。
·117 ·
…………………………………………………………Page 127……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
表 5…10 列表框控件的通知消息
消息 含义
LBN_DBLCLK 用户用鼠标双击了一列表项,只有具有 LBS_NOTIFY 的列表框才能发送该消息
LBN_ERRSPACE 列表框不能申请足够的动态内存来满足需要
LBN_KILLFOCUS 列表框失去输入焦点
LBN_SELCANCEL 当前的选择被取消,只有具有 LBS_NOTIFY 的列表框才能发送该消息
LBN_SELCHANGE 单击鼠标选择了一列表项,只有具有 LBS_NOTIFY 的列表框才能发送该消息
LBN_SETFOCUS 列表框获得输入焦点
当 列 表 框 收 到 WM_CHAR 消 息 后 , 向 父 窗 口 发 送 该 消 息 , 只 有 具 有
WM_CHARTOITEM
LBS_WANTKEYBOARDINPUT 风格的列表框才会发送该消息
当列表框收到 WM_KEYDOWN 消息后,向父窗口发送该消息,只有具有
WM_VKEYTOITEM
LBS_WANTKEYBOARDINPUT 风格的列表框才会发送该消息
列表框控件封装在 MFC 的 CListBox 类中,CListBox 类的 Create 成员函数用于列表框的
创建,该函数的声明如下。
BOOL Create(DWORD dwStyle;const RECT& rect;CWnd* pParentWnd;UINT nID);
参数 dwStyle 指定了列表框控件的风格,如表 5…11 所示,dwStyle 可以是这些风格的组
合。rect 说明了控件的位置和尺寸。pParentWnd 指向父窗口,该参数不能为 NULL 。nID 则
说明了控件的 ID 。如果创建成功,该函数返回 TRUE,否则返回 FALSE 。
表 5…11 列表框控件的风格
风格 含义
支持多重选择,在点击列表项时按住 Shift 键或 Ctrl 键即可选择
LBS_EXTENDEDSEL
多个项
LBS_HASSTRINGS 指定一个含有字符串的自绘式列表框
指 定 一 个 水 平 滚 动 的 多 列 列 表 框 , 通 过 调 用
LBS_MULTICOLUMN
CListBox::SetColumnWidth 来设置每列的宽度
支持多重选择 。列表项的选择状态随着用户对该项单击或双击鼠
LBS_MULTIPLESEL
标而翻转
列表框的尺寸由应用程序而不是 Windows 指定。通常,Windows
LBS_NOINTEGRALHEIGHT
指定尺寸会使列表项的某些部分隐藏起来
LBS_NOREDRAW 当选择发生变化时防止列表框被更新,可发送消息改变该风格
LBS_NOTIFY 当用户单击或双击鼠标时通知父窗口
指定自绘式列表框,即由父窗口负责绘制列表框的内容,并且列
LBS_OWNERDRAWFIXED
表项有相同的高度
LBS_OWNERDRAWVARIABLE 指定自绘式列表框,并且列表项有不同的高度
LBS_SORT 使插入列表框中的项按升序排列
LBS_STANDARD 相当于指定了 WS_BORDER|WS_VSCROLL|LBS_SORT
使列表框在显示列表项时识别并扩展制表符(‘t ’) ,默认的制表宽
LBS_USETABSTOPS
度是 32 个对话框单位
允 许 列 表 框 的 父 窗 口 接 收 WM_VKEYTOITEM 和
LBS_WANTKEYBOARDINPUT
WM_CHARTOITEM 消息,以响应键盘输入
LBS_DISABLENOSCROLL 使列表框在不需要滚动时显示一个禁止的垂直滚动条
除了上表中的风格外,一般还要为列表框控件指定 WS_CHILD 、WS_VISIBLE 、
WS_TABSTOP 、WS_BORDER 和 WS_VSCROLL 等风格。要创建一个普通的单选择列表框,
应指定的风格为 WS_CHILD|WS_VISIBLE|WS_TABSTOP|LBS_STANDARD 。要创建一个多
重选择列表框,应该在单选择列表框风格的基础上再加上 LBS_MULTIPLESEL 或 LBS_
EXTENDEDSEL 。如果不希望列表框排序,就不能使用 LBS_STANDARD 风格。
·118 ·
…………………………………………………………Page 128……………………………………………………………
第 5 章 常用控件
对于用对话框模板编辑器创建的列表框控件,可以在控件的属性对话框中指定表 5…11 中
列出的控件风格。例如,在属性对话框中选择 Sort 项,相当与指定了 LBS_SORT 风格。
5。5。2 ClistBox 类的主要成员函数
CListBox 类的成员函数有很多,分别介绍如下:
1.AddString() 函数
该成员函数声明如下:
int AddString(LPCTSTR lpszItem);
该函数用来向列表框中加入字符串,其中参数 lpszItem 指定了要添加的字符串。函数的
返回值是加入的字符串在列表框中的位置,如果发生错误,会返回 LB_ERR 或 LB_ERRSPACE
(内存不够)。如果列表框未设置LBS_SORT 风格,那么字符串将被添加到列表的末尾,如果
设置了 LBS_SORT 风格,字符串会按排序规律插入到列表中。
2 .InsertString()函数
该成员函数声明如下:
int InsertString(int nIndex; LPCTSTR lpszItem);
该函数用来在列表框中的指定位置插入字符串。参数 nIndex 给出了插入位置(索引 ),
如果值为…1,则字符串将被添加到列表的末尾。参数 lpszItem 指定了要插入的字符串。该函
数返回实际的插入位置,若发生错误,会返回 LB_ERR 或 LB_ERRSPACE 。与 AddString 函
数不同的是,InsertString 函数不会导致 LBS_SORT 风格的列表框重新排序。不要在具有
LBS_SORT 风格的列表框中使用 InsertString 函数,以免破坏列表项的次序。
3 .DeleteString() 函数
该成员函数声明如下:
int DeleteString(UINT nIndex);
该函数用于删除指定的列表项,其中参数 nIndex 指定了要删除项的索引。函数的返回值
为剩下的表项数目,如果 nIndex 超过了实际的表项总数,则返回 LB_ERR 。
4 .ResetContent() 函数
该成员函数声明如下:
void ResetContent();
该函数用于清除所有列表项。
5 .GetCount()函数
该成员