本节学习了菜单编程方面的内容,包括静态菜单操作和动态菜单操作两大块。
静态菜单操作包括标记菜单,默认菜单,图形菜单的实现原理及具体实现,快捷弹出菜单的实现方式及其命令响应函数的添加。
动态菜单操作主要包括:如何让程序运行时产生新的子菜单和菜单项,以及如何手工地为这些新产生的菜单项命令添加消息响应处理函数。
本节还实现了如何在顶层窗口,即框架类窗口中截获对菜单命令的处理。
通过这节还应该了解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