睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
界面美化
摘要
本文專題討論VC中的界面美化,適用于具有中等VC水平的讀者。讀者最好具有以下VC基礎:
1. 大致了解MFC框架的基本運作原理;
2. 熟悉Windows消息機制,熟悉MFC的消息映射和反射機制;
3. 熟悉OOP理論和技術;
本文根據筆者多年的開發經驗,并結合簡單的例子一一展開,希望對讀者有所幫助。
正文
1. 美化界面之開題篇
相信使用過《金山毒霸》、《瑞星殺毒》軟件的讀者應該還記得它們的精美界面:
圖1 瑞星殺毒軟件的精美界面
程序的功能如何如何強大是一回事,它的用戶界面則是另一回事。千萬不要忽視程序的用戶界面,因為它是給用戶最初最直接的印象,丑陋的界面、不友好的風格肯定會影響用戶對軟件程序的使用。
“受之以魚,不若授之以漁”,本教程并不會向你推薦《瑞星殺毒軟件》精美界面的具體實現,而只是向你推薦一些常用的美化方法。
2. 美化界面之基礎篇
美化界面需要先熟悉Windows下的繪圖操作,并明白Windows的幕后繪圖操作,才能有的放矢,知道哪些可以使用,知道哪些可以避免……
2.1 Windows下的繪圖操作
熟悉DOS的讀者可能就知道:DOS下面的圖形操作很方便,進入圖形模式,整個屏幕就是你的了,你希望在哪畫個點,那個地方就會出現一個點,紅的、或者黃的,隨你的便。你也可以花點時間畫個按鈕,畫個你自己的菜單,等等……
Windows本身就是圖形界面,所以Windows下面的繪圖操作功能更豐富、簡單。要了解Windows下的繪圖操作,要實現Windows界面的美化,就必須了解MFC封裝的設備環境類和圖形對象類。
2.1.1 設備環境類
Windows下的繪圖操作說到底就是DC操作。DC(Device Context設備環境)對象是一個抽象的作圖環境,可能是對應屏幕,也可能是對應打印機或其它。這個環境是設備無關的,所以你在對不同的設備輸出時只需要使用不同的設備環境就行了,而作圖方式可以完全不變。這也就是Windows的設備無關性。
MFC的CDC類封裝了Windows API 中大部分的畫圖函數。CDC的常見操作函數包括:
Drawing-Attribute Functions:繪圖屬性操作,如:設置透明模式
Mapping Functions:映射操作
Coordinate Functions:坐標操作
Clipping Functions:剪切操作
Line-Output Functions:畫線操作
Simple Drawing Functions:簡單繪圖操作,如:繪制矩形框
Ellipse and Polygon Functions:橢圓/多邊形操作
Text Functions:文字輸出操作
Printer Escape Functions:打印操作
Scrolling Functions:滾動操作
*Bitmap Functions:位圖操作
*Region Functions:區域操作
*Font Functions:字體操作
*Color and Color Palette Functions:顏色/調色板操作
其中,標注*項會用到相應的圖形對象類,參見2.1.2內容。
2.1.2 圖形對象類
設備環境不足以包含繪圖功能所需的所有繪圖特征,除了設備環境外, Windows還有其他一些圖形對象用來儲存繪圖特征。這些附加的功能包括從畫線的寬度和顏色到畫文本時所用的字體。圖形對象類封裝了所有六個圖形對象。
下面的表格列出了MFC的圖形對象類:
MFC類 圖形對象句柄 圖形對象目的
CBitmap HBITMAP 內存中的位圖
CBrush HBRUSH 畫刷特性—填充某個圖形時所使用的顏色和模式
CFont HFONT 字體特性—寫文本時所使用的字體
CPalette HPALETTE 調色板顏色
CPen HPEN 畫筆特性—畫輪廓時所使用的線的粗細
CRgn HRGN 區域特性—包括定義它的點
表1 圖形對象類和它們封裝的句柄
使用CDC和圖形對象類,在Windows里繪圖還算是很簡單的。觀察以下的畫面:
圖2 使用CDC繪制出的按鈕
該畫面通過以下代碼自行繪制的假按鈕:
[cpp] view plaincopy