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