MFC--CDIALOGBAR停靠优先级

本文介绍了如何通过派生CFrameWnd类并调整dwDockBarMap数组来改变MFC中对话框的停靠优先级,使得LEFT和RIGHT的优先级高于TOP和BOTTOM。同时,详细说明了需要重载的四个函数:ReDockControlBar、DockControlBar、EnableDocking,以实现自定义的停靠行为。
摘要由CSDN通过智能技术生成
完全可以的,我已经试验成功了.方法比较复杂

CFrameWnd中停靠的优先顺序是由一个叫dwDockStyle的DWORD数组决定的

该数组定义如下:
const DWORD CFrameWnd::dwDockBarMap[4][2] =
{
{ AFX_IDW_DOCKBAR_TOP,      CBRS_TOP    },
{ AFX_IDW_DOCKBAR_BOTTOM,   CBRS_BOTTOM },
{ AFX_IDW_DOCKBAR_LEFT,     CBRS_LEFT   },
{ AFX_IDW_DOCKBAR_RIGHT,    CBRS_RIGHT  },
};
可以看出,TOP和BOTTOM的优先性比LEFT和RIGHT高,这就是为什么排不出你说的那种效果

现在我们从CFrameWnd派生一个类---CMainFrame,并添加数组
static const DWORD dwDockBarMap[4][2];

在cpp文件给数组赋值:
const DWORD CMainFrame::dwDockBarMap[4][2] =
{
{ AFX_IDW_DOCKBAR_TOP,      CBRS_TOP    },
{ AFX_IDW_DOCKBAR_LEFT,     CBRS_LEFT   },
{ AFX_IDW_DOCKBAR_RIGHT,    CBRS_RIGHT  },
{ AFX_IDW_DOCKBAR_BOTTOM,   CBRS_BOTTOM },
};

在这里我们把BOTTOM的优先性设置为最低,你可以根据你的需要设置优先性.

现在我们需要重载CFrameWnd的4个函数:

void ReDockControlBar(CControlBar* pBar, CDockBar* pDockBar,LPCRECT lpRect = NULL);
void DockControlBar(CContro
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值