首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

使用 SYGUI 函式庫輕鬆實作 Visual Studio 風格介面

     編輯:關於VC++

圖:本文範例程式執行畫面

Visual Studio 風格介面(可停靠工具列、可拖曳分頁、自訂工具列按鈕/選單)若純用 MFC 手刻,不僅耗時且易產生 Bug。本文介紹使用 MFC 擴充介面庫 SYGUI 快速實作同等級介面。

環境準備

// stdafx.h
#include "sygui.h"

主要元件宣告與建立

MainFrame.h

CSYTabBar m_wndWorkSpace;      // 左側停靠列
CSYAutoSizeBar m_wndOutput;    // 底部停靠列
CSYSheetTabCtrl m_wndTabCtrl;  // 底部分頁控制
TSYNoFlickerControl m_treeClass;    // 類別檢視
TSYNoFlickerControl m_treeResource; // 資源檢視
TSYNoFlickerControl m_treeFile;     // 檔案檢視
TSYNoFlickerControl m_editOutput;   // 輸出視窗

MainFrame.cpp - OnCreate

// 建立左側 WorkSpace Bar
if (!m_wndWorkSpace.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
    | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,
    CRect(0,0,100,100), 1000)) return -1;

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);

// 建立底部 Output Bar
if (!m_wndOutput.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
    | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,
    CRect(0,0,100,100), 1001)) return -1;

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);

儲存/還原版面配置

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    // ... 其他代碼 ...
    LoadBars("Bars.dat");  // 還原版面
}

void CMainFrame::OnClose()
{
    SaveBars("Bars.dat");  // 儲存版面
    CMDIFrameWnd::OnClose();
}

啟用 MDI 分頁與配色

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    // ... 其他代碼 ...
    EnabledMDITab(2, TRUE);       // 啟用 MDI 分頁,子視窗保持最大化
    EnableMDITabColor(TRUE);      // 使用 OneNote 風格彩色分頁
}

套用 Office 2003 風格

BOOL CVisualstudioApp::InitInstance()
{
    // ... 其他代碼 ...
    CSYDrawMgrOffice2003* pDM2003 = new CSYDrawMgrOffice2003;
    pDM2003->SetAutoDel();
    CSYGUIMgr::S_SetDrawMgr(pDM2003);
    // ... 其他代碼 ...
}

工具列/選單自訂功能

SYGUI 內建封裝,無需額外代碼即可支援使用者拖曳自訂工具列按鈕與選單項目。

結語

範例還使用了 TaskPane、PropertyGridCtrl、FontComboBox 等進階控制項。完整原始碼與編譯說明請參考下載專案。更多技術細節可聯繫作者 wwei@zj165.com 或訪問 https://www.sygui.com。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved