MFC一一框架类当中的一些操作(改变标题,设置菜单栏,工具栏)
来源:互联网 发布:数据分析在职研究生 编辑:程序博客网 时间:2024/05/17 04:59
下面介绍MFC单文档编程中,改变相应的视图所涉及到的一些框架类的操作。
(1).修改应用程序标题,一般在框架类的PreCreateWindow函数中实现
PreCreateWindow一般在窗口创建之前执行的,它的主要任务是对所要创建的窗口进行一些风格或者其他方面的初始化或者说是设置
cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE| WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_MAXIMIZE | WS_SYSMENU;//去除原有的标题属性cs.style &= ~FWS_ADDTOTITLE;cs.style &= ~FWS_PREFIXTITLE;CString strValue;GetXML("Version","CurrentVersion",strValue.GetBuffer(MAX_PATH),MAX_PATH); //从配置文件中获取当前的版本信息m_strTitle.Format(_T("TestDoc %s"),strValue);//显示到标题栏上
//设置窗口大小为整个屏幕区域CRect cRect;SystemParametersInfo(SPI_GETWORKAREA,0,(PVOID)&cRect,0); cs.cy = cRect.Height();cs.cx = cRect.Width();cs.y = 0; cs.x = 0;(2).设置菜单栏(CMenu),在OnCreate函数中实现
有时候,我们需要设置一些多样式的菜单栏,如菜单栏上有相应bitmap显示
首先,我们创建一个CImageList的成员变量,图像列表控制,用于指定Bitmap图中对应的索引号图像作为菜单栏中显示图标
HMENU CMainFrame::SetBitmapMenu(){static UINT toolbars[] ={IDR_TOOLBAR};CBitmap bitMap;bitMap.LoadBitmap(IDB_TOOLBAR);//加载图像列表的bitmap图片m_ImageList.Create(16, 16, ILC_COLORDDB|ILC_MASK, 1, 1);m_ImageList.Add(&bitMap, RGB(255,255,255));m_bitmapMenu.LoadMenu(IDR_MAINFRAME);//其中m_bitmapMenu成员是BCMenu(来源网络)类生成的对象m_bitmapMenu.LoadToolbars(toolbars, sizeof(toolbars)/sizeof(toolbars[0]));m_bitmapMenu.ModifyODMenu(NULL,ID_APP_ABOUT, &m_ImageList, 15);m_bitmapMenu.ModifyODMenu(NULL,ID_APP_HELP, &m_ImageList, 12);return(m_bitmapMenu.Detach());}接下来将自己设计好的Menu设置到菜单栏上。
CMenu *pMenu = new CMenu;HMENU hMenu = SetBitmapMenu(); pMenu = CMenu::FromHandle(hMenu);this->SetMenu(pMenu);this->UpdateWindow();(3)设置工具栏(CToolBar),在OnCreate函数中实现
工具栏一般辅助菜单栏进行应用,将一些常用菜单选项设置为工具栏,方便使用
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||!m_wndToolBar.LoadToolBar(IDR_TOOLBAR)){TRACE0("Failed to create toolbar\n");return -1; // fail to create}///////////////////////////////////////////////////m_wndToolBar.SendMessage(TB_SETIMAGELIST, 0, (LPARAM)m_ImageList.m_hImageList);m_wndToolBar.SetButtonInfo(m_wndToolBar.CommandToIndex(ID_APP_ABOUT), ID_APP_ABOUT, TBBS_BUTTON, 15);//根据位图的index选取到对应的toolbar按钮上m_wndToolBar.SetButtonInfo(m_wndToolBar.CommandToIndex(ID_APP_HELP), ID_APP_HELP, TBBS_BUTTON, 12);m_wndToolBar.SetButtonInfo(m_wndToolBar.CommandToIndex(ID_CONFIGURE_STYLE), ID_CONFIGURE_STYLE, TBBS_BUTTON, 6);m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);//设置工具栏的扩展风格DWORD dwStyle=m_wndToolBar.GetButtonStyle(m_wndToolBar.CommandToIndex(ID_CONFIGURE_STYLE));//获取按钮控件的风格dwStyle|=TBSTYLE_DROPDOWN;//设置下拉风格m_wndToolBar.SetButtonStyle(m_wndToolBar.CommandToIndex(ID_CONFIGURE_STYLE),dwStyle);接下来调用UpdateToolBar()函数用于显示Toolbar
void CMainFrame::UpdateToolBar(BOOL bRecalc) //bRecalc用于指示是否重新计算尺寸{CRect rect;SIZE sizeButton,sizeImage;static char *gsTextTips[]={"Style","","Help","","About",""};if(bRecalc)//重新计算{m_sizeMax.cx = 0;m_sizeMax.cy = 0;for (int i=0;i<m_wndToolBar.GetCount();i++)//取得按钮控件最大尺寸{m_wndToolBar.SetButtonText(i,gsTextTips[i]);m_wndToolBar.GetItemRect(i,rect);m_sizeMax.cx = __max(rect.Size().cx, m_sizeMax.cx);m_sizeMax.cy = __max(rect.Size().cy, m_sizeMax.cy);}m_bTextTips=TRUE;}//设置按钮尺寸sizeButton.cx = m_bTextTips ? m_sizeMax.cx : 23;sizeButton.cy = m_bTextTips ? m_sizeMax.cy : 22;sizeImage.cx = 16;sizeImage.cy = 15;m_wndToolBar.SetSizes(sizeButton,sizeImage);//设置按钮大小以及其上位图大小ShowControlBar(&m_wndToolBar,TRUE,FALSE);//显示工具栏m_wndToolBar.RedrawWindow();//重绘工具栏}
另外分享几篇关于工具栏ToolBar介绍相关文章及实例,可以参考:
http://www.tiansin.com/thread-295.html
http://www.vcchar.com/thread-806-1-1.html
http://www.cppblog.com/wlwlxj/archive/2006/11/09/14897.html
阅读全文
0 0
- MFC一一框架类当中的一些操作(改变标题,设置菜单栏,工具栏)
- MFC去掉菜单栏和工具栏及修改窗口标题的操作
- 在mfc中,设置一个隐藏菜单栏,工具栏,状态栏,最大化、最小化、关闭按钮的窗体
- 在mfc中,如何设置一个隐藏菜单栏,工具栏,状态栏,最大化、最小化、关闭按钮的窗体
- QT 菜单栏,工具栏操作
- 在mfc中,如何设置一个隐藏菜单栏,工具栏,状态栏,最大化、最小化、关闭按钮的窗体 分类: MFC
- MFC处理菜单栏和工具栏
- MFC基于对话框的菜单栏,工具栏和状态栏的创建
- MFC的对话框工具栏、状态栏、和菜单栏的编辑
- MFC 2008,新的用户界面(3)- 菜单栏、工具栏和状态栏
- MFC:去掉工具栏边框(与菜单栏之间的分割线)
- VC6 单文档 替换MFC默认的菜单栏和工具栏
- MFC取消MDI、SDI的状态栏、工具栏、菜单栏
- MFC 2008,新的用户界面 - 3 - 菜单栏、工具栏和状态栏
- 改变MFC程序的标题
- ionic 设置标题或菜单栏的属性
- Hibernate4在开发当中的一些改变
- Hibernate4在开发当中的一些改变
- TwoSum(算法分析课week1)
- 大数据Hive的案例、参数、动态分区、分桶、视图、索引、运行方式、权限管理、Hive的优化_03_03
- buildroot
- Python切片赋值操作
- 指向函数的指针
- MFC一一框架类当中的一些操作(改变标题,设置菜单栏,工具栏)
- linux+apache+mysql+php环境搭建配置多个网站(全程实操)
- HDOJ 1394 Minimum Inversion Number(线段树+逆序数)
- Java的21个核心技术点,你知道吗?
- 详解Java中ArrayList、Vector、LinkedList三者的异同点
- POJ2996 Help Me with the Game(未完待续,模拟)
- vector & list
- 重排序列(水题)
- 层次聚类--R