點點滴滴
posts - 311, comments - 0, trackbacks - 0, articles - 0
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
(搬運工)用VS2008 Feature Pack 修改您現有的Visual C++的程序界面
Posted on 2011-06-13 19:23
點點滴滴
閱讀(290)
評論(0)
編輯
收藏
引用
所屬分類:
02 編程語言
上次給大家介紹了Visual C++ 2008 的Feature Pack的界面庫新特性。今天給大家介紹一下,怎樣用Feature Pack把您現有的Visual C++ 程序界面修改得漂亮些。
所需的修改環境:
Visual C++ 2008 (Team Suite版Express版都可以,但必須是英文版,否則Feature Pack不支持)
正確的安裝了Visual C++ 2008 Feature Pack beta
您要修改的Visual C++ 的程序源代碼工程
具備了以上三點就可以開始進行修改操作了。但是有一點提請注意,那就是您程序中是否用到了MS C++ 9.0 編譯器不再支持的語法特性?如果有,那很不幸,我個人不推薦您升級您的程序界面,畢竟程序運行的穩定性才是最重要的。為了漂亮的界面修改已經測試過并穩定運行的代碼,可不是一個明智的選擇。
下面我就用一個Visual C++的入門Demo
Scribble
來修改。這個Scribble您可以在MSDN網站上下載到,但請您注意,我給出的這個下載工程是VS2005 for x64的。下載后,您需要進行以下改動:
1) 將Scribble工程屬性中,C/C++編譯器的Treat Warnings as error 關閉,否則您的工程將會因為一個Warning沒有解決,導致整個程序編譯失敗。如圖:
2) 編譯時,將Target 改為Win32;
羅嗦了這么多,開始修改吧!
第一步: 請確定CScribbleApp::InitialInstance() 方法中已經調用了AfxOleInit();
第二步: 在stdafx.h文件中加入 #include"afxcontrolbars.h" ,這頭文件包含了Feature Pack新增的界面類聲明;
第三步:修改CScribbleApp類繼承的父類,由CWinApp改為CWinAppEx;這個CWinAppEx類比CWinApp添加了很多的功能,說個簡單的,CWinAppEx提供了一個SetRegistryBase方法,這個方法可以用來設定當前App所使用的注冊表的根。
第四步:修改主框架類,將CMainFrame的父類由CMDIFrameWnd改為CMDIFrameWndEx;這個修改設計到類聲明、IMPLEMENT_DYNAMIC宏、MESSAGE_MAP宏、OnCreate函數等調用到靜態方法的地方、以及其它等等。最好是直接用Replace all文本替換掉;
第五步:將CMDIChildWnd類替換為CMDIChildWndEx,主框架換了,子窗體也要換;
第六步:替換CTooBar為CMFCTooBar,替換CStatusBar為CMFCStatusBar;就是修改一下m_wndStatusBar和m_wndToolBar兩個變量的聲明處;
第七步:替換CMainFrame::OnCreate()函數中m_wndToolBar 和m_wndStatusBar??康南嚓P代碼;將Set/Get BarStyle改為Set/Get PaneStyle 也是文本替換一下,很簡單。將DockControlBar(&m_wndStatusBar);改為DockPane(&m_wndStatusBar);
完成以上七步,基本改造就算完成了。但是如果您現在編譯您的程序,您會發現Scribble界面基本上沒有任何改變。下面的才是更重要的,我們要添加RibbonBar了:
第一步:在CMainFrame類中聲明一個CMFCRibbonBar類型的變量m_wndRibbonBar。這個變量就代表Office2007界面里面那個替代了菜單的東東;
第二步:在CMainFrame類中聲明一個CMFCRibbonApplicationButton的變量m_MainButton。這個變量代表了Office2007界面左上角那個Home按鈕;
第三步:在CMainFrame::OnCreate函數中添加代碼。首先是創建RibbonBar對象,老規矩:
if(!m_wndRibbonBar.Create(this))
{
return -1;
}
第四步:設定m_MainButton對象:
m_MainButton.SetImage(……); //設定圖標
m_MainButton.SetToolTipText(……); //設定提示文本
m_MainButton.SetText(……); //設定按鈕文本
第五步:在CMainFrame::OnCreate函數中添加代碼,通過RibbonBar對象添加一個Category:
CMFCRibbonMainPanel *pMainPanel = m_wndRibbonBar.AddMainCategory(_T("File"));
這實際上就類似于創建了一個名為File的主菜單項;
第六步:給這個Panel添加按鈕(其實就是子菜單項):
pMainPanel->Add(new CMFCRibbonButton(ID_FILE_OPEN,_T("打開")));
……
第七步:
在CMainFrame::OnCreate()函數的最后部分,添加代碼設定當前界面的風格:
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));
CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007Luna_Blue);
代碼的第一行用來設定可視化管理器為Office2007類型,可供選擇的還有OfficXP、Office2003、VS2005 三種,換句話說,我們可以將我們的程序界面修改為Office2007、Office2003、OfficeXP、VS2005四種風格;
代碼的第二行用來設定Office2007界面的色調;
完成以上步驟后,就可以編譯運行啦,看看界面是不是改變了呢?
修改前:
修改后:
我沒有找到比較好看的圖標,也沒有把菜單都實現出來,僅僅是作為一個演示。相信在美工的幫助下,我們的MFC程序界面一定會漂亮起來的。
說到最后,我要提醒大家一下,發布程序前,已經要靜態鏈接MFC的庫。在現在VC8.0 的RTM尚不普及的情況下,就別指望您的用戶安裝部署了支持Feature Packe的FTM庫了。粗粗看了一下,一個用向導生成的支持Feature Pack的Application(是的,安裝了Feature Pack在用AppWizard生新程序的時候,就可以指定Feature Pack支持了),什么代碼都不加,靜態編譯一般在6M-8M之間(還算可以接受的說)。
Powered by:
C++博客
Copyright © 點點滴滴
日歷
<
2012年2月
>
日
一
二
三
四
五
六
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
1
2
3
4
5
6
7
8
9
10
公告
留言簿
(9)
給我留言
查看公開留言
查看私人留言
隨筆分類
(268)
01 數學基礎(5)
02 編程語言(175)
03 編程工具(6)
04 硬件基礎(2)
05 圖像基礎(3)
06 多媒體
07 壓縮加密
08 游戲SDK(10)
09 游戲策劃(3)
10 服務器(42)
11 生活隨想(12)
12工具收集(1)
19 源碼收集(9)
隨筆檔案
(311)
2017年5月 (1)
2016年12月 (2)
2016年11月 (7)
2014年10月 (4)
2014年9月 (2)
2014年7月 (1)
2014年2月 (1)
2013年11月 (4)
2013年10月 (42)
2013年8月 (1)
2013年7月 (1)
2013年6月 (3)
2013年5月 (3)
2013年4月 (2)
2013年3月 (4)
2013年2月 (3)
2013年1月 (2)
2012年11月 (3)
2012年10月 (3)
2012年9月 (12)
2012年8月 (8)
2012年7月 (47)
2012年6月 (3)
2012年5月 (4)
2012年3月 (4)
2012年2月 (5)
2012年1月 (2)
2011年12月 (5)
2011年11月 (4)
2011年10月 (3)
2011年9月 (5)
2011年8月 (2)
2011年7月 (2)
2011年6月 (7)
2011年5月 (13)
2011年4月 (9)
2011年3月 (17)
2011年2月 (9)
2011年1月 (25)
2010年12月 (10)
2010年11月 (24)
2010年10月 (2)
相冊
blog
游戲
搜索
積分與排名
積分 - 468096
排名 - 45
最新評論
久久婷婷是五月综合色狠狠
|
成人国内精品久久久久一区
|
久久精品国产亚洲麻豆
|
色综合久久综合中文综合网
|
久久国产色av免费看
|
国内精品人妻无码久久久影院导航
|
天天爽天天爽天天片a久久网
|
人妻无码中文久久久久专区
|
午夜人妻久久久久久久久
|
久久久亚洲欧洲日产国码是AV
|
香蕉aa三级久久毛片
|
久久91精品国产91
|
欧美日韩中文字幕久久久不卡
|
青青热久久国产久精品
|
欧美激情精品久久久久久久
|
精品国产综合区久久久久久
|
韩国三级大全久久网站
|
狠狠色丁香婷婷久久综合不卡
|
久久香蕉综合色一综合色88
|
精品99久久aaa一级毛片
|
亚洲国产精品成人久久蜜臀
|
亚洲色大成网站WWW久久九九
|
久久国产精品77777
|
久久精品国产亚洲沈樵
|
青青草国产97免久久费观看
|
久久A级毛片免费观看
|
精品久久久久久无码国产
|
99精品国产免费久久久久久下载
|
香蕉久久av一区二区三区
|
亚洲综合久久综合激情久久
|
一级a性色生活片久久无
|
热re99久久精品国99热
|
精品无码久久久久久久久久
|
一本一道久久综合狠狠老
|
亚洲国产精品久久久久婷婷软件
|
中文字幕精品久久久久人妻
|
国内精品伊人久久久久
|
久久人人爽人人爽人人片AV麻烦
|
久久亚洲国产最新网站
|
久久国产精品久久
|
精品国产乱码久久久久软件
|