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