如何在 Crystal Edit 上加入 TabView

Crystal Edit 範例一開始就是 MDI 架構,所以在要加入 TabView 也比較順利 (yeahbe)

基本上下載好範例照著 CMDITabs 的 How to use 一步一步做就好了

先來看一下實作完成的結果

2014-07-04-01

 

[實作過程]

1. 加入 MDITabs.h 和 MDITabs.cpp 兩個檔案

2. 在 CMainFrm.h 中加入新 member 和 Overrides 宣告

#include "MDITabs.h"
class CMainFrame : public CMDIFrameWnd
{
// Attributes
public:
  bool m_bTop;
  bool m_bImages;

// control bar embedded members
protected:
 CMDITabs m_wndMDITabs;

//Overrides
public:
 virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
}

3. 在 CMainFrm.cpp 的 CMainFrame::OnCreate() 中加入以下程式碼

另外要注意是在 toolbars and status bars 都創建之後才建立 tab,才能正常的呈現 layout

CMainFrame::OnCreate()
{
 // After all toolbars and status bars have been set up created
 // CMDITabs must be createt at last to ensure correct layout!!!
 // ------------------------------------------------------------
 DWORD dwStyle = (m_bTop ? MT_TOP : 0) | (m_bImages ? MT_IMAGES : 0);
 m_wndMDITabs.Create(this, dwStyle);
}

4. 之後再將以下的程式加入 CMainFrame.cpp,就可以成功建置囉:)

void CMainFrame::OnUpdateFrameTitle(BOOL bAddToTitle)
{
 CMDIFrameWnd::OnUpdateFrameTitle(bAddToTitle);
 m_wndMDITabs.Update(); // sync the mditabctrl with all views
}

ps:如果想要讓檔案一開始就是最大化

就在 ChildFrm.cpp 的 PreCreateWindow() 中加入橘色的程式碼即可

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
 // TODO: Modify the Window class or styles here by modifying
 // the CREATESTRUCT cs
 
 // Make the child frame be maximized at the initialization
 cs.style |= WS_VISIBLE|WS_MAXIMIZE;
 
 return CMDIChildWnd::PreCreateWindow(cs);
}