><IMG src="http://vcer.net/images/item.gif" align=top>关键词</P>界面美化 , |# x( f3 E. Y2 S
><IMG src="http://vcer.net/images/item.gif" align=top>摘要</P>( w2 E) H6 |5 S1 ~. N' Y8 r; C+ V
>本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础: $ F1 {- K5 [* H; {7 |; S
>1. 大致了解MFC框架的基本运作原理; 2 a) G; t4 U8 _4 I. W; n) }3 q
>2. 熟悉Windows消息机制,熟悉MFC的消息映射和反射机制; + v) X: N. \' m
>3. 熟悉OOP理论和技术; 5 F' o v1 S( N) s- v' \
>本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。
><IMG src="http://vcer.net/images/item.gif" align=top>正文</P>
>1. 美化界面之开题篇</P>4 ]- {3 v) j3 G2 g' k$ J
>相信使用过《金山毒霸》、《瑞星杀毒》软件的读者应该还记得它们的精美界面:
>
>
align=center><IMG src="http://vcer.net/upload/2004/03/1046596474810.gif" border=0></P>: N2 a% c: I" o
align=center> 7 @; w2 @! ~$ ] S) d( v! B
align=center>图1 瑞星杀毒软件的精美界面</P>$ D2 W' a+ x: [0 P+ ~
>程序的功能如何如何强大是一回事,它的用户界面则是另一回事。千万不要忽视程序的用户界面,因为它是给用户最初最直接的印象,丑陋的界面、不友好的风格肯定会影响用户对软件程序的使用。 & x0 ]0 N% ?& e) q" n% I! } P' A
>“受之以鱼,不若授之以渔”,本教程并不会向你推荐《瑞星杀毒软件》精美界面的具体实现,而只是向你推荐一些常用的美化方法。 . s- g. O8 e4 h5 U7 }
>2. 美化界面之基础篇</P>2 q1 \" e1 p) P0 s3 n
>美化界面需要先熟悉Windows下的绘图操作,并明白Windows的幕后绘图操作,才能有的放矢,知道哪些可以使用,知道哪些可以避免……
>
><b>2.1 Windows下的绘图操作</b> ; x# a# ]; L# |7 z
>) F+ A3 h' O" u) M" D% B
>熟悉DOS的读者可能就知道:DOS下面的图形操作很方便,进入图形模式,整个屏幕就是你的了,你希望在哪画个点,那个地方就会出现一个点,红的、或者黄的,随你的便。你也可以花点时间画个按钮,画个你自己的菜单,等等……
>Windows本身就是图形界面,所以Windows下面的绘图操作功能更丰富、简单。要了解Windows下的绘图操作,要实现Windows界面的美化,就必须了解MFC封装的设备环境类和图形对象类。
>, l# ~0 F8 h6 W) ]0 o# Q4 r
><b>2.1.1 设备环境类</b>
>
>Windows下的绘图操作说到底就是DC操作。DC(Device Context设备环境)对象是一个抽象的作图环境,可能是对应屏幕,也可能是对应打印机或其它。这个环境是设备无关的,所以你在对不同的设备输出时只需要使用不同的设备环境就行了,而作图方式可以完全不变。这也就是Windows的设备无关性。
>MFC的CDC类封装了Windows API 中大部分的画图函数。CDC的常见操作函数包括:
>Drawing-Attribute Functions:绘图属性操作,如:设置透明模式 + r# X( j( d7 l$ f
reCreateWindow(CREATESTRUCT& cs)
reCreateWindow(cs);3 a5 C" J- ?3 e) C7 c3 A
rawItem()。所以,以上例子也可以通过派生出一个CButton的派生类,并重载该类的DrawItem()函数来实现。使用虚函数机制实现界面美化参见3.4章节。
rawItem
rawItem 1 k9 F$ I6 H0 m, |9 q
rawItem * x$ R9 p# @) p
rawItem Z5 D& s% ]+ ?9 i- r4 Y+ _
rawItem
rawItem
rawItem $ C" n; t- L, L. b
rawItem & t+ Z P% z% ] X7 \, N* h
rawItem</P>
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |