在VC中用CMenuXP使應(yīng)用程序擁有Office XP風(fēng)格的界面_第1頁
在VC中用CMenuXP使應(yīng)用程序擁有Office XP風(fēng)格的界面_第2頁
在VC中用CMenuXP使應(yīng)用程序擁有Office XP風(fēng)格的界面_第3頁
在VC中用CMenuXP使應(yīng)用程序擁有Office XP風(fēng)格的界面_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、在VC中用CMenuXP使應(yīng)用程序擁有Office XP風(fēng)格的界面隨著Windows XP和Office XP的推出,兼具華美和清爽氣質(zhì)的Office XP界面風(fēng)格也逐漸取代了Windows經(jīng)典界面風(fēng)格而成為了當(dāng)前應(yīng)用程序的流行“時(shí)裝”,因而如何使自己的應(yīng)用程序擁有Office XP風(fēng)格的界面也成為了廣大程序員感興趣的問題。為此法國程序員Jean-Michel LE FOL針對于Visual C+編寫了CMenuXP類,使用CMenuXP類就可以輕松使自己的應(yīng)用程序擁有Office XP風(fēng)格的界面。下面我就以詳細(xì)介紹一下使用CMenuXP的步驟。 首先新建一個(gè)名叫“SDIXP”的單文

2、檔的MFC應(yīng)用程序。在我們能使用CMenuXP之前,必須進(jìn)行一下幾步操作: 1. 將CMenuXP的源文件和頭文件所在的文件夾(一般放在名叫“Tools”)放到SDIXP源文件的目錄下。 2. 將Visual C+切換到“文件視圖(FileView)”,加入CMenuXP的源文件和頭文件。具體可以這樣進(jìn)行:在FileView的樹狀目錄下,展開SDI files,在Source Files目錄上點(diǎn)擊右鍵,創(chuàng)建新目錄(“New Folder”),不妨取名叫“Tools”,再在Tools目錄上點(diǎn)擊右鍵,選擇加入文件(“Add Files to Folder”),將Tools文件夾下的所有源文件(*.

3、cpp)全部加進(jìn)來。同理,在文件視圖的Header Files目錄下新建一個(gè)叫做“Tool Headers”,再將Tools文件夾下的所有頭文件(*.h)全部加到Tool Headers目錄里。 3. (1)在控制菜單的類的頭文件(對于SDI程序通常是MainFrm.h)里加入所需要的CMenuXP類的頭文件名: #include "Tools/MenuXP.h" #include "Tools/ToolBarXP.h" #include "Tools/StatusBarXP.h" #include "Tools/Combo

4、BoxXP.h" 再在MainFrm.h里加入下面的宏: DECLARE_MENUXP() 上述語句可以加在CMainFrame類聲明里的宏定義“DECLARE_MESSAGE_MAP()”的后面。 (2)在控制菜單的類的源文件(MainFrm.cpp)里加入: IMPLEMENT_MENUXP(類名, 基類名); 對于SDI工程就是 IMPLEMENT_MENUXP(CMainFrame, CFrameWnd); 上述語句加在CMainFrame開頭的“IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)”后面。 (3)接著繼續(xù)在消息映射里如下加入:

5、 BEGIN_MESSAGE_MAP(className, baseClass) / . ON_MENUXP_MESSAGES() /加入這一行 END_MESSAGE_MAP() (4)在繼承于CWinApp的類(這里就是CSDIXPApp)中的InitInstance()函數(shù)里加入: CMenuXP:InitializeHook(); 可以加在“AfxEnableControlContainer();”語句后面。 然后再為CSDIXPApp類重載ExitInstance()函數(shù),可以在“類視圖(ClassView)”里點(diǎn)右鍵加入。再在ExitInstance()函數(shù)里加入: CMenuXP

6、:UninitializeHook(); 以上步驟做完之后可以按F7編譯一下,如果一切沒有問題我們就可以開始使用CMenuXP來美化我們的菜單和工具欄了。 首先,我們來將菜單和菜單項(xiàng)XP化。這很簡單,只要在CMainFrame: OnCreate()函數(shù)里加入: CMenuXP:UpdateMenuBar(this); CMenuXP:SetXPLookNFeel(this); 就OK了。現(xiàn)在你編譯運(yùn)行一下,看看你的程序菜單是不是改頭換面了? 如果你想為自己菜單項(xiàng)定制圖標(biāo),我們可以用CMenuXP:SetMenuItemImage (UNIT nID, HIMAGELIST hImgList,

7、 int nIndex)函數(shù)來實(shí)現(xiàn)。為此,我們新建一個(gè)菜單“水果”和菜單項(xiàng)“蘋果”(ID設(shè)置為ID_MENUITEM_APPLE),打開ClassWizard為ID_MENUITEM_APPLE添加消息處理函數(shù)OnMenuitemApple()。然后再導(dǎo)入一個(gè)位圖資源“APPLE.bmp”,其ID設(shè)置為IDB_APPLE。 接著我們?yōu)镃MainFrame添加CImageList類型的成員變量m_imgList,再在CMainFrame: OnCreate()函數(shù)的“CMenuXP:SetXPLookNFeel (this);”后面加入: m_imgList.Create(IDB_APPLE,

8、0, 0, RGB(192,192,192); CMenuXP:SetMenuItemImage(ID_MENUITEM_APPLE, m_imgList, 0); 其中m_imgList.Create()函數(shù)中的第2,3個(gè)參數(shù)是位圖文件的圖像拷貝的左上角坐標(biāo),最后一個(gè)參數(shù)是圖像的背景色。建議使用16×16的位圖。SetMenuItemImage()函數(shù)的最后一個(gè)參數(shù)指的是m_imgList的中元素的索引,這里因?yàn)閙_imgList.只包含一個(gè)位圖,故取零。編譯后運(yùn)行,看看“水果|蘋果”菜單項(xiàng)前面是不是多了一個(gè)蘋果的圖標(biāo)? 下面我們在將使工具欄和狀態(tài)欄XP化,這個(gè)更加easy了。只要

9、將CMainFrame類聲明中的 CStatusBar m_wndStatusBar; CToolBar m_wndToolBar; 變成 CStatusBarXP m_wndStatusBar; CToolBarXP m_wndToolBar; 就搞定了!不信,你編譯運(yùn)行一下看看,_* CMenuXP還可以將按鈕和下拉列表框變成Office XP風(fēng)格的。為此我們新建一個(gè)對話框IDD_APPLE。OK和Cancel按鈕保持不動,我們只增添一個(gè)下拉列表框控件IDC_COMBO1。然后按Ctrl+W打開ClassWizard為該對話框新建一個(gè)CAppleDlg類。再在ClassWizard中的Me

10、mber Variable里為IDC_COMBO1添加Control類型的變量m_cmbx1。接著為CAppleDlg重載OnInitDialog()用以初始化控件: BOOL CAppleDlg:OnInitDialog() CDialog:OnInitDialog(); m_cmbx1.AddString("紅蘋果"); m_cmbx1.AddString("青蘋果"); return TRUE; 然后在“蘋果”菜單項(xiàng)的消息處理函數(shù)中使蘋果對話框彈出: void CMainFrame:OnMenuitemApple() / TODO: Add you

11、r command handler code here CAppleDlg dialog; dialog.DoModal(); 如果這時(shí)編譯運(yùn)行,就會看到打開“水果|蘋果”菜單項(xiàng)后彈出一個(gè)對話框,但上面的控件還不是Office XP風(fēng)格的,下面我們就著手使其XP化,其實(shí)這同樣也是很easy的! 先在AppleDlg.h文件中包含"Tools/ComboBoxXP.h"和"Tools/ButtonXP.h",再找到定義m_cmbx1的位置,將 CComboBox m_cmbx1; 變成 CComboBoxXP m_cmbx1; 這樣下拉列表框就有XP風(fēng)格了,不信你編譯運(yùn)行試試。關(guān)于OK和Cancel按鈕就稍微特殊一點(diǎn),因?yàn)樗鼈兪侵苯佑肐DOK和IDCANCEL標(biāo)識的默認(rèn)按鈕,但為了使它們XP化,我們還是得為這兩個(gè)按鈕添加控制變量。因此,在CAppleDlg類的聲明中添加: CButtonXP m_btnOK; CButtonXP m_btnCancel; 再在CAppleDlg:DoDataExchange()函數(shù)中添加數(shù)據(jù)交換: DDX_Control(pDX, IDOK, m_btnOK); DDX_Control(pDX, IDCANCEL, m_btnCance

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論