><IMG src="http://vcer.net/images/item.gif" align=top>关键词</P>界面美化 ' Y+ K1 T! ~/ g( B$ s
><IMG src="http://vcer.net/images/item.gif" align=top>摘要</P>3 q& b. e/ h: x( j
>本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础:
>1. 大致了解MFC框架的基本运作原理;
>2. 熟悉Windows消息机制,熟悉MFC的消息映射和反射机制; $ D, ?# {7 w/ t
>3. 熟悉OOP理论和技术; 1 S& w6 |6 a8 g! G
>本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。 1 v) [) ?! e6 n* M2 e0 C5 w7 C! u
><IMG src="http://vcer.net/images/item.gif" align=top>正文</P>% o0 F8 |+ w7 S
>1. 美化界面之开题篇</P>1 Z, `* w0 P! G3 C$ t% ^
>相信使用过《金山毒霸》、《瑞星杀毒》软件的读者应该还记得它们的精美界面: ( H& k/ B% d! }. ]+ g2 k* Y
>8 E; e5 ]# O# g g6 S
>1 B, ^3 j: ~6 l, e
align=center><IMG src="http://vcer.net/upload/2004/03/1046596474810.gif" border=0></P>. I# u. g6 L' e3 }' [, b
align=center> ; C, m+ h0 Y! o4 u6 Y
align=center>图1 瑞星杀毒软件的精美界面</P>
>程序的功能如何如何强大是一回事,它的用户界面则是另一回事。千万不要忽视程序的用户界面,因为它是给用户最初最直接的印象,丑陋的界面、不友好的风格肯定会影响用户对软件程序的使用。 4 w! E7 g5 l+ H6 J
>“受之以鱼,不若授之以渔”,本教程并不会向你推荐《瑞星杀毒软件》精美界面的具体实现,而只是向你推荐一些常用的美化方法。
>2. 美化界面之基础篇</P>
>美化界面需要先熟悉Windows下的绘图操作,并明白Windows的幕后绘图操作,才能有的放矢,知道哪些可以使用,知道哪些可以避免……
>, H/ g+ b- i/ L3 _! Z' k! |- F. ~
><b>2.1 Windows下的绘图操作</b> ' d4 v+ O/ [ E
>
>熟悉DOS的读者可能就知道:DOS下面的图形操作很方便,进入图形模式,整个屏幕就是你的了,你希望在哪画个点,那个地方就会出现一个点,红的、或者黄的,随你的便。你也可以花点时间画个按钮,画个你自己的菜单,等等…… - |: V% k0 F& }- z8 q! D
>Windows本身就是图形界面,所以Windows下面的绘图操作功能更丰富、简单。要了解Windows下的绘图操作,要实现Windows界面的美化,就必须了解MFC封装的设备环境类和图形对象类。 ; @# O: t/ @- l/ y+ |
>
><b>2.1.1 设备环境类</b> # l7 K- ~: C/ I4 L7 Y
>1 y1 _$ d. j* n. \+ e0 s% H
>Windows下的绘图操作说到底就是DC操作。DC(Device Context设备环境)对象是一个抽象的作图环境,可能是对应屏幕,也可能是对应打印机或其它。这个环境是设备无关的,所以你在对不同的设备输出时只需要使用不同的设备环境就行了,而作图方式可以完全不变。这也就是Windows的设备无关性。
>MFC的CDC类封装了Windows API 中大部分的画图函数。CDC的常见操作函数包括:
>Drawing-Attribute Functions:绘图属性操作,如:设置透明模式 ) w9 J0 z1 [: l8 T, s5 }6 F
reCreateWindow(CREATESTRUCT& cs)
reCreateWindow(cs);. x2 s" }5 L& H/ ]0 R/ b+ Z
rawItem()。所以,以上例子也可以通过派生出一个CButton的派生类,并重载该类的DrawItem()函数来实现。使用虚函数机制实现界面美化参见3.4章节。 ' \' J% ]6 i: q, V) t" p
rawItem
rawItem
rawItem
rawItem , f! {1 _% c: o+ J6 C
rawItem + k6 w; G* e9 K4 D4 E9 C
rawItem
rawItem ( @- x7 A7 g$ s5 C0 t4 g. S0 C
rawItem , k. \$ L: D; L4 |' V$ r4 G7 n; z4 C
rawItem</P># w1 ]* l4 R2 w" r
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |