為了讓軟件能在視覺上給用戶帶來一種清新的感覺,從而避免潛在的用戶視覺疲勞和審美疲勞,軟件一般都要經過專業的界面設計和美化。但是,我們不是也沒有專業的界面設計美化人員,所以只能對軟件的界面和風格進行初步的簡單美化,主要是色調的搭配、圖片、字體的簡單美化處理等基本工作。
下面結合實例,詳細介紹一下之前的軟件開發中所用到的兩種軟件界面風格簡單美化的方法:
(1)采用OnCtlColor函數,對軟件的界面進行簡單的美化。(完整的實例程序可在我的CSDN資源中下載:http://download.csdn.net/detail/margin1988/4241231)
采用這種方式,只能對軟件界面在背景顏色、控件顏色、字體等方面做簡單的美化。其主要的操作步驟如下:
1)在相應的.h文件中添加OnCtlColor函數:
1 afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
2)在相應的.cpp文件中添加消息映射宏:
1 BEGIN_MESSAGE_MAP(CPoint11Dlg, CDialog) 2 ON_WM_CTLCOLOR()//OnCtlColor函數的消息映射宏 3 END_MESSAGE_MAP()
3)在相應的.cpp文件中編寫OnCtlColor函數的實現體:
1 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); 2 switch (nCtlColor) 3 { 4 case CTLCOLOR_STATIC: //靜態文本 5 { 6 pDC->SetBkMode(TRANSPARENT); 7 HBRUSH B = CreateSolidBrush(RGB(191,219,255)); //控件背景顏色 8 pDC->SetTextColor(RGB(0,0,0)); //控件中的文字的顏色 9 return (HBRUSH) B; 10 } 11 break; 12 case CTLCOLOR_DLG : //對話框背景 13 { 14 pDC->SetBkMode(TRANSPARENT); 15 HBRUSH B = CreateSolidBrush(RGB(191,219,255)); 16 pDC->SetTextColor(RGB(0,0,0)); 17 return (HBRUSH) B; 18 } 19 break; 20 default: 21 return hbr; 22 break; 23 }
※需要注意的一點是:當對話框背景顏色和靜態文本的背景色設置一樣時,軟件界面中的靜態文本產生的陰影將消失,使得界面更加整潔。
(2)使用SkinMagic插件,對軟件的整體界面風格進行改變和美化。(完整的實例程序可在我的CSDN資源中下載:http://download.csdn.net/detail/margin1988/4241231)
使用這種方式,可以改變軟件的整體風格,從而也改變了軟件中所有細節的風格,可以達到比較好的整體美化效果。但是,使用這種方式也有它自己的缺點,那就是雖然SkinMagic插件是一個免費的插件,但是它所提供的界面風格是相當有限的,而且這其中的界面風格比較清新好看的更是少之又少。SkinMagic插件的使用步驟如下:
1)將SkinMagicLib.h,SkinMagicTrial.lib,SkinMagicTrial.dll三個文件copy到程序目錄中。
2)將SkinMagicLib.h添加到工程的“頭文件”中;在工程“屬性”頁的“配置屬性-鏈接器-輸入”的“附加依賴項”中輸入SkinMagicTrial.lib。
3)在stdafx.h中添加:
1 #include "SkinMagicLib.h" 2 #pragma comment(lib,"SkinMagicTrial.lib")
4)在"工程名App.cpp"或者"工程名.cpp"中的InitInstance()函數中添加:
1 VERIFY(1==InitSkinMagicLib(AfxGetInstanceHandle(),_T("Demo"),NULL, NULL)); 2 CString str; 3 str.Format("%ssmf\\corona.smf",g_BasePath); 4 VERIFY(1==LoadSkinFile(_T(str))); 5 SetDialogSkin(_T("Dialog"));
5)在項目的配置屬性中改為使用“使用多字節字符集”字符集,否則編譯時會出現函數名無法解析的錯誤。
