Visual C++编程技巧之八

Visual C++编程技巧之八

ID:41032697

大小:20.54 KB

页数:12页

时间:2019-08-14

Visual C++编程技巧之八_第1页
Visual C++编程技巧之八_第2页
Visual C++编程技巧之八_第3页
Visual C++编程技巧之八_第4页
Visual C++编程技巧之八_第5页
资源描述:

《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,调用该函数可以查询和设置系统参数,诸如按键的重复速率设

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。