按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
一起,但不要放到//{{AFX_MSG和//}}AFX_MSG之间。
然后,打开类CStaticDemoDlg的实现文件StaticDemoDlg。cpp,在宏
BEGIN_MESSAGE_MAP(CStaticDemoDlg; CDialog)
和宏
BEGIN_MESSAGE_MAP
之间添加如下的消息映射入口:
ON_BN_CLICKED(IDC_STATICDEMO; OnStaticDemo)
同样,不要把手动添加的消息映射入口项放到注释//{{AFX_MSG_MAP
和//}}AFX_MSG_MAP之间。
手动添加成员函数OnStaticDemo或OnDoubleclickedStaticDemo的实
现代码:
void CStaticDemoDlg::OnStaticDemo()
{
MessageBox(〃您刚才单击了 “静态控件”!〃);
}
编译上面的示例程序,单击 “静态控件”,命令处理函数
OnStaticDemo将被调用,从而弹出相应的消息框。
下面我们来看一下如果在静态控件中使用图标和位图。
图6。 39 使用图标代替静态控件中的文本
首先介绍使用图标代替文本的例子,方法如下:
假设对话框类为CStaticDemoDlg,所需使用图标的静态控件ID为
IDC_STATICDEMO,相应的图标的ID为IDR_MAINFRAME,则可用下面的
…………………………………………………………Page 346……………………………………………………………
代码代替类CStaticDemoDlg的成员函数OnInitDialog中的// TODO注
释:
// 获得指向静态控件的指针
CStatic *pStaticDemo=(CStatic*)GetDlgItem(IDC_STATICDEMO);
// 加载图标
HICON hIcon=AfxGetApp()…》LoadIcon(IDR_MAINFRAME);
// 设置静态控件的样式以使得可以使用图标,并使图标显示时居中
pStaticDemo…》ModifyStyle(0xF;SS_ICON|SS_CENTERIMAGE);
// 设置静态控件图标
pStaticDemo…》SetIcon(hIcon);
运行该程序,显示如图6。39。
接着我们来看如何使用位图代替文本,方法如下:
假设所用位图的资源ID为IDB_STATICDEMO,其余设置如上。用以下代
码来代替成员函数OnInitDialog中的// TODO注释:
// 获得指向静态控件的指针
CStatic *pStaticDemo=(CStatic*)GetDlgItem(IDC_STATICDEMO);
// 获得位图句柄
HBITMAP hBitmap=::LoadBitmap(AfxGetApp()…》m_hInstance;
MAKEINTRESOURCE(IDB_STATICDEMO));
// 设置静态控件的样式以使得可以使用位图,并使位图在显示时居中
pStaticDemo…》ModifyStyle(0xF;SS_BITMAP|SS_CENTERIMAGE);
// 设置静态控件显示时使用的位图
pStaticDemo…》SetBitmap(hBitmap);
编译并运行该程序,对话框显示如图6。40所示。
…………………………………………………………Page 347……………………………………………………………
图6。 40 使用位图代替文本的静态控件
l 注意:
l 在使用位图的例子中,传递给ModifyStyle的第一个参数的值绝对
不可以为0,否则将得不到正常的运行结果。
第五节 文本编辑控件
静态文本控件只能用来显示文本,而不可以用来输入文本。如果需要
提供输入文本的功能应该使用文本编辑控件。文本编辑控件在
Control工具箱中对应的图标为 。对于文本编辑控件,除了我们在
前面所涉及的一些外,还可以设置以下的一些属性样式:
Align 决定当Multiline属性为真时文本的对齐
text: 方式。默认值为:Left
Multi 创建一个多行文本编辑控件。当一个多行
line: 文本编辑控件具有输入焦点时,如果用户
按下了ENTER键,以默认情况下的行为是
选择对话框中的默认命令按钮,而不是向
文本编辑控件中插入新行。将
AutoHScroll属性或Want return属性设置
为真可以将用户按下的ENTER键解释为插
入新行,而不是选择默认命令按钮。
在选择了AutoHScroll属性时,如果插入
点超过了控件的右边界,多行文本编辑控
件自动进行水平滚动。用户可以使用
ENTER键来开始新行。
如果没有选择AutoHScroll属性,多行文
本编辑控件将视需要将文本进行自动折
行。而仅当Want return属性为真时,用
…………………………………………………………Page 348……………………………………………………………
户才可以使用ENTER键来开始新行。
多行文本编辑控件也可以拥有自己的滚动
条。具有滚动条的编辑控件处理自己的滚
动条消息,而不具有滚动条的编辑控件也
可以由父窗口发送的滚动条消息。
类型:布尔值 默认值:假
Number: 用户不能输入非数字字符。类型:布尔值
默认值:假
Horizontal 为多行控件提供水平滚动条。类型:布尔
scroll: 值 默认值:假
Auto 当用户输入的字符超过了编辑框的右边界
HScroll: 时自动水平向右滚动文本。类型:布尔值
默认值:真
Vertical 为多行控件提供垂直滚动条。类型:布尔
scroll: 值 默认值:假
Auto 在多行控件中,当用户在最后一行按下
VScroll: ENTER键时 自动向上滚动文本
Password: 当用户键入时将所有字符显示为星号
(*)。该属性对于多行控件不可用。类
型:布尔值 默认值:假
No hide 改变当编辑框失去和重新获得焦点时文本
selection: 的显示方式。如果该属性为真,在编辑框
中选中的文本在任何时候都显示为选中状
态 (即反白状态)。类型:布尔值 默认
值:假
OEM 将键入的文本从Windows字符集转换为OEM
convert: 字符集,再转换回Windows字符集。该操
作确认应用程序在调用AnsiToOem函数将
编辑框中的字符串转换为OEM字符串时进
行正确的字符转换,因此该样式对于包括
文件名的编辑控件特别有用。类型:布尔
值 默认值:假
…………………………………………………………Page 349……………………………………………………………
Want 指定当用户在多行编辑控件中按下ENTER
return: 键时插入一个回车符,否则用户按下
ENTER将被解释为选择了对话框中的默认
命令按钮。该样式对于单行编辑框控件没
有任何影响。类型:布尔值 默认值:假
Border: 在编辑框边缘创建边框。类型:布尔值
默认值:真
Uppercase: 将用户在编辑框中输入的字符转换为大
写。类型:布尔值 默认值:假
Lowercase: 将用户在编辑框中输入的字符转换为小
写。
类型:布尔值 默认值:假
Read…only: 防止用户编辑和更改编辑框中的文本。类
型:布尔值 默认值:假
相比我们在前面所讲述的几个类CButton、CBitmapButton和CStat