為了讓軟件能在視覺上給用戶帶來一種清新的感覺,從而避免潛在的用戶視覺疲勞和審美疲勞,軟件一般都要經過專業的界面設計和美化。但是,我們不是也沒有專業的界面設計美化人員,所以只能對軟件的界面和風格進行初步的簡單美化,主要是色調的搭配、圖片、字體的簡單美化處理等基本工作。
下面結合實例,詳細介紹一下之前的軟件開發中所用到的兩種軟件界面風格簡單美化的方法:
(1)采用OnCtlColor函數,對軟件的界面進行簡單的美化。(**完整的實例程序可在我的CSDN資源中下載:[http://download.csdn.net/detail/margin1988/4241231](http://download.csdn.net/detail/margin1988/4241231)**)
?采用這種方式,只能對軟件界面在背景顏色、控件顏色、字體等方面做簡單的美化。其主要的操作步驟如下:
?1)在相應的.h文件中添加OnCtlColor函數:
~~~
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
~~~
?2)在相應的.cpp文件中添加消息映射宏:
~~~
BEGIN_MESSAGE_MAP(CPoint11Dlg, CDialog)
ON_WM_CTLCOLOR()//OnCtlColor函數的消息映射宏
END_MESSAGE_MAP()
~~~
?3)在相應的.cpp文件中編寫OnCtlColor函數的實現體:
~~~
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
switch (nCtlColor)
{
case CTLCOLOR_STATIC: //靜態文本
{
pDC->SetBkMode(TRANSPARENT);
HBRUSH B = CreateSolidBrush(RGB(191,219,255)); //控件背景顏色
pDC->SetTextColor(RGB(0,0,0)); //控件中的文字的顏色
return (HBRUSH) B;
}
break;
case CTLCOLOR_DLG : //對話框背景
{
pDC->SetBkMode(TRANSPARENT);
HBRUSH B = CreateSolidBrush(RGB(191,219,255));
pDC->SetTextColor(RGB(0,0,0));
return (HBRUSH) B;
}
break;
default:
return hbr;
break;
}
~~~
?※需要注意的一點是:當對話框背景顏色和靜態文本的背景色設置一樣時,軟件界面中的靜態文本產生的陰影將消失,使得界面更加整潔。

(2)使用SkinMagic插件,對軟件的整體界面風格進行改變和美化。(**完整的實例程序可在我的CSDN資源中下載**)
?使用這種方式,可以改變軟件的整體風格,從而也改變了軟件中所有細節的風格,可以達到比較好的整體美化效果。但是,使用這種方式也有它自己的缺點,那就是雖然SkinMagic插件是一個免費的插件,但是它所提供的界面風格是相當有限的,而且這其中的界面風格比較清新好看的更是少之又少。SkinMagic插件的使用步驟如下:
?1)將SkinMagicLib.h,SkinMagicTrial.lib,SkinMagicTrial.dll三個文件copy到程序目錄中。
?2)將SkinMagicLib.h添加到工程的“頭文件”中;在工程“屬性”頁的“配置屬性-鏈接器-輸入”的“附加依賴項”中輸入SkinMagicTrial.lib。
?3)在stdafx.h中添加:
~~~
#include "SkinMagicLib.h"
#pragma comment(lib,"SkinMagicTrial.lib")
~~~
?4)在"工程名App.cpp"或者"工程名.cpp"中的InitInstance()函數中添加:
~~~
VERIFY(1==InitSkinMagicLib(AfxGetInstanceHandle(),_T("Demo"),NULL, NULL));
CString str;
str.Format("%ssmf\\corona.smf",g_BasePath);
VERIFY(1==LoadSkinFile(_T(str)));
SetDialogSkin(_T("Dialog"));
~~~
?5)在項目的配置屬性中改為使用“使用多字節字符集”字符集,否則編譯時會出現函數名無法解析的錯誤。

- 前言
- VC++中自定義熱鍵及響應
- CFileDialog文件對話框
- VC++中客戶區保存為BMP圖片
- VC++讀、寫注冊表
- VC++播放音頻文件和音頻數據的方法
- VC++調用Matlab編寫的DLL(混合編程)
- VC++中文件讀、寫和其他相關操作匯總
- VC++獲取系統當前時間
- VC++按鈕控件字體設置
- VC++軟件界面風格簡單美化
- VC++中一些常用的數據類型之間的相互轉化
- VC++中截取字符串的方法
- VC++中vector矢量的使用方法及隨機相關
- VC++中結構體的定義及使用
- VC++中List Control控件的使用方法介紹
- VC++中窗口過程函數及其消息發送、響應機制介紹
- VC++中Ribbon編程架構及SDI架構多視圖切換介紹
- 串口通信基礎知識及VC++實現
- VC++中單個鍵盤按鍵的響應
- VC++中的計時器及多媒體高精度計時器
- VC++編寫DLL導出函數及其調用方法
- VC++對話框(CDialog)的全屏顯示及控件居中顯示
- VC++對話框(CDialog)添加背景圖片
- VC++圖片控件(Picture Control)顯示資源位圖(BMP)、文件位圖(BMP)、其它格式文件圖片(JPG\PNG\BMP)的方法
- VC++對Access數據庫的操作(查詢、插入、更新、刪除等)