在VFP中制做异型窗口

在VFP中制做异型窗口
(作者:周鸣扬 2000年09月04日 11:50)

制做异型窗口听起来好象只是在VB、VC程序设计中才能够做到的。但是,在VFP中,只要你灵活运用API函数,这并不是一件很难实现的事情。通过本文的介绍,你一定能够发现VFP程序的强项不仅仅是数据处理,在程序界面设计方面也可以和其他的编程语言相媲美。

一、实现原理

在VB、VC程序的设计中,如果想要改变窗口的形状,通常会通过对SetWindowRgn的调用来达到目的。SetWindowRgn函数能够将窗口设定成任意形状。该函数的调用格式如下:

int SetWindowRgn( HWND hWnd, HRGN hRgn, BOOL bRedraw )

其中各参数的含意为:

hWnd:欲改变窗口的句柄

hRgn:窗口的显示区域

bRedraw:指明窗口在被改变显示区域之后是否需要重绘,通常情况下该值为真。

通过上面对SetWindowRgn函数的介绍,我们可以看出,在VFP中要想改变窗口的形状,需要知道VFP窗口的句柄。在VFP中要想直接得到有关窗口的情况是很困难的,因此必须利用API例程库。VFP自带的API例程库“Foxtools.fll”提供了对窗口操作的相关函数。本文中能够用到的例程有_WOnTop()和_WhToHwnd()两种,其中_WOnTop()是用来获得顶层窗口的句柄,_WhToHwnd()返回指定窗口的句柄。这两个API例程的调用格式很简单,这里就不再详细介绍了。

二、实现过程

有了上面的认识之后,我们便可以试着去设计异型窗口的程序了。设计步骤如下:

1.新建一表单Mult_shape,按表1设置表单的属性。

表1

属性名 设置值 备注

AutoCenter .T. 自动居中
BackColor 0,0,160 蓝色背景
BorderStyle No Border 窗口无边框
ControlBox .F. 去掉表单的最大化、最小化、恢复按钮
Caption 圆形窗口
FillColor 128,255,0
ShowWindow 2-as Top

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus