MFC基础知识(二)——工具条、菜单栏常见问题及鼠标形状设置
来源:互联网 发布:智睿高清网络电视安卓 编辑:程序博客网 时间:2024/06/08 15:23
本文主要介绍:在添加工具条和菜单栏时,根据网上的教程,有时候也会遇到一些问题,本文主要介绍几个常见问题,以及如何设置鼠标形状。
一、工具条创建及常见问题:
1.工具条的创建(网上方法)
<1>在MainFrm.h文件中声明一个工具条对象:
CMFCToolBar m_wndSelectAoiBar; //变量名自己定义<2>在MainFrm.cpp的OnCreate函数中添加工具条创建程序:
if (!m_wndSelectAoiBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE |CBRS_TOP |CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndSelectAoiBar.LoadToolBar(IDR_TOOLBAR_AOI)) {TRACE0("未能创建工具栏\n");return -1; // 未能创建}m_wndSelectAoiBar.EnableDocking(CBRS_ALIGN_ANY);//使可停靠DockPane(&m_wndSelectAoiBar);
2.存在问题:
<1>两个工具条总是横着排列:
显示上面创建的工具条,发现自己创建的工具条与自带的工具条横着排列,而不是上下并列,即使拖动使其并列,每次运行时,还会横着排列。
解决:
修改上面的创建程序,在风格设置后面,添加 ,CRect(3, 3, 3, 3), IDR_TOOLBAR_AOI),其中CRect大小可根据需要自己设:
//修改自带工具条if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,CRect(3, 3, 3, 3), theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME) ||!m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME)){TRACE0("未能创建工具栏\n");return -1; // 未能创建}//创建画多边形工具栏if (!m_wndSelectAoiBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE |CBRS_TOP |CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,CRect(3, 3, 3, 3), IDR_TOOLBAR_AOI) ||!m_wndSelectAoiBar.LoadToolBar(IDR_TOOLBAR_AOI)) //添加两个变量,CRect(3, 3, 3, 3), IDR_TOOLBAR_AOI),不然会和原工具条并排显示{TRACE0("未能创建工具栏\n");return -1; // 未能创建}m_wndSelectAoiBar.EnableDocking(CBRS_ALIGN_ANY);//使可停靠DockPane(&m_wndSelectAoiBar);
运行程序,结果如下:
注:如果出现上下排列错位,手动拖动到正确位置,以后在运行时,都是拖动后的正确位置。
如果时一个工具条在另一个左侧,可用 DockPaneLeftOf(&m_wndToolBar2, &m_wndToolBar); // 将m_wndToolBar2停靠在m_wndToolBar的左边
<2>视图的工具栏和停靠窗口中不能显示工具条名称:
点击标准下的空白,可以显示和隐藏刚刚创建的工具条。要设置工具条的名字,如果在MainFrm.cpp的OnCreate中设置,即:
m_wndSelectAoiBar.SetWindowText(_T("绘制AOI"));结果仍是空白。
解决:
(1)将MainFrm.h中定义的工具条对象,设为公用变量,即放在public:下。
(2)在工程名.cpp的 InitInstance()函数中添加如下程序:
// 主窗口已初始化,因此显示它并对其进行更新pMainFrame->ShowWindow(m_nCmdShow);pMainFrame->UpdateWindow(); //下面一行为添加程序,上面为自带程序pMainFrame->m_wndSelectAoiBar.SetWindowTextA(_T("AOI工具")); //视图中显示“AOI工具”return TRUE;}(3)运行程序:
二、菜单栏问题:
当下拉菜单有多个选项时,会出现下面情况,只有点击最下面圆圈,才能完全显示菜单选项:
解决:
视图->工具条和停靠窗口->自定义->选项 勾去菜单首先显示最近使用的命令,即可解决。
三、改变鼠标形状
重载OnSetCursor()函数,其对应的消息名称:WM_SETCURSOR,在资源视图中设计一个鼠标形状,并设置对应的ID号,然后在OnSetCursor()函数中加载所设计鼠标:
if(显示该形状鼠标条件){::SetCursor(AfxGetApp()->LoadCursor(ID号));return TRUE; //一定要返回}
- MFC基础知识(二)——工具条、菜单栏常见问题及鼠标形状设置
- MFC基础知识(七)——停靠窗口添加工具条
- mfc改变鼠标形状
- mfc改变鼠标形状
- mfc改变鼠标形状
- 如何设置MFC单文档鼠标的形状?
- 设置鼠标的形状
- swing 设置鼠标形状
- 设置鼠标形状[转]
- CButton设置鼠标形状
- VC设置鼠标形状
- 鼠标形状设置参数
- QT 鼠标形状设置
- QT 鼠标形状设置
- Java图形界面——菜单项、菜单栏、工具条
- Java图形界面——菜单项、菜单栏、工具条
- MFC 如何设置鼠标的形状 如何设置光标热区
- MFC 如何设置鼠标的形状 如何设置光标热区
- 策略模式
- 云计算不得不看的4大经典文章
- Android 信号处理面面观
- AES JAVA平台版
- asp.net上传文件的两种方法
- MFC基础知识(二)——工具条、菜单栏常见问题及鼠标形状设置
- WM_NCCALCSIZE消息处理详解
- Spring框架之Filter应用
- Xcode 升级后,常常遇到的遇到的警告、错误,解决方法(转)
- 【网络】JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求
- iOS appledoc安装与使用
- C++的精髓——虚函数
- Collection、List、Set、Map
- 对性能的看法