开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 4080|回复: 37
收起左侧

API 系列 课程 【第三课】

[复制链接]
发表于 2011-5-14 12:04:14 | 显示全部楼层 |阅读模式   江苏省南京市
第三课:API的参数传递这是API最重要也是最后一步了,我们要传入我们的参数API才知道要具体做什么。 VB 的程式设计模式是以物件为核心, 但 Windows 的程式设计模式却是以 Handle 为核心 ,因此在这里先简单说明什么是Handle。
Handle 就字义来说是[把手]的意思。以门为例,我们只有打开门才知道屋子里面有什么,而Handle就是门把,为了更好说明Handle,以下以一个例子为例:
Private Declare Function CloseWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Sub Command1_Click()
          CloseWindow Form1.hWnd
End Sub
单击Command1时你会发现窗体被最小化了,由于API在最小化一个窗体时要知道是哪个窗体要被最小化,这时要传入对象的一个Handle了,而这个Handle就如同上例中一样要用[对象.hwnd]来获得。Handle是管理员Window分给他们的唯一识别码,这样Window才认识他们,Handle是Long类型。更好的说法就是Handle对于程序中的对象就像***对于我们一样,都是唯一的。
传入的参数很多是Long型,这些Long型我们一般都是在程序中函数返回的,不是随便传入一个数字就行,如果这样的话,可能会让你的程序无法正常运行。如API的返回是Long,因此有时候我们可以把API得到的值再传入到另一个API中。
但如果要传入的参数自定类型的参数的话就要更麻烦一点了,首先应该在一个标准模块中先定义这个记录变量。看如下API的声明:
Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long
这个获得鼠标位置API要一个POINTAPI型的参数来接收鼠标的位置,POINAPIT类型的如何定义的呢?我们还要用到API文本浏览器,载入WIN32API,在[API类型]下面的下拉框中选择"类型",在下面的搜索框内输入[POINTAPI],双击得到声明,将他们复制到[标准模块]中。然后在代码框中输入(按F5后在窗体上移动鼠标就会在窗体上输出当前鼠标的位置):
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Dim p As POINTAPI
        GetCursorPos p
        Cls
        Print p.x
        Print p.y
End Sub
如果传入的参数是字符串的话,那么API的声明要有Alias,这也要注意。
另外,我们可以从参数的名称来知道要传入什么参数才是合法的,如参数名hwnd时,就是传入对象的Handel,一般用对象名.hWnd获得。
为了更好说明API的使用方法,下面的两课将以一个实用的实例来说明API的用法。
结帖率:96% (25/26)
发表于 2011-5-14 12:38:34 | 显示全部楼层   江西省抚州市
支持看看啊
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2011-7-3 16:55:12 | 显示全部楼层   广东省茂名市
好好学习,天天向上
回复 支持 反对

使用道具 举报

签到天数: 24 天

发表于 2011-7-7 06:34:44 | 显示全部楼层   浙江省杭州市
{:3_244:}谢谢楼主分享。
回复 支持 反对

使用道具 举报

发表于 2011-7-7 11:59:45 | 显示全部楼层   福建省厦门市
在看看第三课
回复 支持 反对

使用道具 举报

发表于 2011-7-7 23:19:01 | 显示全部楼层   广东省湛江市
没有视频的吗?要是有就好了
回复 支持 反对

使用道具 举报

结帖率:29% (9/31)
发表于 2011-7-16 01:46:47 | 显示全部楼层   海南省海口市
{:3_244:}{:3_244:}{:3_244:}{:3_244:}
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2011-7-19 16:12:49 | 显示全部楼层   辽宁省辽阳市
还得看看啊
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 2011-7-25 11:44:53 | 显示全部楼层   四川省达州市
分享到: QQ空间 腾讯微博 腾讯朋友
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)
发表于 2011-8-3 23:56:19 | 显示全部楼层   陕西省延安市
{:3_236:}看看怎么样,拿走!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表