VFP绘图功能-新.doc
- kehan123个人认证 |
- 2017-01-18 发布|
- 160 KB|
- 36页
用VFP为可视类增添绘图功能
http://www.yesky.com/139/36139.shtml
分享到:我要吐槽
Visual Foxpro中提供了基于 _Screen和表单窗口的绘图方法,如用Pset、Line画点、线等。然而感到其方法较有限,如有时需绘制圆弧、扇形或想对多边形填充,却发现Visual Foxpro可视类未提供相应的方法。现笔者找到两种解决方法: 解决方法之一,可用控件自身的Pset及Point方法根据图形学基本算法设计子程序,该方法速度慢得让人无法忍受且效果不好。解决方法二,调用Windows API函数。Windows执行过程中常常通过动态连接库(DLLs)支持其所需的许多功能。这些动态函数库加载在内存中根据需要与用户程序进行连接。API 库中有丰富的图形操作函数。调用API函数有许多优点:功能全、速度快、程序代码小。 有关访问API函数的文章已不少,这里不再重复。然而使用API函数在窗口或设备中绘图时,必须得到该窗口或设备的句柄HDC。在Visual Foxpro参考函数中却找不到获得HDC的方法,虽然可用API中的GetDc函数获得某窗口的HDC。但该函数又需用到窗口句柄作参数。如何获得窗口句柄呢?API函数(如:GetActiveWindow, GetWindow等)直接返回的是整个应用程序窗口句柄,而用户窗口一般是VFP应用程序中的一个文档窗。 其实在VFP中返回用户窗口一个很方便的方法是通过FOXTOOLS.FLL库中WOnTop和WhToHwnd函数。上述函数语法如下: WHANDLE WonTop()* 返回用户使用的活动窗口WHandle HWND WhToHwnd(WHandle)* 返回相应的窗口句柄hWnd。 HDC GetDC(hWnd)* 返回指定窗口hWnd的设备句柄hDC 有了设备句柄调用绘