鹰之翼

黑鹰的世界

  DonewsBlog  |  Donews首页  |  Donews社区  |  Donews邮箱  |  我的首页  |  联系作者  |  聚合   |  登录
  79篇文章 :: 58篇收藏:: 34篇评论:: 1个Trackbacks

文章

收藏

相册

朋友的BLOG

朋友网站

网站留言板

我的网站

我管理的几个论坛版面

存档


正在读取评论……


昨天晚上一时睡不着,在翻阅软件报时看到一篇在VB中实现窗体特效的功能代码,在VB中实现这个功能是小意思,很简单就能完成。但自己在看这个API函数是发现这些函数参数类型很少,而且在VFP中都支持这些类型,于是,想到在VFP中实现这些功能也应该值得一试。

但可行归可行,但并非一帆风顺。

自己一开始用下面的代码试了一下。

declare integer CreateEllipticRgn IN "gdi32" integer X1,integer Y1, integer X2,integer Y2
DECLARE integer SetWindowRgn IN "user32" integer hwnd,integer hRgn, Boolean blReDraw
LOCAL hRgn as Integer
hRgn=CreateEllipticRgn(0,0,200,300)
setWindowRgn(thisform.HWnd,hRgn,.t.)

很显然,这是个照猫画虎的做法。

但运行出错“Cann't Find entry  Point in the DLL”

呵,超底级错误!!VFP不区分大小写所致。改过来

declare integer CreateEllipticRgn IN "gdi32" integer X1,integer Y1, integer X2,integer Y2
DECLARE integer SetWindowRgn IN "user32" integer hwnd,integer hRgn, Boolean blReDraw
LOCAL hRgn as Integer
hRgn=CreateEllipticRgn(0,0,200,300)
SetWindowRgn(thisform.HWnd,hRgn)

好,能过,但没反应。自己一愣,再试,还是一样。

于是,自己抓错误码

declare integer CreateEllipticRgn IN "gdi32" integer X1,integer Y1, integer X2,integer Y2
DECLARE integer SetWindowRgn IN "user32" integer hwnd,integer hRgn, Boolean blReDraw
LOCAL hRgn as Integer

on error errno=error()

hRgn=CreateEllipticRgn(0,0,200,300)
SetWindowRgn(thisform.HWnd,hRgn,.t.)

messagebox(alltrim(str(errno)))

返回错误码1230:参数太少

不可能,自己反复检查,这几个参数,自己不至于数不清吧!!郁闷

后来,自己试着,把thisform.hwnd改为0,问题依旧。

后来,试着把后面的.t.去掉,哈,成功了(结果就不说了)。
不过自己一直搞不清:

为什么VFP只能掉用两个参数呢??

以后再说吧。



Trackback: http://tb.donews.net/TrackBack.aspx?PostId=47537


[点击此处收藏本文]  发表于2004年07月22日 10:59 AM




正在读取评论……

发表评论

大名:
网址:
验证码
评论