把多于256色位图作为资源加入到应用程序中

发表于:2007-06-17来源:作者:点击数: 标签:
VisualC++5.0以前版本中自带的位图编辑器不能浏览和编辑256色以 上的位图,并且资源文件中也不允许嵌入(Import)256色以上的位图作为资源 (否则,在应用程序运行时会报错)。这一特性使我们用VisualC++ 开发 应用 程序时不得不使用其他方法来增强界面图画

          Visual C++ 5.0以前版本中自带的位图编辑器不能浏览和编辑256色以
上的位图,并且资源文件中也不允许嵌入(Import)256色以上的位图作为资源

(否则,在应用程序运行时会报错)。这一特性使我们用Visual C++开发应用
程序时不得不使用其他方法来增强界面图画的美观性,于是就有使用Visual
C++开发应用程序内核、用Visual Basic开发界面的组合方法。在Visual
C++ 5.0中这个问题有了改善。首先,位图编辑器可以创建并编辑256色的位

图。其次,Visual C++ 5.0允许程序员把256色以上的位图嵌入到资源中,但
仍然无法在Visual C++的位图编辑器中浏览,并且还要求必须选择Win32
Release作为编译方式生成可执行的应用程序。另外一个限制条件是作为资源的
256色以上的位图不能由应用程序内核自动打开和关闭。比如说,在上述那篇名
为《Visual C++ 4.0编程经验谈》的文章中曾经提到过一种为对话框加入位
图式按钮的方法,即由程序开发者为每个按钮创建四幅位图,分别用于表示按
钮的弹起状态(UP)、按下状态(DOWN)、输入焦点状态(FOCUS)和禁止状态(DISABLE),

并且必须以该按钮的标题名与上述四种状态之一的组合作为位图的标识,以便应
用程序在绘制位图按钮时,自动找到相应的资源(即位图)。然而这一自动映射只
限制于Visual C++位图编辑器能够打开的位图。因此,如果选择256色以上的位
图作为位图按钮的资源,并希望上述四状态能够相互切换的话,就必须用到下述
函数和程序设计参考模型。
*S 设置四个常量:BUTTON_UP、BUTTON_DOWN、BUTTON_FOCUS、BUTTON_DISABLE,
分别用于标识各按钮的当前状态。
*S 在应用程序的相应对话框类中为每个位图按钮(为下面叙述方便,不妨假设为

两个)设置一个CRect类的对象:m_rect1和m_rect2,来记载各按钮在对话框中所
占据的坐标矩形。再在该对话框类中为每个按钮设置一个整型变量:Buton1_Status
和Button2_Status,记录各按钮的当前状态。然后在对话框的构造函数中初始化这
些CRect类的对象和整型变量。
*S 在该对话框类中创建分别响应鼠标各种状态的消息处理函数,如OnMouseMove()、
OnLButtonUp()、OnLButtonDown()等。
*S 同时按下Ctrl和W键或直接单击工具条上的ClassWizard按钮,打开ClassWizard
对话框。在类名(Class name)列表框中选择对话框类,在Object IDs列表框中选择

该类的类名,在消息(Messages)列表框中选择WM_PAINT消息并双击它,这时ClassWizard
就会在该对话框类中加入一个OnPaint()函数。然后,再在Object IDs列表框中选择
新加入的工具条按钮的标识名,双击消息列表框中的COMMAND消息,ClassWizard又
会在对话框类中加入相应的消息处理函数。关闭ClassWizard对话框。

原文转自:http://www.ltesting.net