如何將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. 程序如何分割?