📄 01_9_16_4.asp.html
字号:
<li> 游览一下对话框中对将要生成的程序的有关信息的描述后单击OK按钮。系统就自动为我们生成一个使用MFC基本类库的应用程序的基本框架,在以后将会对这个框架的内容作详细的介绍。如<a href="01_9_16_4t9.jpg"><font color="#3300FF">图1.9</font></a>所示。</li>
</ul>
</td>
</tr></table>
<table width=100% ><tr>
<td class=a14> 接下来介绍VC集成环境中提供的一个很重要的工具CLASSWIZARD,它主要是用来管理程序中的对象和消息的,这个工具对于MFC编程显得尤为重要。
单击VIEW菜单的CLASSWIZARD项,就可以运行MFC CLASSWIZARD,在这个对话框中就可以对程序中的对象和消息进行管理了。如<a href="01_9_16_4t10.jpg"><font color="#3300FF">图1.10</font></a>所示。</td>
</tr></table>
<table width=100% ><tr><td class=a14>
在对话框中的MESSAGE MAPS标签下,PROJECT栏中的内容代表当前程序的名字。CLASSWNAME下拉列表框列出的就是程序当前用到的所有类的名字,在MESSAGE一栏中列出的就是一个选中的类所能接收到的所有的消息,在WINDOWS程序设计中,消息是个极为重要的概念,用户通过窗口界面的各种操作最后都转化为发送到程序中的对象的各种消息,下面就向您介绍在WINDOWS程序设计中最常用的一些消息:</td></tr></table>
<table width=100% >
<tr>
<td class=a14><i> 1 窗口消息:WM_CREATE,WM_DESTROY,WM_CLOSE</i></td>
</tr>
</table>
<table width=100% ><tr><td class=a14>
我们创建一个窗口对象的时候,这个窗口对象在创建过程中收到的就是WM_CREATE消息,对这个消息的处理过程一般用来设置一些显示窗口前的初始化工作,如设置窗口的大小,背景颜色等,WM_DESTROY消息指示窗口即将要被撤消,在这个消息处理过程中,我们就可以做窗口撤消前的一些工作。WM_CLOSE wm_close消息发生在窗口将要被关闭之前,在收到这个消息后,一般性的操作是回收所有分配给这个窗口的各种资源。在windows系统中资源是很有限的,所以回收资源的工作还是非常重要的。</td></tr></table>
<table width=100% >
<tr>
<td class=a14><i> 2 键盘消息:WM_CHAR,WM_KEYDOWN,WM_KEYUP</i></td>
</tr>
</table>
<table width=100% ><tr><td class=a14>
这三个消息用来处理用户的键盘数据,当用户在键盘上按下某个键的时候,会产生WM_KEYDOWN消息,释放按键的时候又回产生WM_KEYUP消息,所以WM_KEYDOWN与WM_KEYUP消息一般总是成对出现的,至于WM_CHAR消息是在用户的键盘输入能产生有效的ASCII码时才会发生。这里特别提醒要注意前两个消息与WM_CHAR消息在使用上是有区别的。在前两个消息中,伴随消息传递的是按键的虚拟键码,所以这两个消息可以处理非打印字符,如方向键,功能键等。而伴随WM_CHAR消息的参数是所按的键的ASCII码,ASCII码是可以区分字母的大小写的。而虚拟键码是不能区分大小写的。</td></tr></table>
<table width=100% >
<tr>
<td class=a14><i> 3 鼠标消息:WM_MOUSEMOVE,WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBCLICK,WM_RBUTTONDOWN,
WM_RBUTTONUP,WM_RBUTTONDBCLICK</i></td>
</tr>
</table>
<table width=100% ><tr><td class=a14>
这组消息是与鼠标输入相关的,WM_MOUSEMOVE消息发生在鼠标移动的时候,剩余的六个消息则分别对应于鼠标左右键的按下、释放、双击事件,要指出的是WINDOWS系统并不是在鼠标每移动一个像素时都产生MOUSEMOVE消息,这一点要特别注意。</td></tr></table>
<table width=100% >
<tr>
<td class=a14><i> 4 另一组窗口消息:WM_MOVE , WM_SIZE , WM_PAINT </i></td>
</tr>
</table>
<table width=100% ><tr><td class=a14>
当窗口移动的时候产生WM_MOVE 消息,窗口的大小改变的时候产生WM_SIZE消息,而当窗口工作区中的内容需要重画的时候就会产生WM_PAINT消息。</td></tr></table>
<table width=100% >
<tr>
<td class=a14><i> 5 焦点消息WM_SETFOCUS,WM_KILLFOCUS</i></td>
</tr>
</table>
<table width=100% ><tr><td class=a14>
当一个窗口从非活动状态变为具有输入焦点的活动状态的时候,它就会收到WM_SETFOCUS消息,而当窗口失去输入焦点的时候它就会收到WM_KILLFOCUS消息。</td></tr></table>
<table width=100% >
<tr>
<td class=a14><i> 6 定时器消息:WM_TIMER</i></td>
</tr>
</table>
<table width=100% ><tr><td class=a14>
当我们为一个窗口设置了定时器资源之后,系统就会按规定的时间间隔向窗口发送WM_TIMER消息,在这个消息中就可以处理一些需要定期处理的事情。</td></tr></table><table width=100% ><tr><td class=a14>
最后要指出的一点是,在WINDOWS环境下,消息的来源是多方面的,最常见的是用户的操作产生消息,系统在必要的时候也会向程序发送系统消息,其他在运行中的程序也可以向程序发送消息。此外,在程序的内部,也可以根据需要在适当的时候主动产生消息,比如主动产生WM_PAINT消息以实现需要的重画功能。</td></tr></table><table width=100% ><tr><td class=a14>
上面介绍了MESSAGE栏中主要的消息,在MEMBER FUNCTION一栏中列出的是目前被选中的类已经有的成员函数。这些成员函数一般说来是与这个类可以接收的消息一一对应的。也就是说,一个成员函数一般总是用来处理某个特定的消息。如果在MESSAGE栏中的某个消息在程序中需要处理,但目前还没有相应的类成员函数,比如这里选中WM_TIMER这个消息,它目前还没有相应的对应的类的成员函数,</td></tr></table><table width=100% ><tr>
<td class=a14> 单击ADD FUNCTION按钮,如<a href="01_9_16_4t11.jpg"><font color="#3300FF">图1.11</font></a>所示。</td>
</tr></table>
<table width=100% ><tr><td class=a14>
系统就自动为WM_TIMER消息在类中添加了对应的成员函数ONTIMER,单击EDITCODE按钮,可以发现系统已经自动生成了完成ONTIMER函数所需的基本代码,我们只要在这些基本代码的基础上再添加所需要的代码就可以了。</td></tr></table><table width=100% ><tr><td class=a14>
注意对话框中的ADD CLASS按钮,它用来往当前应用程序中添加一个新的类 。</td></tr></table><table width=100% ><tr>
<td class=a14> 单击后选中NEW菜单,如<a href="01_9_16_4t12.jpg"><font color="#3300FF">图1.12</font></a>所示。</td>
</tr></table>
<table width=100% ><tr>
<td class=a14> 系统弹出了NEW CLASS对话框用于生成一个新的类。在这个对话框中需要为类起个名字,设置类文件的名字,另外还要在BASE
CLASS一栏 的下拉列表框中选择某个已有的类作为基类,设好需要的信息后单击OK就生成了一个新的类。如<a href="01_9_16_4t13.jpg"><font color="#3300FF">图1.13</font></a>所示。</td>
</tr></table>
<table width=100% ><tr><td class=a14>
CLASS WIZARD还有一些很强大的功能,这里就不再详细介绍,你会在不断的学习中慢慢地了解和掌握。</td></tr></table><table width=100% ><tr><td class=a14>
最后介绍一下集成环境提供的一个重要工具RESOUCR EDITOR,也就是资源编辑器。在VC开发的应用程序中要用到大量的位图,菜单,工具条,对话框等各种资源。这些资源对于程序而言是相对独立的,所以可以对它们进行单独的编辑,然后使用在程序中。而RESOUCE EDITOR正是为编辑资源提供了一种可视化的开发方法。极大地减轻了程序员的负担。</td></tr></table><table width=100% ><tr><td class=a14>
单击FILE菜单的OPEN菜单项,然后在对话框中选择打开TEST.RC文件,就可以开始使用资源编辑器了。在左边的工作区中按类型列出了程序中用到的所有的资源,双击其中的某个类型,比如双击MENU资源,MENU目录的下面列出的就是系统已经有的MENU类型的资源,选中其中一个并双击,在右边的工作区中列出了这个资源当前的样子,我们就可以在工作区中对资源进行可视化的编辑和修改了。</td></tr></table>
<table width=100% ><tr><td class=a14>
</td></tr></table><table width=100% ><tr>
<td class=a14> 如何添加一个资源呢?单击INSERT菜单,选中RESOURCE菜单项,系统弹出INSERT RESOURCE对话框。<a href="01_9_16_4t14.jpg"><font color="#3300FF">如图1.14</font></a>。</td>
</tr></table>
<table width=100% ><tr>
<td class=a14> 在图1.14这个对话框,在这个对话框中选中一种资源类型,比如选择CURSOR类型,然后单击NEW按钮。在左边的工作区中就出现了我们新生成的资源的标识符,双击这个标识符,在右边的工作区中就可以对这个新的指针形状资源进行可视化编辑了。<a href="01_9_16_4t15.jpg"><font color="#3300FF">如图1.15</font></a>。</td>
</tr></table><table width=100% ><tr><td class=a14>
通过这部分内容的介绍,相信您已经对使用VISUAL C++开发MFC应用程序的</td></tr></table>
<table width=100% ><tr><td class=a14>
基本步骤有了认识。在下一章的内容当中,我们将结合WINDOWS的工作原理,详细地向您解释MFC类库的基本结构,以及MFC应用程序的基本框架——文档/视图结构。</td></tr>
</table><br>
<style>.a1{font-size:1}</style>
<table width=100% ><tr><td align=right>(网页编辑:<a href='mailto:liu_yang@ccw.com.cn'>风之翼</a>)</td></tr></table>
</td><td class=a1 bgcolor=#f46240> </td>
<td valign=top width=138 align=right><table width=98% ><tr><td>
<form action='/app/gsearch1.asp' name=pdn><table width=100% ><tr><td>应用与方案
频道全文检索</td></tr>
<tr><td><input type="text" name="textfile" size=15 value=频道内检索 onfocus="this.value=''">
<input border=0 src="../../../../../images/jian.gif" name="I1" type="image" align=absmiddle>
</td></tr>
</table>
</form>
<form name=srch action="/search/which.asp" method=post onsubmit="JavaScript:return chk()">
<table width=100% >
<tr><td><select size="1" name="func">
<option selected value="2">主题检索</option>
<option value="1">周报全文检索</option>
<option value="3">模糊词检索</option>
</select></td></tr>
<tr><td><input type="text" name="SrchStr" size=15 value="输入待检索的词"
onfocus="this.value=''">
<input src="../../../../../images/jian.gif" name="I1" type="image" align="absMiddle" border=0>
</td></tr>
</table>
<script language="JavaScript">
function chk()
{if (!document.srch.SrchStr.value){
alert("请输入需检索的词!");
document.srch.SrchStr.focus();
return false;
}
else{if (document.srch.SrchStr.value.length>30){
alert("检索的词请不要超过30个字符!");
document.srch.SrchStr.focus();
return false;
}
}
}
</script></form>
<table width=100% ><tr><td class=f colspan=2><b>相关文章</b></td></tr>
<tr><td valign=top><IMG SRC=../../../../../img2/jiao.gif></td><td><a href='01_9_16_3.asp.html'>1.2 MFC编程特点</a></td></tr>
<tr><td valign=top><IMG SRC=../../../../../img2/jiao.gif></td><td><a href='01_9_16_2.asp.html'>1.1 理解VC工程</a></td></tr>
<tr><td valign=top><IMG SRC=../../../../../img2/jiao.gif></td><td><a href='../wenda/01_9_16_4.asp.html'>Visual C++ 编程问答(四)</a></td></tr>
<tr><td valign=top><IMG SRC=../../../../../img2/jiao.gif></td><td><a href='../wenda/01_9_16_3.asp.html'>Visual C++ 编程问答(三)</a></td></tr>
<tr><td valign=top><IMG SRC=../../../../../img2/jiao.gif></td><td><a href='../wenda/01_9_16_2.asp.html'>Visual C++ 编程问答(二)</a></td></tr>
</table>
</td></tr></table></td></tr></table><br>
<table align=center width=680><tr><td align=right>
<form name=mail method=post action='/pub/subMail.asp' onsubmit='JavaScript: return chkField(this)'>
<INPUT type='hidden' name='rec' value='24265'>
您的姓名:<INPUT type="text" name=myName size=10>
您朋友的E-mail:<INPUT type="text" name=friendMail size=10>
<INPUT type="submit" value="推荐给好友">
</form>
</td></tr>
<tr><td align=right>
<b>[<a href="javascript:window.close()">关闭窗口</a>]</b>
</td></tr>
</table>
<script language="javascript">
function chkField(fmObj)
{if (!fmObj.friendMail.value){
alert("请输入您朋友的E-mail!");
fmObj.friendMail.focus();
return false;
}
return true;
}
</script>
<table align=center width=680>
<tr><td><hr size=1 width=660 color=#f46240></td></tr>
</table><br>
<p align=center>Copyright(C) ccw.com.cn,All rights reserved</p>
<p align=center><b>中国计算机世界出版服务公司版权所有</b></p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -