[MFC]解决单文档创建Dock窗口出现DockPane()未定义问题
来源:互联网 发布:最小的windows系统 编辑:程序博客网 时间:2024/05/29 14:26
问题描述
近来,要编写一个用于显示处理影像的单文档程序,这个程序需要在右侧单独显示影像图层列表,并实现可停靠可浮动的特性。经过查阅资料,发现利用MFC的CDockablePane类可以实现,于是通过教程进行创建,但是在Dock实现的最后一步出现问题,也就是在CMainFrame类中的OnCreate中添加如下代码时,编译器提醒DockPane()未定义。
DockPane(&m_layers_pane);
图1 错误提示
问题原由
后来才发现,我所创建的单文档程序中的CMainFrame类的基类是CFrameWnd,而DockPane()函数是包含在CFrameWndEx类中的,也就是说,如果CMainFrame的基类能改为CFrameWndEx的话,上述问题便可解决。
解决方法
如何使CMainFrame的基类为CFrameWndEx呢?
在类视图中可以查看CMainFrame的基类,但是却无法更改,如果不嫌麻烦的话,可以参考CFrameWndEx类中DockPane()的实现代码,在CFrameWnd中自行添加实现,但无疑这种方法十分不可取。
如果不去自己实现DockPane()的功能,那只能重新创建项目,将CMainFrame的基类设置为CFrameWndEx。
在重新创建项目的时候,设置向导的最后一步是设置各个生成类的信息,但是当我想修改CMainFrame的基类时发现,这个选项是灰色的,即无法修改,如图2所示。
图2 无法修改
我想,这应该与设置向导中前面几步的设置有关,于是我返回上面几步查看,果然,在选择用户界面功能的时候,有多个选项可供选择,如图3所示,在“命令栏(菜单/工具栏/功能区)”设置中,有三个选项, 如果选择“使用经典菜单”,则在之后的“生成的类”中CMainFrame的基类便是CFrameWnd,如果选择其它两个中的一个,则CMainFrame的基类便是CFrameWndEx。这里我选择“使用菜单栏和工具栏”。
图3 命令栏方案选择
继续下一步,直到最后“生成的类”,查看CMainFrame的基类便默认为CFrameWndEx了。
图4 基类已变为CFrameWndEx类
好了,根据上面发的教程,最终可以成功创建出Dock窗口。
图5 程序创建结果
- [MFC]解决单文档创建Dock窗口出现DockPane()未定义问题
- mfc 单文档 多窗口,窗口控件刷新问题
- MFC单文档-窗口分割
- MFC单文档窗口分隔
- MFC单文档分割窗口
- 单文档mfc窗口分割
- MFC 单文档创建过程
- CAD的Dock窗口创建
- MFC单文档静态划分窗口时出现宽高度参数无效的改正方法
- MFC中单文档窗口的拆分
- MFC窗口隐藏 --对话框--单文档
- mfc 单文档分拆窗口
- MFC单文档的窗口分割
- MFC之修改单文档窗口标题
- MFC 单文档程序初始化最大窗口
- MFC 单文档窗口最大化显示
- MFC单文档视图拆分窗口
- MFC单文档设定窗口大小固定
- 排序算法总结一(JavaScript)
- 动态规划详解
- Pixy通过TTL转USB与电脑串口调试助手显示坐标
- 【河南省多校联萌(二)haut A】
- Maven聚合、Maven仓库jar包以及Spring+MyBatis+JUnit+Maven整合测试的搭建过程
- [MFC]解决单文档创建Dock窗口出现DockPane()未定义问题
- 数据库SQL优化大总结之 百万级数据库优化方案
- Ax=0
- Android内核学习笔记—Binder分析
- 如何将一个PDF文件页面进行的拆分为多个PDF文件
- LeetCode过程中遇到的代码错误
- 基于Windows/Linux混合搭建Docker集群架构
- PDFBOX将PDF转图片(PNG背景透明)
- Dubbo入门实战(一)