如何将CDockablePane分成两部分,就像VS2010 IDE中的“Class View”一样?
在此先感谢!如何分割CDockablePane?
0
A
回答
2
延长CSplitterWndEx如下一个非常小的类:
class CPaneSplitter : public CSplitterWndEx
{
public :
BOOL AddWindow(int row, int col, CWnd* pWin,CString clsName,
DWORD dwStyle,DWORD dwStyleEx, SIZE sizeInit);
};
以下成员添加到MyDockablePaneClass
CTreeCtrl m_wndTree
CListCtrl m_wndList
CPaneSplitter wndSplitter
MyDockablePaneClass的OnCreate如下所示:
int MyDockablePaneClass::OnCreate(LPCREATESTRUCT lp)
{
if(CDockablePane::OnCreate(lp)==-1)
return -1;
DWORD dwStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES | TVS_LINESATROOT
| TVS_HASBUTTONS |TVS_EDITLABELS;
DWORD dwStyleEx = 0;
m_wndSplitter.CreateStatic(this,2,1);
if(!m_wndSplitter.AddWindow(0,0,&m_wndTree,WC_TREEVIEW,dwStyle,
dwStyleEx,CSize(100,100)))
return -1;
dwStyle = WS_CHILD | WS_VISIBLE | LVS_ICON | LVS_SHAREIMAGELISTS;
dwStyleEx = 0;
if(!m_wndSplitter.AddWindow(1,0,&m_wndList,WC_LISTVIEW,dwStyle
,dwStyleEx,CSize(100,100)))
return -1;
if(!m_toolbar.Create(this, AFX_DEFAULT_TOOLBAR_STYLE, IDR_REFTREE))
{
TRACE0("Failed to create RefTreePane Toolbar Control\n");
return -1;
}
m_toolbar.LoadToolBar(IDR_REFTREE, 0, 0, TRUE /* Is locked */);
m_toolbar.SetPaneStyle(m_toolbar.GetPaneStyle() | CBRS_TOOLTIPS | CBRS_FLYBY);
m_toolbar.SetPaneStyle(m_toolbar.GetPaneStyle() & ~(CBRS_GRIPPER | CBRS_SIZE_DYNAMIC | CBRS_BORDER_TOP | CBRS_BORDER_BOTTOM | CBRS_BORDER_LEFT | CBRS_BORDER_RIGHT));
m_toolbar.SetOwner(this);
// All commands will be routed via this control , not via the parent frame:
m_toolbar.SetRouteCommandsViaFrame(FALSE);
return 0;
}
附加亨德勒的筛上部分如下
void MyDockablePaneClass::OnSize(UINT type,int cx,int cy)
{
CDockablePane::OnSize(type, cx, cy);
int cyTlb = m_toolbar.CalcFixedLayout(FALSE, TRUE).cy;
CRect rectClient;
GetClientRect(rectClient);
m_toolbar.SetWindowPos(NULL, rectClient.left, rectClient.top, rectClient.Width()
, cyTlb,SWP_NOACTIVATE | SWP_NOZORDER);
m_wndSplitter.SetRowInfo(0,(cy-cyTlb)/2,25);
m_wndSplitter.SetRowInfo(1,(cy-cyTlb)/2,25);
m_wndSplitter.SetWindowPos(NULL,rectClient.left
, rectClient.top + cyTlb
, rectClient.Width() , rectClient.Height() - cyTlb , SWP_NOZORDER | SWP_NOACTIVATE);
}
注意我添加处理程序,在筛上部分的处理工具栏上的定位,如果你没有一个工具栏删除代码,并承担cyTlb = 0
祝你好运
0
Class View似乎是一个CDockablePane,但是将Class View的上下划分的东西似乎不是与CDockablePanes相关的任何东西,而是分割器。 我已经成功地做到这一点用,我从CSplitterWndEx
衍生相关问题
- 1. 如何更改CDockablePane标题
- 2. 如何分割
- 3. 如何分割组
- 4. 如何分割url
- 5. 如何分割html?
- 6. 如何在关闭后显示CDockablePane
- 7. 如何在CDockablePane中放置MFC CFormView?
- 8. 如何放置CDockablePane上的CView
- 9. CDockablePane防止关闭
- 10. CDockablePane - 滑动 - 重绘
- 11. 如何分割的线
- 12. 如何分割字符串
- 13. 如何分割成线条
- 14. 如何分割一个int
- 15. 如何在Spark中分割?
- 16. 猪:如何分割阵列
- 17. 如何分割大变量?
- 18. Perl:如何分割文件?
- 19. 如何找到分割
- 20. 如何分割从HTML树
- 21. 如何分割在SQL Server
- 22. 如何分割在JavaScript
- 23. 如何分割网址?
- 24. 如何分割在基质
- 25. 如何分割EDIFACT文件?
- 26. 如何分割XAML设计
- 27. 如何分割这个XmlDocument?
- 28. 我该如何分割?
- 29. 如何分割该阵列
- 30. 程序如何分割?