><IMG src="http://vcer.net/images/item.gif" align=top>关键词</P>界面美化
><IMG src="http://vcer.net/images/item.gif" align=top>摘要</P>6 ]* F5 r4 W! _7 i' M
>本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础: 5 U& y- \/ S% B% E. ]) ^
>1. 大致了解MFC框架的基本运作原理; - j# [; n' U+ W2 m7 s3 `
>2. 熟悉Windows消息机制,熟悉MFC的消息映射和反射机制;
>3. 熟悉OOP理论和技术; " c" k2 o5 X% c0 I6 |
>本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。 ( F* q+ h8 O) {3 g
><IMG src="http://vcer.net/images/item.gif" align=top>正文</P> x# \* D0 G' ~8 l2 y+ o$ S* l
>1. 美化界面之开题篇</P>( I6 P4 ]9 l. E6 t0 n6 V
>相信使用过《金山毒霸》、《瑞星杀毒》软件的读者应该还记得它们的精美界面:
>
>
align=center><IMG src="http://vcer.net/upload/2004/03/1046596474810.gif" border=0></P>
align=center>
align=center>图1 瑞星杀毒软件的精美界面</P>
>程序的功能如何如何强大是一回事,它的用户界面则是另一回事。千万不要忽视程序的用户界面,因为它是给用户最初最直接的印象,丑陋的界面、不友好的风格肯定会影响用户对软件程序的使用。 i* w9 I: t5 h, i P
>“受之以鱼,不若授之以渔”,本教程并不会向你推荐《瑞星杀毒软件》精美界面的具体实现,而只是向你推荐一些常用的美化方法。
>2. 美化界面之基础篇</P>9 E5 I# }/ O' l! m& H
>美化界面需要先熟悉Windows下的绘图操作,并明白Windows的幕后绘图操作,才能有的放矢,知道哪些可以使用,知道哪些可以避免……
>; D/ }0 I' \2 q
><b>2.1 Windows下的绘图操作</b>
>
>熟悉DOS的读者可能就知道:DOS下面的图形操作很方便,进入图形模式,整个屏幕就是你的了,你希望在哪画个点,那个地方就会出现一个点,红的、或者黄的,随你的便。你也可以花点时间画个按钮,画个你自己的菜单,等等…… / y- c, e' X( \+ g2 ^
>Windows本身就是图形界面,所以Windows下面的绘图操作功能更丰富、简单。要了解Windows下的绘图操作,要实现Windows界面的美化,就必须了解MFC封装的设备环境类和图形对象类。
>! Y3 [$ {3 O+ x0 G1 ^( s3 R8 Y
><b>2.1.1 设备环境类</b>
>: b# b* t& {5 h6 E) |& x0 f2 J
>Windows下的绘图操作说到底就是DC操作。DC(Device Context设备环境)对象是一个抽象的作图环境,可能是对应屏幕,也可能是对应打印机或其它。这个环境是设备无关的,所以你在对不同的设备输出时只需要使用不同的设备环境就行了,而作图方式可以完全不变。这也就是Windows的设备无关性。 8 ]' r& L! J$ s% ?' M' h
>MFC的CDC类封装了Windows API 中大部分的画图函数。CDC的常见操作函数包括:
>Drawing-Attribute Functions:绘图属性操作,如:设置透明模式 ! ~$ W6 R4 b1 y: r# {3 [! ]- }
reCreateWindow(CREATESTRUCT& cs)0 y) x4 p6 t7 U [" W) I( U
reCreateWindow(cs);2 f6 m- p1 f8 v5 I8 b0 J4 \" L
rawItem()。所以,以上例子也可以通过派生出一个CButton的派生类,并重载该类的DrawItem()函数来实现。使用虚函数机制实现界面美化参见3.4章节。 7 K" F0 \! P1 ?9 ?5 e
rawItem ! t* V7 e4 j" F2 ?1 @
rawItem , s+ q' \8 g7 g' X i% h! v3 X* Q
rawItem
rawItem 4 f. \( g. P1 r* A
rawItem $ _. j. f5 Q9 S
rawItem g& u) ~2 T' m( Y, G: i
rawItem : [( r6 S9 j, z3 ^" [; y3 V* A
rawItem ; f2 j0 o! _0 u3 N$ Z/ F
rawItem</P>/ a, }% l6 N' ^7 i0 }
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |