程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> VC如何實現Office式樣的扁平組合框

VC如何實現Office式樣的扁平組合框

編輯:關於VC++

MS Office家族產品中常常見到扁平式組合框,本文將介紹一個C++類:CXTFlatComboBox ,用這個類可以在自己的程序中輕松實現扁平式組合框,也就是讓標准的CComboBox控件外觀扁平化。CXTFlatComboBox類是codejoke開發工具包Xtreme Toolkit的一個成員。任何人都可以免費使用這個類的源代碼。

使用方法:

將CXTFlatComboBox類的頭文件 XTFlatComboBox.h 和實現文件 XTFlatComboBox.cpp添加到工程中,然後在使用這個類的文件中包含頭文件: #include "XTFlatComboBox.h"

接著在實現文件中聲明類實例,你可以用類向導(Class Wizard)先添加一個CComboBox成員變量:(Class Wizard -> Member Variables Tab -> Add Variable ),然後將CComboBox改為CXTFlatComboBox。成員變量主要是用來對組合框進行控制。

本文例子是一個典型的基於對話框的程序,對話框裡有兩個組合框,每個組合框都有一個復選按鈕控制其屏蔽狀態,可編輯的組合框還帶一個“自動完成”的功能控制。圖一是本文例子程序的運行畫面:

圖一 例子程序

下面是程序代碼的簡單的說明:

頭文件:

例子程序的兩個組合框式樣分別為Droplist 和 Dropdown,它們的區別就不用多說了,前者可以輸入內容,後者則不能。

//{{AFX_DATA(CFlatComboDemoDlg)
enum { IDD = IDD_FLATCOMBODEMO_DIALOG };
//聲明類實例成員變量
CXTFlatComboBox  m_DDCombo;
CXTFlatComboBox  m_DLCombo;
//聲明其它的成員變量
BOOL  m_bDDAutoComp;
BOOL  m_bDDDisable;
BOOL  m_bDLDisable;
//}}AFX_DATA

實現文件:在 DoDataExchange(CDataExchange* pDX)函數中實現對話框裡控制之間的數據交換。

//{{AFX_DATA_MAP(CFlatComboDemoDlg)
DDX_Control(pDX, IDC_DROPDOWN_COMBO, m_DDCombo);
DDX_Control(pDX, IDC_DROPLIST_COMBO, m_DLCombo);
DDX_Check(pDX, IDC_DROPDOWN_AUTOCOMP, m_bDDAutoComp);
DDX_Check(pDX, IDC_DROPDOWN_DISABLE, m_bDDDisable);
DDX_Check(pDX, IDC_DROPLIST_DISABLE, m_bDLDisable);
//}}AFX_DATA_MAP

消息映射函數代碼:

BEGIN_MESSAGE_MAP(CFlatCmboxDlg, CDialog)
   //{{AFX_MSG_MAP(CFlatCmboxDlg)
   ON_WM_SYSCOMMAND()
   ON_BN_CLICKED(ID_APP_ABOUT,OnAbout)
   ON_WM_PAINT()
   ON_WM_QUERYDRAGICON()
   ON_BN_CLICKED(IDC_DROPDOWN_DISABLE, OnDropdownDisable)
   ON_BN_CLICKED(IDC_DROPLIST_DISABLE, OnDroplistDisable)
   ON_BN_CLICKED(IDC_DROPDOWN_AUTOCOMP, OnDropdownAutocomp)
   ON_WM_CTLCOLOR()
   //}}AFX_MSG_MAP
END_MESSAGE_MAP()

例子程序裡OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 是 WM_CTLCOLOR 消息的處理例程,通過它可以改變對話框子窗口(也就是對話框裡的各個控制如按鈕、編譯框、組合框等)的字體顏色和背景顏色。有一點要注意:運行一下例子程序就會發現,程序中式樣為 Dropdown 的組合框其字體顏色和背景顏色改變代碼不工作。一時還沒找到好的辦法。如果哪位知道,別忘了告訴我.......

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved