用VC实现对属性表按钮区的位图绘制
2008-11-13 19:30:14 来源:WEB开发网属性表类(CPropertySheet Class)在编写Windows应用程序时使用非常广泛,如编写安装向导程序、应用程序配置等很多应用程序都必须使用属性表类,但是如何实现用VC对属性表类的按钮区进行绘制却是一个比较困难的问题。因为VC的MFC类库封装了属性表类,使得其外观表现一般不容易改变。而在编写应用程序的过程中却常常遇到要在属性表的按钮区域进行绘制的问题,如在属性表按钮区加入公司的标识等等。属性表按钮区是非窗口客户区,因此要对其直接进行绘制需要采用一些特殊的处理。我们在实际编程开发过程中,对此问题进行了一些探索。下面我们通过示例说明在VC5.0环境下实现对属性页按钮区域位图绘制的方法。
1、 实现非窗口区域绘制的基本思想:
要完成对属性表按钮区域(即非窗口客户区)的操作,必须得到相关的绘图设备环境(CPaint DC),找出按钮区域的具体位置,才能够对其进行操作。为此,需要对MFC的CPropertySheet类进行继承,对其继承类的OnPaint消息处理函数进行重载,在OnPaint消息处理函数中,直接以当前指针为变量定义一个设备环境对象,这就是我们所需的绘图设备环境,再找出属性表类的制表控件(table control)客户区位置和属性表类的缺省按钮位置,就能够计算出按钮区域的具体位置。只要完成上述两步,对属性表按钮区的操作也就不难实现了。
2.示例程序具体实现
首先,用VC的Wizard代码生成器生成一个MFC应用程序框架,在自动生成的过程中,选择应用程序是基于对话框的程序。当生成完毕后,在将自动生成的对话框类全部删除。再手动添加一个从CPropertySheet类继承的子类CPropertySheetWithLogoDlg类和一个基于CDialog类的CFirstPropertyPage类,同时在程序App类的InitInstance方法中删除关于自动生成的对话框类的代码。并加入如下代码:
更多精彩
赞助商链接