Menuitem (CCmdUI* pCmdUI)
{
pCmdUI->SetRadio(m_nMenuItemChosen==2);
}
菜单项被单选选中的效果如图3-19 所示。
图3-19 单选选中的菜单项Menu1
注意,SetRadio()函数和SetCheck()函数的惟一区别是标题前面画的是圆点,而不是小勾,
系统并没有如同对话框的单选框控件一样提供内部的处理程序使得在同一列菜单中只有惟一
的菜单项被选中,需要程序中自行处理。
枫叶文学网www.fywxw.com
第3 章 菜单与加速键
·57·
? SetText()
SetText 函数用于设置菜单项的标题。其原型为:
virtual void SetText(LPCTSTR lpszText);
参数lpszText 用于设置菜单项的新标题。下面的代码根据标志m_nColor 设置某个菜单项
的标题:
void CMainFrcom::OnUpdateMenuitem (CCmdUI* pCmdUI)
{
if (m_nColor=1)
pCmdUI->SetText("Red");
else
pCmdUI->SetText("Blue");
}
3.3.2 添加弹出式菜单的处理函数
弹出式菜单是指单击鼠标右键在鼠标光标旁出现的活动菜单,如图3-20 所示。弹出式菜
单给与程序使用者一个快捷的访问菜单的方式,在Windows 程序界面设计中十分常见。本节
就介绍如何创建这种类型的菜单。
图3-20 弹出式菜单
1.动态创建菜单对象
弹出式菜单由于不像普通菜单一样可以在程序运行前预先装入,因此都是动态创建的。
弹出式菜单一般都是由单击鼠标右键产生的,故需要在鼠标右键按下的消息中进行弹出式菜
单的处理。
利用ClassWizard 为一个应用程序视图类(这里命名为CSampleView)加入鼠标右键按
下的消息处理函数的过程如下:
(1)IDE 主菜单栏中依次选择“View|ClassWizard”菜单命令或者在开发环境的界面中直
接使用快捷键Ctrl+W 打开ClassWizard 对话框。
(2)单击Message Maps 选项卡,在“Class ncom”下拉列表框中选择“CSampleView”,
在“Object IDs”列表框中选择“CSampleView”列出该视图可以接收的标准Windows 消息和
控件通知消息,双击“Message”列表框中的“WM_RBUTTONDOWN”或者在其上单击左
键,然后单击“Add Function”按钮,为CSampleView 添加WM_RBUTTONDOWN 鼠标右键
按下的消息处理函数,函数名默认为OnRButtonDown。
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通