WEB开发网
开发学院软件开发VC MFC程序员的WTL指南(8)分隔窗口 阅读

MFC程序员的WTL指南(8)分隔窗口

 2006-07-22 22:03:11 来源:WEB开发网   
核心提示: 创建分割窗口由于CSplitterWindow是从CWindowImpl类派生的,所以你可以像创建其他子窗口那样创建分隔窗口,MFC程序员的WTL指南(8)分隔窗口(2),分隔窗口将存在于整个主框架窗口的生命周期,应该在CMainFrame类添加一个CSplitterWindow类型的变量

创建分割窗口

由于CSplitterWindow是从CWindowImpl类派生的,所以你可以像创建其他子窗口那样创建分隔窗口。分隔窗口将存在于整个主框架窗口的生命周期,应该在CMainFrame类添加一个CSplitterWindow类型的变量。在CMainFrame::OnCreate()函数内,你可以将分隔窗口作为主窗口的子窗口创建,然后将其设置为主窗口的客户区窗口:

LRESULT CMainFrame::OnCreate ( LPCREATESTRUCT lpcs )
{
// ...
const DWORD dwSplitStyle = WS_CHILD | WS_VISIBLE |
               WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
      dwSplitExStyle = WS_EX_CLIENTEDGE;
  m_wndSplit.Create ( *this, rcDefault, NULL,
            dwSplitStyle, dwSplitExStyle );
  m_hWndClient = m_wndSplit;
}

创建分隔窗口之后,你就可以为每个窗格指定窗口或者做其他必要的初始化工作。

基本方法

bool SetSplitterPos(int xyPos = -1, bool bUpdate = true)
int GetSplitterPos()

可以调用SetSplitterPos()函数设置分隔条的位置,这个位置表示分割条距离分隔窗口的上边界(水平分隔窗口)或左边界(垂直分隔窗口)有多少个象素点。你可以使用默认值-1将分隔条设置到分隔窗口的中间,使两个窗格大小相同,通常传递true给bUpdate参数表示在移动分隔条之后相应的改变两个窗格的大小。GetSplitterPos()返回当前分隔条的位置,这个位置也是相对于分隔窗口的上边界或左边界。

bool SetSinglePaneMode(int nPane = SPLIT_PANE_NONE)
int GetSinglePaneMode()

调用SetSinglePaneMode()函数可以改变分隔窗口的模式使单窗格模式还是双窗格模式,在单窗格模式下,只有一个窗格使可见的并且隐藏了分隔条,这和MFC的动态分隔窗口相似(只是没有那个小钳子形状的手柄,它用于重新分隔分隔窗口)。对于nPane参数可用的值是SPLIT_PANE_LEFT,SPLIT_PANE_RIGHT,SPLIT_PANE_TOP,SPLIT_PANE_BOTTOM,和SPLIT_PANE_NONE,前四个指示显示那个窗格(例如,使用SPLIT_PANE_LEFT参数将显示左边的窗格,隐藏右边的窗格),使用SPLIT_PANE_NONE表示两个窗格都显示。GetSinglePaneMode()返回五个SPLIT_PANE_*值中的一个表示当前的模式。

上一页  1 2 3 4 5 6 7  下一页

Tags:MFC 程序员 WTL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接