阅读受众需有一定MFC知识储备。

(技术支持:http://www.cnblogs.com/shuhaoc/archive/2011/06/26/cdockableform.html)

在以往很多使用CCoolBar实现窗口停靠功能,但是在VS2010中编译CCoolBar的时候会出现很多错误,我的小白也不知道如何解决。

我看到在CSDN以及其他论坛都有人发帖询问如何解决CCoolBar在VS2010 中编译错误,但是始终没有人解答。

近日偶然搜到到CDockablePane可有类似的功能,所以打算写个记录贴。记录CDockablePane的使用。

第一步: CDockablePane的简单介绍。   CDockablePane是MFC的一个类 ,至于到哪个版本的MFC才出现这个类我不清楚。

不过可以肯定的是VS2010中MFC有这个类。VC6的MFC中没有这个类,不然大家也不会在VC6中使用CCoolBar 了。

窗格是窗格的意思,Dockable是可停靠的意思。合起来就是可停靠的窗口 ,是不是和CCoolBar一样? 那太一样了,简直是一个妈生的。

估计开发CCoolBar这哥们去了微软了。

想象一下,我们实例化一个CDockbalePane的对象,然后将对话框放在里面,那是太爽了。一下子程序的窗口脉络就清晰起来。

而且后续的窗口内部的消息的处理也好办了。

第二步: CDockablePane的继承和成员。 http://msdn.microsoft.com/zh-cn/library/bb984433.aspx

继承关系如下(来自MSDN)


CObject

CCmdTarget

CWnd

CBasePane

CPane

CDockablePane

成员如下(来自MSDN)见链接

http://msdn.microsoft.com/zh-cn/library/bb984433.aspx

第三步:正式开始使用

A:使用VS2010创建一个单文档MFC程序,创建完毕之后编译。确认这一步没有出错。

B 通过类向导 创建一个继承自CDockablePane的类。
名字就叫 CMyDockablePane

创建完毕之后编译,应该是没有错误的。

C:在CMainFrame头文件中实例化一个对象,当然是CMyDockablePane的对象。

当然需要在CMainFrame头文件添加一个头文件 #include
"MyDockablePane.h"

public:

CMyDockablePane  m_MyDockablePane;

D:在CMainFrame的OnCreate函数中调用CMyDockablePane的Create函数创建窗格。

代码如下:

if (!m_MyDockablePane.Create(_T("面板"), this, CRect(0, 0, 200, 200), TRUE, 1001, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN
| CBRS_LEFT | CBRS_FLOAT_MULTI))

{

TRACE0("Failed to create LeftPane\n");

return -1;

}

m_MyDockablePane.EnableDocking(CBRS_ALIGN_ANY);

DockPane(&m_MyDockablePane);

在这个时候就可以直接编译运行了。

效果如下。

E
:调用CMyDockablePane的EnableDocking函数配置可停靠位置。

F
:调用CMyMainFrame的DockPane函数停靠此窗格。

待续

最新文章

  1. c/c++程序员必须要掌握开源项目
  2. css随记02布局
  3. ExtJS笔记 Store
  4. PHOTOSHOP CC 2015插件安装方法
  5. selenium使用等待的几种方式
  6. ubuntu Nodejs和npm的安装
  7. VS2013修改MVC4默认生成的模板
  8. Cocos开发中性能优化工具介绍之Xcode中Instruments工具使用
  9. NSBundle的使用,注意mainBundle和Custom Bundle的区别
  10. (转)介绍几个C#正则表达式工具
  11. 十七、oracle 权限
  12. 机器学习 —— 基础整理(三)生成式模型的非参数方法: Parzen窗估计、k近邻估计;k近邻分类器
  13. AMD 和 CMD 的区别
  14. Linux Rabbit的使用
  15. cannot be run because the QueueReader subsystem failed to load
  16. python之MySQL MySQLdb 推荐使用姿势,解决中文乱码
  17. 【分布式缓存系列】Redis实现分布式锁的正确姿势
  18. shell编程—运算符(五)
  19. 查看 java 中的编译的字节码文件
  20. 全局解释器锁GIL & 线程锁

热门文章

  1. C++继承具体解释之二——派生类成员函数具体解释(函数隐藏、构造函数与兼容覆盖规则)
  2. 模拟form表单请求上传文件
  3. MathType中输入不了汉字如何处理
  4. UIWindow小记
  5. selenium基础框架的封装(Python版)这篇帖子在百度关键词搜索的第一位了,有图为证,开心!
  6. 常用CGI环境变量 转自https://blog.csdn.net/acmdream/article/details/58070066
  7. python基础之2
  8. 【BZOJ3894】文理分科 最小割
  9. CSS3制作旋转导航
  10. python--get_data_from_csv_or_txt