完全可以的,我已经试验成功了.方法比较复杂
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
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