• 在CDockablePane中嵌入对话框


    CDockablePane类可以用来创建停靠栏。可以将其他控件集成到CDockablePane的派生类中。下文描述如何将对话框集成到CDockablePane中。

    a)      创建单文档应用程序;

    b)     加入对话框资源,注意,对话框必须有Child属性,Border设置为None

    c)      为对话框创建类CDialogEmbeded,基类为CDialogEx

    d)     创建派生自CDockablePane的类CDockableDlg

    e)     为CDockableDlg添加CDialogEmbeded类型的成员变量m_dlgEmbeded;

    f)      重载CDockableDlg的OnCreate函数

       int CDockableDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)

       {

          if (CDockablePane::OnCreate(lpCreateStruct) == -1)

               return -1;

          // TODO:  在此添加您专用的创建代码

    m_dlgEmbeded.Create(CDialogEmbeded::IDD,this);

    m_dlgEmbeded.ShowWindow(SW_SHOW);

    return 0;

      }

    g)     重载CDockableDlg的OnSize函数

    void CDockableDlg::OnSize(UINT nType, int cx, int cy)

    {

    CDockablePane::OnSize(nType, cx, cy);

    // TODO:  在此添加您专用的创建代码

    if(m_dlgEmbeded.GetSafeHwnd())

    {

         CRect rect;

         GetClientRect(&rect);

         m_dlgEmbeded.MoveWindow(rect);

        }

      }

    h)     重载CDockableDlg的OnDestory函数

    void CDockableDlg::OnDestroy()

    {

       CDockablePane::OnDestroy();

       // TODO: 在此处添加消息处理程序代码

       m_dlgEmbeded.DestroyWindow();

    }

    i)       在框架类中添加CDockableDlg对象m_dockDlg

    j)       在CMainFrame类的OnCreate函数中添加以下代码,Create函数里面的1001是这个停靠栏的ID,这里是随便指定的一个数值,只要不和其他已用资源重复即可,真正应用的时候,以在字符串表中添加一个ID

    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

    {

       …

       EnableDocking(CBRS_ALIGN_ANY);

       m_dockDlg.Create("Dock Dlg",this,CRect(0,0,200,200),TRUE,1001,

       WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|CBRS_LEFT|CBRS_FLOAT_MULTI);

       m_dockDlg.EnableDocking(CBRS_ALIGN_ANY);

       DockPane(&m_dockDlg);

       return 0;

    }

    k)      疑问:m_dockDlg什么时候销毁?

  • 相关阅读:
    【codeforces 411B】Multi-core Processor
    【codeforces 314C】Sereja and Subsequences
    【hdu 1890】Robotic Sort
    【图灵杯 A】谷神的赌博游戏
    【图灵杯 J】简单的变位词
    【图灵杯 F】一道简单的递推题(矩阵快速幂,乘法模板)
    【图灵杯 E也即POJ 3368】简单的RMQ
    【codeforces 496E】Distributing Parts
    【codeforces 553C】Love Triangles
    Diffie-Hellman Key Exchange – A Non-Mathematician’s Explanation
  • 原文地址:https://www.cnblogs.com/canger/p/4156535.html
Copyright © 2020-2023  润新知