⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sy0101.htm

📁 c语言经典教程
💻 HTM
字号:
<html>
<HEAD>
<TITLE>Visual C++与计算机接口</TITLE>
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=gb2312" > 
</HEAD>
<body>
<font color="#0000FF">使用菜单</font>
<p>
(一)实验目的:<BR>
     熟悉菜单的建立和使用方法<BR><BR>
(二)实验内容:<BR>
     建立菜单,处理菜单消息,加入执行代码<BR><BR>
(三)实验方法:<BR><BR>
  实现菜单工作一般分三步:<BR>
   ·编辑菜单资源,设置菜单属性(包括菜单名和ID);<BR>
   ·用ClassWizard自动映射菜单消息和成员函数;<BR>
   ·手工编辑成员函数,加入菜单消息处理代码。<BR><BR>
1、编辑菜单资源<BR>
  仍然使用前面生成的TestMsg程序,编辑由AppWizard自动生成的菜单资源。<BR>
  要编辑菜单资源:<BR>
  (1)选择项目工作区的ResourceView标签,切换到资源视图。<BR>
  (2)选择菜单资源类型。<BR>
  (3)选定菜单资源IDR_TESTMSTYPE,双击该项或单击鼠标右键然后在弹出菜单中选择Open选项。将弹出菜单编辑窗口,显示菜单资源IDR_TESTMSTYPE。<BR>
  (4)编辑当前菜单<BR><BR>
  要删除某个菜单项或弹出菜单,可用鼠标单击该菜单或用上下光标键来回选择,然后按Del键删除.<BR>
  要插入新菜单项,可选定窗口中的空白菜单框后按回车(或直接用鼠标双击该空白框),弹出Properties(属性)对话框。属性对话框用于输入菜单项的标题、标识符、菜单项在状态栏上显示的提示(Prompt),并为该菜单提供属性调整。<BR>
  也可以在选择一个已有的菜单项时按Ins键,以在该菜单项上方插入一个空白菜单项,然后双击该菜单项进行编辑。<BR>
  要插入一个分隔线,只需将菜单项的Seperator属性打开即可。<BR>
  Visual Studio支持鼠标拖曳调整菜单项位置。要调整菜单项位置,只需要选中某菜单项并将其拖至适当位置即可。<BR>
<p align="center"><span style="FONT-SIZE: 9pt"><img height="220" width="785" alt="菜单编辑器和属性对话框" src="sy0101.jpg" ></span></p>
<p align="center"><span style="FONT-SIZE: 9pt">图1.1.1 菜单编辑器和属性对话框</span></p>
  如上图,我们首先在“编辑”和“查看”之间加入一个弹出菜单,然后在菜单下加入以下四个菜单项,并加入一个分隔符。<p></p>
  现在关闭菜单编辑器窗口,为Message菜单增加加速键。<BR>
  要编辑加速键,选择Accelerator资源类型,双击打开IDR_MAINFRAME加速键资源。<BR>
  要删除加速键,可以直接按Del键。要增加加速键,可以按Ins键,弹出加速键属性对话框,完成加速键设置。<BR><BR>

2、用ClassWizard自动映射菜单消息和成员函数<BR>
  现在用ClassWizard为上面创建的几个菜单生成和映射消息处理成员函数。<BR>
<H4>用ClassWizard管理类和Windows消息</H4>
  ClassWizard有助于创建Windows消息和命令处理函数、创建和管理类、创建类成员变量、创建OLE Automation的方法和属性、创建数据库类以及其他一些工作。<BR>
  ClassWizard也有助于覆盖MFC类中的虚函数。先选类,再选择需要覆盖的虚函数。该过程的其余部分与消息处理是类似的。<BR>
<H4>启动ClassWizard应用程序</H4>
  从View菜单或源程序编辑窗口右键菜单中选择ClassWizard(快捷键:Ctrl +W),Developer Studio将弹出MFC ClassWizard对话框。<BR>
  该对话框包含几个标签页,提供以下选项:<BR><BR>
  ·Message Maps:管理消息和成员函数之间的映射关系。<BR>
  ·Member Variables:可以让用户加进一些数据成员,以便和各种控制进行数据交换。<BR>
  ·Automations:提供了各种特性支持OLE2.0,包括为OLE Automation增加属性、方法以及处理事件。<BR>
  ·ActiveX Events:为ActiveX控件增加属性、方法以及为ActiveX控件事件增加处理函数。<BR>
  ·Class Info:它可以让用户创建新类,以便支持对话框和各种可视类(包括控制、窗口等)。还可以从类库文件导入类到当前工程中。<BR>
<H4>Message Maps选项</H4>
  用户可以加入成员函数来处理消息,删除成员函数以及对成员函数进行编辑。<BR>
  Message Maps页包括如下控制选项:<BR><BR>
  ·Projects组合框:允许用户选择当前工作区中包含的工程。<BR>
  ·Class Name组合框:允许用户选择当前工程中的类。<BR>
  ·Objects IDs列表框:列出当前选中的类名及相关的ID。对窗口和视来说,这些ID为菜单标识符;对对话框来说,这些ID为控制框的ID。<BR>
  ·Messages列表框:列出当前所选类的可重载的虚方法以及可接收到的消息。<BR>
  ·Member Functions列表框:列出ClassName组合框中当前所选的项中所包含的所有成员函数。用户可以增加、删除成员函数,也可以对成员函数进行编辑。<BR>
  ·Add Class...按钮:它允许用户往工程里添加新类。在按钮右边有一个向下的小箭头,表明按此按钮将弹出一个菜单。菜单包含两项:New...可以新建一个类;From a type Lib用于从一个类库中导入类。<BR>
  ·Add Function按钮:它允许用户往Member Functions列表框中加进一个新的消息处理成员函数,该新增成员函数被用来响应Message Maps列表中当前所选中的消息。<BR>
  ·Delete Function按钮:用于删除Member Functions列表框中所选中的项。<BR>
  ·Edit Code按钮:它允许用户对Member Functions中所选中的项进行编辑,此时Visual Studio 将关闭MFC ClassWizard对话框,并打开相应文件,并将光标定位在函数定义的开头处。<BR><BR>

  现在就利用ClassWizard为TestMsg程序增加菜单消息和成员函数的映射。<BR>
  (1)在View菜单下选择ClassWizard,弹出MFC ClassWizard对话框。<BR>
  (2)选择Message Maps页,在Class Name下拉列表中选择CTestMsgView类。<BR>
  (3)在Object IDs中选择ID_MSG1,在Messages栏中双击COMMAND,弹出Add Member Function对话框。<BR>
  (4)对话框中给出缺省的成员函数OnMsg1,按OK接收缺省的成员函数名。<BR>
  (5)此时OnMsg1成员函数就出现在Member Functions列表框中,后面跟所映射的消息。<BR>
  (6)如此,依次为ID_MSG2、ID_MSG3增加消息处理成员函数OnMsg2、OnMsg2。<BR>
  (7)然后双击Member Functions列表中的OnMsg1,编辑OnMsg1成员函数。<BR><BR>

3、手工添加代码<BR>
  ClassWizard可以把消息映射函数自动加入相应类中,当然,具体工作还是必须由我们自己做。<BR>
    void CTestMsgView::OnMsg1() <BR>
    {<BR>
      // TODO: Add your command handler code here<BR>
      <b>CClientDC dc(this);</b><BR>
      <b>dc.TextOut(0,50,"Message1");</b><BR>
    }<BR>
  类似编辑完OnMsg2()和OnMsg3()后,就可以编译执行看看具体效果了。<BR><BR>
<p></p>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -