本文详细介绍用WTL实现类似flashget的界面
本程序是利用WTL的 CSplitterWindow 和 CHorSplitterWindow 把 CMainFrame 分隔而成。
CSplitterWindow 垂直分隔
CHorSplitterWindow 水平分隔因为目前还不是很清楚 CSplitterWindow 扩展是怎么做,所以本代码是用很笨的方法,利用CSplitterWindow 的 SetSinglePaneMode 接口来实现的。
bool SetSinglePaneMode(int nPane = SPLIT_PANE_NONE)调用SetSinglePaneMode()函数可以改变分隔窗口的模式使单窗格模式还是双窗格模式,在单窗格模式下,只有一个窗格使可见的并且隐藏了分隔条,这和MFC的动态分隔窗口相似(只是没有那个小钳子形状的手柄,它用于重新分隔分隔窗口)。对于nPane参数可用的值是SPLIT_PANE_LEFT,SPLIT_PANE_RIGHT,SPLIT_PANE_TOP,SPLIT_PANE_BOTTOM,和SPLIT_PANE_NONE,前四个指示显示那个窗格(例如,使用SPLIT_PANE_LEFT参数将显示左边的窗格,隐藏右边的窗格),使用SPLIT_PANE_NONE表示两个窗格都显示。
主要原理如下:
1、把窗口分隔成左右两部分(一个TreeView和一个水平分隔条);
GetClientRect( &rcDefault );
m_hWndClient = m_VertSplitter.Create( m_hWnd, rcDefault, NULL,
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
m_VertSplitter.m_bFullDrag = false;
// create the left menu treeview
m_VertSplitter.GetClientRect( &rcDefault );
m_LeftMenuTree.Create( m_VertSplitter, rcDefault, NULL,
WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS |
TVS_HASLINES | TVS_LINESATROOT | TVS_SHOWSELALWAYS |
TVS_HASBUTTONS | WS_EX_CLIENTEDGE,
0,(HMENU)IDC_LEFT_MENUTREE);
InitLeftTreeView(&m_LeftMenuTree);
//create the horizontal splitter
m_HorzSplitter.Create( m_VertSplitter, rcDefault, NULL,
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN );
m_HorzSplitter.m_bFullDrag = false;
m_VertSplitter.SetSplitterPanes( m_LeftMenuTree, m_HorzSplitter );2、把右边水平分隔成上下两部分(两个垂直分隔条);
作者:TanXin 责编:豆豆技术应用
正在加载评论...