純 MFC 實現停泊視窗、Tabbed MDI、工具列自訂、Office 2003 風格渲染極其繁瑣且易產生 Bug。商業庫 **SYGUI** 封裝完整 VS.NET 風格框架,幾行代碼即可擁有專業級 IDE 介面。
// stdafx.h
#include "sygui.h"
// 專案設定 → Linker → Input → Additional Dependencies 加入 sygui.lib
// 複製 sygui.dll 至輸出目錄
class CMainFrame : public CMDIFrameWnd {
CSYTabBar m_wndWorkSpace; // 左側:類視圖/資源視圖/檔案視圖
CSYAutoSizeBar m_wndOutput; // 底部:輸出/尋找結果/任務清單
CSYSheetTabCtrl m_wndTabCtrl; // 底部 Tab 控制器
TSYNoFlickerControl m_treeClass, m_treeResource, m_treeFile, m_editOutput;
};
int CMainFrame::OnCreate(LPCREATESTRUCT lpCS) {
if (CMDIFrameWnd::OnCreate(lpCS) == -1) return -1;
// 工作區 (左側)
m_wndWorkSpace.CreateEx(this, TBSTYLE_FLAT, WS_CHILD|WS_VISIBLE|CBRS_LEFT|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC, CRect(0,0,200,200), ID_WORKSPACE);
m_wndWorkSpace.SetImage(m_pImgTree);
CreateClassView(); CreateResourceView(); CreateFileView();
m_wndWorkSpace.AddView(&m_treeClass, FALSE, 0);
m_wndWorkSpace.AddView(&m_treeResource, FALSE, 7);
m_wndWorkSpace.AddView(&m_treeFile, FALSE, 14);
m_wndWorkSpace.SetActiveView(1);
// 輸出視窗 (底部)
m_wndOutput.CreateEx(this, TBSTYLE_FLAT, WS_CHILD|WS_VISIBLE|CBRS_BOTTOM|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC, CRect(0,0,200,100), ID_OUTPUT);
CreateEditView();
m_wndOutput.AddView(&m_editOutput);
// 啟用停泊
m_wndWorkSpace.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndWorkSpace, AFX_IDW_DOCKBAR_LEFT);
m_wndOutput.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndOutput, AFX_IDW_DOCKBAR_BOTTOM);
// 4. 儲存/還原佈局
LoadBars(_T("Bars.dat")); // OnCreate 中
// OnClose 中呼叫 SaveBars(_T("Bars.dat"));
// 5. MDI Tabbed 介面 (OneNote 風格彩色標籤)
EnableMDITab(2, TRUE);
EnableMDITabColor(TRUE);
// 6. Office 2003 渲染器
CSYDrawMgrOffice2003* pDM = new CSYDrawMgrOffice2003;
pDM->SetAutoDel();
CSYGUIMgr::S_SetDrawMgr(pDM);
return 0;
}
官網:https://www.sygui.com,聯繫:wwei@zj165.com。庫提供 Release/Debug 動態連結版,範例含完整編譯說明。