友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
VC语言6.0程序设计从入门到精通-第22部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
void CGridDemoView::OnSetFont()
{
// TODO: Add your mand handler code here
//获得选中单元格的旧字体
CFont *pFont=m_CellArray'm_nCurCellID'。GetFont();
LOGFONT lf;
·95 ·
…………………………………………………………Page 105……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
if (pFont != NULL)
pFont…》GetObject(sizeof(LOGFONT); &lf);
else //单元格使用默认字体
::GetObject(GetStockObject(SYSTEM_FONT); sizeof(LOGFONT); &lf);
//使用选择字体对话框
CFontDialog dlg(&lf; CF_SCREENFONTS|CF_INITTOLOGFONTSTRUCT);
if (dlg。DoModal()==IDOK)
{
//设置新字体
m_CellArray'm_nCurCellID'。SetFont(&lf);
}
}
4。5。6 颜色对话框
当需要选择颜色的时候就可以使用 Windows 通用的颜色对话框,如图 4…32 所示。
CColorDialog 封装了字体对话框的使用,其使用方法与前面所述的模态通用对话框类似。
图 4…32 颜色对话框
GridDemo 例程中使用颜色对话框的代码在 CGridDemoView::OnSetColor()函数中。添加
步骤如下。
(1)添加 CGridDemoView::OnSetColor()消息处理函数。
CGridDemoView::OnSetColor() 函数是“编辑|颜色”菜单的消息处理函数,对应 ID 为
ID_SET_COLOR 。用户需要按照第 3 章的讲解,在“编辑”顶层菜单中添加标题为“颜色”,
ID 为 ID_SET_COLOR 的子菜单,然后为 CGridDemoView 类添加这个 ID 的消息处理函数,
即 OnSetColor() 。
(2 )编辑 CGridDemoView::OnSetColor()消息处理函数使用颜色对话框。代码如下:
void CGridDemoView::OnSetColor()
{
// TODO: Add your mand handler code here
//获得选中单元格的旧前景色
CColorDialog dlg(m_CellArray'm_nCurCellID'。GetFgColor());
if (dlg。DoModal()==IDOK)
·96 ·
…………………………………………………………Page 106……………………………………………………………
第 4 章 对话框
{
//设置新的前景颜色
m_CellArray'm_nCurCellID'。SetFgColor(dlg。GetColor());
}
}
4。6 消息对话框
消息对话框 MessageBox 是 Windows 系统中自带的最简单的对话框,用于提示一些简单
的信息,如图 4…33 所示。本章 4。1。3 节中实例 Sample4_1 在登录对话框的消息处理函数中就
大量使用了消息对话框。
图 4…33 消息对话框
在 MFC 中,消息对话框通过 CWnd::MessageBox()和 AfxMessageBox()两个函数进行调用。
前一个函数是 CWnd 的成员函数,而 AfxMessageBox()则是全局函数。两个函数的原型分别为:
int MessageBox(
LPCTSTR lpszText;
LPCTSTR lpszCaption = NULL;
UINT nType = MB_OK
);
int AfxMessageBox(
LPCTSTR lpszText;
UINT nType = MB_OK;
UINT nIDHelp = 0
);
o lpszText 参数:用于设置对话框的内容。
o lpszCaption 参数:用于设置对话框的标题。
o nType 参数:设置消息对话框的属性,属性可以为表 4…2 和表 4…3 中的取值的按位或的组合。
o nIDHelp 参数:用于设置帮助的上下文 ID 。
表 4…2 消息对话框主要参数——对话框类型
nType 取值 参数说明
MB_ABORTRETRY 有“终止”、“重试”和“忽略”按钮
MB_OK 有“确定”按钮
MB_OKCANCEL 有“确定”和“取消”按钮
MB_RETRYCANCEL 有“重试”和“取消”按钮
MB_YESNO 有“是”和“否”按钮
MB_YESNOCANCEL 有“是”、“否”和“取消”按钮
·97 ·
…………………………………………………………Page 107……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
表 4…3 消息对话框主要参数——对话框图标
nType 取值 显示图标
MB_ICONEXCLAMTION
MB_ICONWARNING
MB_ICONASTERISK
MB_ICONINFORMATION
MB_ICONQUESTION
MB_ICONHAND
MB_ICONSTOP
MB_ICONERROR
如图 4…33 所示的消息对话框可以用如下代码显示:
MessageBox(〃查找至末尾,是否从头开始查找?〃;
〃查找〃;MB_YESNO|MB_ICONQUESTION)
技巧:WM_MOUSEFIST 和 WM_MOUSELAST 分别指定了鼠标所能产生的第一个消息和最后一
个消息类型,因此程序可以 GetMessage (&msg; WM_MOUSEFIRST; WM_MOUSELAST )
函数等待并获取鼠标消息,获取的鼠标消息保存在参数 msg 中。
运行 MessageBox()或者 AfxMessageBox()都可打开模态消息对话框,返回值就是用户单
击的消息对话框的按钮 ID :
o IDABORT :单击“终止”按钮。
o IDCANCEL :单击“取消”按钮。
o IDIGNORE :单击“忽略”按钮。
o IDNO :单击“否”按钮。
o IDOK :单击“确定”按钮。
o IDRETRY :单击“重试”按钮。
o IDYES :单击“是”按钮。
4。7 本章小结
本章详细介绍了 Windows 系统中最常用的用户界面——对话框的使用,并根据对话框的
各种不同类型进行分类介绍。本章需要掌握的内容有:
o 一般对话框的创建和使用方法,包括模态和非模态对话框。
o 属性页对话框的创建和使用。
o 通用对话框的使用。
o 消息对话框的使用。
对话框在任何一个程序中都会大量使用,设计功能丰富完善、界面合理美观的对话框是
设计用户界面的重点和难点,需要认真学习、理解和掌握。
·98 ·
…………………………………………………………Page 108……………………………………………………………
第 5 章 常用控件
第 5 章 常用控件
在与用户的交互过程中,控件(Control )担任着重要的角色。MFC 提供了大量的控件类,
它们封装了控件的功能,通过这些控件类,可以方便地创建控件,对控件进行查询和控制。
控件可粗分为两类,一类是在 Windows 3。x 中就已支持的传统控件,另一类是 Windows
95/NT/2000 中支持的新型 Win32 控件,所有的控件类都是 CWnd 类的直接或间接派生类 。不
过对于新型 Win32 控件,应用程序只能创建控件对象而不能创建数据变量 。不管是什么类型
的控件,一般都具有 WS_CHILD 和 WS_VISIBLE 窗口风格,其中 WS_CHILD 指定窗口为子
窗口,WS_VISIBLE 使窗口是可见的。另外,大部分控件还具有 WS_TABSTOP 风格,
WS_TABSTOP 使控件具有 Tabstop 属性。MFC 类库提供的主要控件如表 5…1 所示。
表 5…1 常用控件列表
控件 功能 对应控件类
静态文本(Static Text ) 显示正文,一般不能接受输入信息 CStatic
显式位图、图标、方框和图元文件,一般不能接
图片(Picture ) CStatic
受输入信息
文本编辑框(Edit Box ) 输入并编辑正文,支持单行和多行编辑 CEdit
命令按钮(Button ) 响应用户的输入,触发相应的事件 CButton
用作选择标记,可以有选中、不选中和不确定 3
检查框(Check Box ) CButton
种状态
单选按钮(Radio Button ) 用来从两个或多个选项中选中一项 CButton
显示正文和方框,主要用来将相关的一些控件聚
组框(Group Box ) CButton
成一组
显示一个列表,用户可以从该列表中选择一项或
列表框(List Box ) CListBox
多项
是一个编辑框和一个列表框的组合,分为简易式、
组合框(bo Box ) CboBox
下拉式和下拉列表式
主要用来从一个预定义范围值中迅速而有效地选
滚动条(Scroll Bar ) CScrollBar
取一个整数值
列表控件(ListCtrl ) 主要用来显示列表型报表,提供多种显示模式 CListCtrl
树型控件(TreeCtrl ) 主要用来显示树状结构数据 CTreeCtrl
选项卡控件(TabCtrl ) 主要用来显示多种重叠的相关对话框界面 CTabCtrl
5。1 静态文本(Static text)控件
静态文本控件是传统控件的一种,传统控件主要包括文本控件、命令按钮、选择框、单
选按钮、编辑框、列表框和组合框等,如图 5…1 所示。
…………………………………………………………Page 109……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
编辑框 单选按钮
复选框 组框
静态文本
列表框
组合框
普通按钮
图 5…1 主要传统控件样式
5。1。1 传统控件通知消息
在介绍静态文本控件的用法之前,先讲述传统控件的控件通知消息。控件通过向父窗口
发送控件通知消息来表明发生了某种事件。例如,在按钮上单击鼠标时,按钮控件会向父窗
口发送 BN_CLICKED 消息。传统控件的通知消息实际上是通过 WM_MAND 消息发给
父窗口的(滚动条除外 ),在该消息的 wParam 中含有通知消息码(如 BN_CLICKED )和控
件的 ID,在 lParam 中则包含了控件的句柄。
利用 ClassWizard 可以很容易地为控件通知消息加入消息映射和消息处理函数,这在上
一章中的对话框应用程序中已经讲解过了。传统控件的消息映射宏是ON_XXXX,其中XXXX
表示通知消息码,如 BN_CLICKED 。ON_XXXX 消息映射宏格式如下,该宏有两个参数,
一个是控件的 ID,一个是消息处理函数名:
ON_XXXX(nID;memberFxn)
消息处理函数的声明形式如下:
afx_msg void memberFxn();
有时,为了处理方便,需要把多个 ID 连续的控件发出的相同消息映射到同一个处理函
数上,这时就要用到 ON_CONTROL_RANGE 宏。例如,要处理一组单选按钮发出的
BN_CLICKED 消息,相应的消息映射如下:
ON_CONTROL_RANGE(BN_CLICKED;IDC_FIRST;IDC_LAST;
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!