MFC有关菜单的编程实现

本文深入探讨了MFC中的菜单编程,包括静态菜单操作如标记、默认设置、图形标记、禁用与加载,以及动态菜单操作如添加、插入、删除和响应函数的实现。此外,还讲解了MFC的菜单命令更新机制和动态添加菜单项的命令响应处理。
摘要由CSDN通过智能技术生成

本节学习了菜单编程方面的内容,包括静态菜单操作和动态菜单操作两大块。

静态菜单操作包括标记菜单,默认菜单,图形菜单的实现原理及具体实现,快捷弹出菜单的实现方式及其命令响应函数的添加。

动态菜单操作主要包括:如何让程序运行时产生新的子菜单和菜单项,以及如何手工地为这些新产生的菜单项命令添加消息响应处理函数。

本节还实现了如何在顶层窗口,即框架类窗口中截获对菜单命令的处理。

通过这节还应该了解Windows中消息的分类,以及菜单命令消息的路由过程,进一步熟悉Cstring类的应用。

 

静态菜单操作

//1.标记菜单(2种方法)

       //GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION| MF_CHECKED);     //通过菜单项的索引设置一个标记菜单

       //GetMenu()->GetSubMenu(0)->CheckMenuItem(ID_FILE_NEW,MF_BYCOMMAND| MF_CHECKED);  //通过菜单项的标识设置一个标记菜单

 

       //2.默认菜单

       //GetMenu()->GetSubMenu(0)->SetDefaultItem(1,TRUE);      //通过菜单项的索引设置一个默认菜单,最后一个参数为TRUE

       //GetMenu()->GetSubMenu(0)->SetDefaultItem(ID_FILE_OPEN,FALSE);   //通过菜单项的标识设置一个默认菜单最后一个参数为FALSE

       //GetMenu()->GetSubMenu(0)->SetDefaultItem(5,TRUE);  //设置打印菜单项时索引时5,不是4,因为分隔栏在子菜单中是占据索引位置的

       //一个子菜单只能有一个默认菜单项

 

       //3.图形标记菜单

 

       /*CStringstr;

       str.Format("x=%d,y=%d",GetSystemMetrics(SM_CXMENUCHECK),GetSystemMetrics(SM_CYMENUCHECK));

       //CString类的Format函数可以按照一定的格式把内容格式化,然后将结果保存到CString类型的字符串对象中

       //GetSystemMetrics()函数可以取得窗口上各种资源的尺寸,根据参数决定

       //根据取得的尺寸信息可知,位图大小应该是13*13;

       MessageBox(str);*/

 

       //m_bitmap.LoadBitmap(IDB_BITMAP1);

       //GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(0,MF_BYPOSITION,&m_bitmap,&m_bitmap);//运行程序发现不显示位图,

       //原因在于位图太大,只是显示了位图左上角的一小部分内容。

 

       //4.禁用菜单项

   //GetM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值