欢迎来到天天文库
浏览记录
ID:41032697
大小:20.54 KB
页数:12页
时间:2019-08-14
《Visual C++编程技巧之八》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、VisualC++编程技巧之八57、为什么即使调用EnableMenuItem菜单项后,菜单项还处于禁止状态需要将CFrameWnd::m_bAutomenuEnable设置为FALSE,如果该数据成员为TRUE(缺省值),工作框将自动地禁止没有ON_UPDATE_COMMAND_UI或者ON_COMMAND的菜单项。//DisableMFCfromautomaticallydisablingmenuitems.m_bAuoMenuEnable=FALSE;//Nowenablethemenuitem.CMenu*pMenu=GetMenu();ASSERT_VALID(p
2、Menu);pMenu->EnableMenuItem(ID_MENU_ITEM,MF_BYCOMMAND
3、MF_ENABLED);58、如何给系统菜单添加一个菜单项给系统菜单添加一个菜单项需要进行下述三个步骤:首先,使用ResourceSymbols对话(在View菜单中选择ResourceSymbols...可以显示该对话)定义菜单项ID,该ID应大于0x0F而小于0xF000;其次,调用CWnd::GetSystemMenu获取系统菜单的指针并调用CWnd::Appendmenu将菜单项添加到菜单中。下例给系统菜单添加两个新的菜单项:intCMainFrame::On
4、Create(LPCREATESTRUCTlpCreateStruct){…//Makesuresystemmenuitemisintherightrange.ASSERT(IDM_MYSYSITEM&0xFFF0)==IDM_MYSYSITEM);ASSERT(IDM-MYSYSITEM<0xF000);//Getpointertosystemmenu.CMenu*pSysmenu=GetSystemmenu(FALSE);ASSERT_VALID(pSysMenu);//Addaseparatorandourmenuitemtosystemmenu.CStringStr
5、MenuItem(_T("Newmenuitem"));pSysMenu->Appendmenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING,IDM_MYSYSITEM,strMenuitem);…}现在,选择系统菜单项时用户应进行检测。使用ClassWizard处理WM_SYSCOMMAND消息并检测用户菜单的nID参数:voidCMainFrame::OnSysCommand(UINTnID,LPARAMlParam){//Determineifoursystemmenuitemwasselected.if((nID&0xF
6、FF0)==IDM_MYSYSITEM){//TODO-processsystemmenuitem}elseCMDIFrameWnd::OnSysCommand(nID,lParam);}最后,一个设计良好的UI应用程序应当在系统菜单项加亮时在状态条显示一个帮助信息,这可以通过增加一个包含系统菜单基ID的串表的入口来实现。59、如何确定顶层菜单所占据的菜单行数这可以通过简单的减法和除法来实现。首先,用户需要计算主框窗口的高度和客户区;其次,从主框窗口的高度中减去客户区、框边界以及标题的高度;最后,除以菜单栏的高度。下例成员函数是一个计算主框菜单所占据的行数的代码实现。int
7、CMainFrame::GetMenuRows(){CRectrcFrame,rcClient;GetWindowRect(rcFrame);GetClientRect(rcClient);return(rcFrame.Height()-rcClient.Height()-::GetSystemMetrics(SM_CYCAPTION)-(::getSystemMetrics(SM_CYFRAME)*2))/::GetSystemMetrics(SM_CYMENU);}60、在用户环境中如何确定系统显示元素的颜色调用SDK函数GetSysColor可以获取一个特定显示元素的
8、颜色。下例说明了如何在MFC函数CMainFrameWnd::OnNcPaint中调用该函数设置窗口标题颜色。voidCMiniFrameWnd::OnNcPaint(){…dc.SetTextColor(::GetSysColor(m_bActive?COLOR_CAPTIONTEXT:COLOR_INACTIVECAPTIONTEXT));…}61、如何查询和设置系统参数在Windows3.1SDK中介绍过SDK函数SystemParametersInfo,调用该函数可以查询和设置系统参数,诸如按键的重复速率设
此文档下载收益归作者所有