
vc 制作菜单 menu.ppt
21页vc 制作菜单 menu10 11 23• 选择资源面板,在Menu(菜单)节点下,双击IDR_MAINFRAME 页节点,• 在编辑区就会将当前应用程序的菜单打开如图所示该菜单是由MFC应用程序框架所提供的初始菜单我们要修改此菜单,添加我们所需要的菜单项修改菜单• 在修改菜单之前,我们先了解一些菜单编辑的相关知识我们都知道,Windows 的菜单是一种分级菜单,我们在菜单编辑区中用鼠标选择“文件(F)”菜单项,会打开该菜单项的下级菜单• 如图所示我们可以称“文件(F)”菜单项为第一级菜单,而其下级菜单为第二级菜单,如果第二级菜单还有下级菜单,选择该第二级菜单,其下级菜单会自动打开,这些菜单就是第三级菜单,以此类推选中菜单项后可以按按“Delete”键将修改菜单• 该菜单项删除,如果该菜单项有下级菜单,这些下级菜单将同时被删除,所以在删除具有下级菜单的菜单项之前,系统会进行讯问是否删除,选择“确定”将会进行删除• 初始菜单中的“文件(F)”和“编辑(E)”两个第一级菜单在我们的应用程序中是不需要的,我们可以将这两个一级菜单删除。
修改菜单• 我们注意到在一级菜单项“帮助(H)”右侧有一个虚线矩形框,此处就是用来添加菜单项的,因为它在一级菜单栏上,所以添加的是一级菜单• 同样的,在“文件(F)”菜单项下的二级菜单“退出(X)”下,也有一个虚线矩形框,此处也可以添加菜单项,只是此处添加的是二级菜单修改菜单• 用鼠标双击虚线矩形框,会出现“Menu Item Properties”(菜单项属性)话框该对话框用于设置菜单项属性,如果双击的是一个已经存在的菜单项,则该对话框显示该菜单项的各种属性Separator”复选框• “Separator”复选框选中该复选框,菜单项将变成一条菜单分隔线,此时除“Caption”外,其它属性将都不能进行设置,而“Caption”虽然可以输入,但是一旦在“Caption”中输入值,则“Separator”复选框的选择将自动取消Pop-up”复选框• 我们在当前打开的菜单项属性对话框中选择“Pop-up”复选框,并在“Caption”输入框输入“绘图函数”,关闭对话框,我们将看到“绘图函数”一级菜单已经创建• 同时在该菜单项下有一个虚线矩形框,我们可以双击它来输入下级菜单。
如图 所示“LineTo”三级菜单• 双击图中“线形绘图函数”菜单项右侧的虚线矩形框,在打开的菜单项属性对话框中,不选择“Pop-up”复选框,在“Caption”输入框输入“LineTo”,• 在“ID”下拉输入框中输入“ID_DRAW_LINETO”,然后关闭对话框,这样就创建了“LineTo”三级菜单如图所示二级菜单• 按照上述方法,可以将我们所需要的菜单项创建出来,二级菜单项输入Caption”,并且选择“Pop-up”复选框,三级菜单项不选择“Pop-up”复选,输入“Caption”和“ID”,具体值在菜单结构表中已经列出ClassWizard(类向导)• 此时我们运行应用程序,可以看到应用程序菜单已经是我们所创建的了但是各菜单项都处于灰色不可用状态,这是因为我们还没有为各菜单项连接处理函数• 下面我们将用ClassWizard(类向导)为菜单项来连接处理函数ClassWizard• 使用ClassWizard 为菜单项连接处理函数• 在Visual Studio C++ 6.0 开发环境中,选中“View”菜单下的“ClassWizard”菜单项,或者按“Ctrl+W”的快捷键组合,将出现“MFC ClassWizard”(MFC类向导)对话框。
Class name• 我们在“Class name:”下拉框中选择CDrawTestView 类,然后在“Object•IDs:”列表框中选中ID_DRAW_LINETO,• 这是为我们刚才创建的菜单中的•“LineTo”三级菜单所设置的ID在“Object IDs:”列表框中我们可以看到所•设置的所有IDMember functions• 选中ID_DRAW_LINETO 后我们会看到在“Messages:”列表框中列出了它所支持的MFC 系统消息,也就是菜单项所支持的MFC 系统消息而在“Member functions:”列表框中列出了CDrawTestView 类当前所有的成员函数如图所示菜单项支持两种消息• 从图中可以看到, 菜单项支持两种消息: COMMAND 消息和UPDATE_COMMAND_UI 消息COMMAND 消息是鼠标单击菜单项时应用程发出的消息,UPDATE_COMMAND_UI 消息是菜单项形成或者发生改变时应程序发出的消息 • 我们是要为菜单项连接用户点击时的处理函数,所以选择COMMAND 消息。
此时,右侧的“Add Function”按钮变为可用,我们可以点此按钮,或者双击COMMAND 消息,都可以打开“Add Member Function”添加成员函数)对话框,如图 所示•, 我们编写OnDrawLineto 函数,用它来演示LineTo 绘图函数,输入如下OnDrawLinetovoid CDrawTestView::OnDrawLineto(){// TODO: Add your command handler code hereCClientDC dc(this);dc.MoveTo(100,100);dc.LineTo(400,400);}。












