• CCoolBar 的替代方案 CDockablePane。


    阅读受众需有一定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 ");
    return -1;
    }
    m_MyDockablePane.EnableDocking(CBRS_ALIGN_ANY);
    DockPane(&m_MyDockablePane);



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

    效果如下。



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

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



    待续


  • 相关阅读:
    非域,非匿名用户访问远程企业服务的详细步骤
    调用远程的企业服务的安全问题
    未能加载文件或程序集“****”或它的某一个依赖项的一种情况
    XAMPP使用非80端口的安装配置修改
    Lucene 的存储结构概述
    .NET Framework 4.0 SDK的安装
    lucene 文件存储相关的几个类
    ASP.NET 状态服务 及 session丢失问题解决方案总结
    不安装.net framework框架运行.Net 程序的方法<收藏>
    net面试题集及答案
  • 原文地址:https://www.cnblogs.com/wenluderen/p/4246619.html
Copyright © 2020-2023  润新知