<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<title>6.1 传统控件</title>
</head>
<body link="#3973DE" alink="#3973DE">
<font SIZE="5"><b><div align="center"><center>
<table border="0" width="615" cellspacing="0" cellpadding="0">
<tr>
</b><td><div align="center"><center><table border="0" width="615" cellpadding="0" cellspacing="0" height="20">
<tr>
<td width="377" bgcolor="#15397D" height="20"></td>
<td width="238" bgcolor="#000000" height="20"><p align="right"></font><span style="text-decoration: none"><a href="../../index.htm"><font color="#FFFFFF">电脑报Visual
C++网络教程</font></a></span></td>
</tr>
</table>
</center></div><font FACE="Times New Roman" SIZE="3"><b><p ALIGN="CENTER"></b></font><font color="#3973DE" FACE="Times New Roman" size="5">6.1 </font><font color="#3973DE" size="5">传统控件</font><font FACE="Times New Roman" size="5"></p>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY"></font><font SIZE="3">在上一课的表</font><font FACE="Times New Roman" SIZE="3">5.1</font><font SIZE="3">已经列出了</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">的传统控件及其对应的控件类。在这些控件中,读者应该重点掌握命令按钮、选择框、单选按钮、编辑框、列表框和组合框。</font><font FACE="Times New Roman" SIZE="3"></p>
<b><p ALIGN="JUSTIFY"></b></font><font color="#3973DE" FACE="Times New Roman" SIZE="3">.1.1
</font><font SIZE="3" color="#3973DE">传统控件的控件通知消息</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">控件通过向父窗口发送控件通知消息来表明发生了某种事件.例如,当用户在按钮上单击鼠标时,按钮控件会向父窗口发送</font><font FACE="Times New Roman" SIZE="3">BN_CLICKED</font><font SIZE="3">消息.传统控件的通知消息实际上是通过</font><font FACE="Times New Roman" SIZE="3">WM_COMMAND</font><font SIZE="3">消息发给父窗口的(滚动条除外),在该消息的</font><font FACE="Times New Roman" SIZE="3">wParam</font><font SIZE="3">中含有通知消息码(如</font><font FACE="Times New Roman" SIZE="3">BN_CLICKED</font><font SIZE="3">)和控件的</font><font FACE="Times New Roman" SIZE="3">ID</font><font SIZE="3">,在</font><font FACE="Times New Roman" SIZE="3">lParam</font><font SIZE="3">中则包含了控件的句柄.</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">利用</font><font FACE="Times New Roman" SIZE="3">ClassWizard</font><font SIZE="3">可以很容易地为控件通知消息加入消息映射和消息处理函数,这在上一章中已经演示过了.传统控件的消息映射宏是</font><font FACE="Times New Roman" SIZE="3">ON_XXXX</font><font SIZE="3">,其中</font><font FACE="Times New Roman" SIZE="3">XXXX</font><font SIZE="3">表示通知消息码,如</font><font FACE="Times New Roman" SIZE="3">BN_CLICKED</font><font SIZE="3">.</font><font FACE="Times New Roman" SIZE="3">ON_XXXX</font><font SIZE="3">消息映射如下所示,该宏有两个参数,一个是控件的</font><font FACE="Times New Roman" SIZE="3">ID</font><font SIZE="3">,一个是消息处理函数名.</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY">ON_XXXX(nID, memberFxn)</p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">消息处理函数的声明应该有如下形式:</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY">afx_msg void memberFxn( );</p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">例如,某按钮的</font><font FACE="Times New Roman" SIZE="3">BN_CLICKED</font><font SIZE="3">消息的消息映射及其处理函数的声明如下所示</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY">ON_BN_CLICKED(IDC_ADD,OnAdd)</p>
<p ALIGN="JUSTIFY">afx_msg void OnAdd( );</p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">有时,为了处理方便,需要把多个</font><font FACE="Times New Roman" SIZE="3">ID</font><font SIZE="3">连续的控件发出的相同消息映射到同一个处理函数上.这就要用到</font><font FACE="Times New Roman" SIZE="3">ON_CONTROL_RANGE</font><font SIZE="3">宏.</font><font FACE="Times New Roman" SIZE="3">ON_CONTROL_RANGE</font><font SIZE="3">消息映射宏的第一个参数是控件消息码,第二和第三个参数分别指明了一组连续的控件</font><font FACE="Times New Roman" SIZE="3">ID</font><font SIZE="3">中的头一个和最后一个</font><font FACE="Times New Roman" SIZE="3">ID</font><font SIZE="3">,最后一个参数是消息处理函数名。例如,要处理一组单选按钮发出的</font><font FACE="Times New Roman" SIZE="3">BN_CLICKED</font><font SIZE="3">消息,相应的消息映射如下所示:</p>
<blockquote>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">ON_CONTROL_RANGE(BN_CLICKED,
IDC_FIRST, IDC_LAST, OnRadioClicked)</p>
</blockquote>
<p ALIGN="JUSTIFY"></font><font SIZE="3">函数</font><font FACE="Times New Roman" SIZE="3">OnRadioClicked</font><font SIZE="3">的声明如下,该函数比上面的</font><font FACE="Times New Roman" SIZE="3">OnAdd</font><font SIZE="3">多了一个参数</font><font FACE="Times New Roman" SIZE="3">nID</font><font SIZE="3">以说明发送通知消息的控件</font><font FACE="Times New Roman" SIZE="3">ID</font><font SIZE="3">.</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY">afx_msg void OnRadioClicked(UINT nID);</p>
<p ALIGN="JUSTIFY">ClassWizard</font><font SIZE="3">不支持</font><font FACE="Times New Roman" SIZE="3">ON_CONTROL_RANGE</font><font SIZE="3">宏,所以需要手工建立消息映射和消息处理函数.</font><font FACE="Times New Roman" SIZE="3"></p>
</font><div align="center"><center><table border="2" cellpadding="2" cellspacing="0" width="90%" bgcolor="#9BCDFF">
<tr>
<td width="100%"><font SIZE="3">提示</font><font FACE="Times New Roman" SIZE="3">:</font><font SIZE="3">事实上,在使用</font><font FACE="Times New Roman" SIZE="3">ClassWizard</font><font SIZE="3">时只要运用一个小小的技巧,就可以把不同控件的通知消息映射到同一个处理函数上,也可以把一个控件的不同通知消息映射到同一个处理函数上.这个技巧就是在用</font><font FACE="Times New Roman" SIZE="3">ClassWizard</font><font SIZE="3">创建消息处理函数时,指定相同的函数名即可.此方法的优点在于控件的</font><font FACE="Times New Roman" SIZE="3">ID</font><font SIZE="3">不必是连续的,缺点是处理函数没有</font><font FACE="Times New Roman" SIZE="3">nID</font><font SIZE="3">参数,因而不能确定是哪一个控件发送的消息.</font></td>
</tr>
</table>
</center></div><font FACE="Times New Roman" SIZE="3"><b><p ALIGN="JUSTIFY"></b></font><font color="#3973DE" FACE="Times New Roman" SIZE="3">6.1.2 </font><font SIZE="3" color="#3973DE">静态控件</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">静态控件包括静态正文</font><font FACE="Times New Roman" SIZE="3">(Static Text)</font><font SIZE="3">和图片控件</font><font FACE="Times New Roman" SIZE="3">(Picture)</font><font SIZE="3">。静态正文控件用来显示正文。图片控件可以显示位图、图标、方框和图元文件,在图片控件中显示图片的好处是不必操心图片的重绘问题。静态控件不能接收用户的输入。在上一章中,读者已经用过静态正文和组框控件。图片控件的例子可以在</font><font FACE="Times New Roman" SIZE="3">AppWizard</font><font SIZE="3">创建的</font><font FACE="Times New Roman" SIZE="3">IDD_ABOUTBOX</font><font SIZE="3">对话框模板中找到,在该模板中有一个图片控件用来显示图标。</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">静态控件的主要起说明和装饰作用。</font><font FACE="Times New Roman" SIZE="3">MFC</font><font SIZE="3">的</font><font FACE="Times New Roman" SIZE="3">CStatic</font><font SIZE="3">类封装了静态控件。</font><font FACE="Times New Roman" SIZE="3">CStatic</font><font SIZE="3">类的成员函数</font><font FACE="Times New Roman" SIZE="3">Create</font><font SIZE="3">负责创建静态控件,该函数的声明为</p>
<blockquote>
<blockquote>
<blockquote>
</font><font FACE="Times New Roman" SIZE="3"><p ALIGN="JUSTIFY">BOOL Create( LPCTSTR
lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT
没有合适的资源?快使用搜索试试~ 我知道了~
VC++网络教程 关于VC的基础知识都有涉及

共193个文件
gif:101个
htm:88个
jpg:4个

需积分: 0 11 下载量 175 浏览量
2008-12-23
17:43:01
上传
评论
收藏 1.09MB ZIP 举报
温馨提示
很适合初学者的入门,关于VC入门的知识 配合案例敲一遍代码效果更好
资源详情
资源评论
资源推荐
收起资源包目录





































































































共 193 条
- 1
- 2






















tao1984tao
- 粉丝: 3
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于51单片机的交通灯设计程序.doc
- 事务管理软件IPO上市咨询最新政策募投可研细分市场调查综合解决方案.docx
- 医院基本建设项目管理.docx
- 基于51单片机蓝牙开关控制家电系统.doc
- 专门画流程图的软件叫什么.pdf
- 概预算培训(项目管理及工程造价).ppt
- 谭浩强c语言第一章.ppt
- 项目管理系统体系框架.pdf
- 项目Hadoop环境的搭建与管理.pptx
- 使用计算机的一些常用英文和快捷键.docx
- 双向网络施工规范.doc
- 欢跃数码圣传网络游戏开发及运营项目商业计划书.doc
- 项目管理亮点赏析.ppt
- 利用可交易电子路票实现交通网络的帕雷托改善.doc
- 云计算平台可行性分析------.pdf
- 项目管理各阶段的文档模版汇总版.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论0