说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在VB中使用API函数 (之四)

HTML文档下载 WORD文档下载 PDF文档下载
在VB中使用API函数 (之四)

 
回调(CallBacks)
所谓回调,就是你自己定义一个函数,并告诉Windows何时为何调用.你可以写一个有特定数量和类型参数的函数,然后告诉Windows何时调用,并传递给它所需的参数.Windows就会调用你定义的函数,处理参数,并给你返回值.

回调的一个典型应用是从Windows获得连续的数据流.这里是一个需要回调的函数的声明:

Declare Function EnumWindows Lib "User32"ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

第一个参数是你的回调函数的地址,第二个参数是你想传递的的任意数值.该值将被传递到你的函数,于是你就知道了它要调用什么.

VB 5.0已经提供了一个很有用的操作符 AddressOf ,可以得到一个函数的地址.当你调用一个函数时它只能用在参数的前面,下面这种用法是错误的并且会导致出错:

FuncP = AddressOf MyFunction

因此你必须这样调用EnumWindows函数:

Success& = EnumWindows(AddressOf cbFunc, 58&)

你必须也要自己写回调函数.问题是有很多不同类别的回调并且有各种各样的参数,有关这些参数的描述可以在SDK帮助或MS SDK文档中找到.这里是一个回调的声明:

Function cbFunc (ByVal Hwnd, ByVal lParam) as Long

这里是一个回调的例子:

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA"(ByVal hwnd As Long,ByVal lpString As String,ByVal cch As Long) As Long

Success& = EnumWindows(AddressOf cbFunc, 58&)

Function cbFunc (ByVal Hwnd, ByVal lParam) as Long

If lParam = 58 then 'enum windows

Str$ = Space(255)

Ret& = GetWindowText(Str$, Len(Str$))

Debug.Print Left(Str$, Ret&)

End If

End Function

这个例子将列出窗口的标题,(不包含子窗体)

窗口程序

Windows并不知道事件. 这些是VB特有的隐藏Windows获取你的窗口发生事件的真正方法的一种方式.VB很像是一个将Windows语言翻译成VB语言的解释器.

但是事实并非如此,你很快就会遇到.设想你想知道用户何时加亮了菜单选项(不是点击,只是加亮即选择了)VB并不提供这种事件,但你可能见到其他的程序,但你浏览它的菜单时状态栏会出现相应的文字.如果他们能,你为何不能?

OK,这里是大致的真实情况.每个窗口都有一个特殊的程序叫做窗口程序.它实际上是一个回调函数.该函数将在你的窗口发生事件的任何时间发送消息.这样当用户加亮一个菜单项时就会发送一条消息(WM_COMMAND).

那为什么我看不到这条消息呢?这是因为是VB创建窗口程序而不是你.当Windows发送消息时,该程序将为之分派特定的事件,并将其参数转换为比较容易用的事件的参数.但是在有些情况下,它会忽略有些消息而不能收到真实的输入.如果你真的想得到这些消息,你必须对你的窗体进行子类处理,我们将在另外一个主题中谈到.

这里是一个回调窗口程序的声明:

Function WindowProc(ByVal Hwnd As Long, ByVal wMsg As Long,ByVal wParam As Long, ByVal lParam As Long) As Long

第一个参数指定窗口的句柄,第二个参数是消息的标识符(如WM_COMMAND或WM_MOUSEMOVE),wParam和lParam时两个32位的数值,它们的意义依赖于消息的类型.
一周消息树:被投资人“送”入看守所,创业人汪洁有罪还是无罪? 聚焦五大主题 Atlassian Summit 2014精华PPT下载 2014中国移动开发者大调查第四期获奖名单曝光 【问底】许鹏:使用Spark+Cassandra打造高性能数据分析平台(一) 【特惠倒计时两天】参加深圳微信开发者大会赠书及全套讲师讲义 《英雄联盟》支撑最高750万同时在线用户的聊天服务打造 深圳云软技术副总黄榕振:招行信用卡微信公众号开发高级篇 来自未来的你,MDCC 2014新奇智能硬件揭秘 Twitter开源云环境时间序列数据断层检测工具BreakoutDetection 浅析Facebook软件架构:Tao和BLOB的实现原理 【图文实录】CTO俱乐部:走近Keen Team,走近智能设备Hack 2014聚合开发者大会(JDDC)在京召开 专访腾讯反病毒实验室:揭秘TAV引擎,哈勃分析系统两大利器 Cocos Studio v2.0 Beta0正式发布!多维升级,合三为一 环信即时通讯云获3000万融资 用于研发运维 苹果谷歌都无力?前员工开发跨设备无缝同步应用 带你看会带你飞!MDCC 2014移动开发者大会参会指南 Meteor 1.0发布 构建更好的Web应用 【专访】敏捷专家吴穹:敏捷测试的行业应用与实战解析 英特尔中国研究院最新成果亮相 展示智能衣服瓷杯机器人等创新作品 Node.js 打造实时多人游戏框架 深圳微信开发者大会购票企业特征分析 上门汽车服务“e保养”完成A轮500万美元融资 Docker之父Solomon Hykes谈项目开发的初衷和挑战 浪潮是如何实现单日5000台x86服务器交付互联网的? Bootstrap 3.3.0发布 版本4不再支持IE8 漏洞预警:FTP曝严重远程执行漏洞 影响多个版本Unix 【简讯】W3C小组宣布HTML5标准制定完成 AMD发布GPUPerfAPI 2.14,GPU性能检测更Easy! 开放能力升级——微信公众号登陆授权开启公测! 百度最“智能”的新型推荐技术——智能因子分解机 OO里面的"is a"和"has a"应该如何理解啊?举个例子看看 请问在哪可以找到可以做简历封面的图片呀?后天就是招聘会啦,快快帮忙呀~~~ javaServlet的一个问题。急! DELPHI高手!-----300分 ASP开发问题,如何在用户提交注册信息时自动分配给它一个用户ID号? 我想在 Excel 中给文件字加双下划线,可是编译时提示变量没有定义 有谁能给我一份简单的COM代码? 有关interface??? 昨晚,初恋情人不经意的出现在梦中,你到底离你的初恋情人有多远,撒分了 一个昨天没搞明白的问题! redhat 7.2中如何设置代理服务器 求教高手一个Java中一直困扰我的问题,急!急!急! 谁能够给我个例子实现 Dll向应用程序单向通信 Dll->EXE?50分? 请问.......... 在数据窗口拖动垂直滚动条死机。只能ctrl+alt+del结束任务。倾听你的声音。 请教各位大虾两个Sql语句 哪里有visual studio.net下载? 那里有sql server 2000企业版下载的 xml的学习??????双儿 怎么比较两个LPTSTR字符串啊??? 语句“rs.Open sql,conn,1,1”中后边的两个数字参数是何意思? 如何获取datawindow中文本框内容? 请教公司大院网络系统设计方案要怎写?会遇到什么问题? 关于clientdataset的返回值问题 关于报表打印的问题!火急。。 这个世界上有多少C/C++程序员? 关于ARP广播域的问题????????????????、 请问什么服务器支持global.jsa 安装oracle数据库出错!!!!!!!!!!!! 如何在对话框的OnPaint()函数中得到该对话框的窗口大小? 一个看似简单却很棘手的问题,不得不请教各位。。。 哪里有将rm文件转换成avi或者mpg格式的软件? 关于ARP广播域的问题?????????????? 请问,,怎么设定mshflexgrid的属性,使其各列的宽度与数据源字段的宽度一致 请问这几个对象是否代表同一个对象? 菜鸟问题:如何跟随鼠标拉出一虚线矩形框?回复就有分! 高分寻Authorware v6.0 注册码 在数据窗口中有“部门”和“员工”两个列,分别采用各自的下拉数据窗口显示。如何使得“部门”改变时,“员工”显示与其对应的人员而不是“员工”表中所有人员。 怎样安装UNIX? 灌水加求救…… T-SQL中SELECT句中可不可以有存储过程。。。。。。。。这样为什么不行呢?(100分酬谢) MS SQL SERVER 有谁知道型号为CDU111-NE 的SONY光驱是多少速的吗? 谁对RTTTL格式文件了解,怎么把它转换成可以发送的二进制格式? 关于ORACLE存贮过程的迷惑,请各位大侠解惑! 请问如何向ActiveX控件发送一个自定义数据结构的指针 有没有好一点的ASP上传组件?? asp调用dll失败!!! 为何用了2个以上的单元有调用窗体就出现 access violat at address XXXXX in module的错误 请问有没有一些用来专门用作软件测试的测试软件? EPSONSTYLUS C20SX 型号的打印机支持NT4吗? 可数名词前用了分数谓语动词用单数还是复数? 一个半小时 英语 one and a half hours 这个hour需要复数吗? sweet dumpling是什么意思``? a large quantity of +复数名词(可数) 谓语动词是用单数形式还是复数形式但是很多语法书上都说跟OF后的名词....想看看跟多的答案 one hour and a half 的谓语是单数还是复数,one and a half hours 的谓语是单数还是复数我们老师说第一个是复数,第二个是单数, sweet rice dumplings什么意思 将20毫升98%的浓硫酸(1.84克/厘米³)稀释成40%的稀硫酸,问可配制多少g的稀硫酸加水多少毫升是不是126.96g,加水90.16ml 有两种硫酸,一种浓度为60%,另一种浓度为90%.现在要配制浓度为70%的硫酸300克,则应取60%的 硫酸多少克? sweet dumpling 100立方-99立方+98立方.+2立方-1立方=?希望有人知道怎么做 有两种硫酸,一种浓度为60%,另一种浓度为90%.现在要配制浓度为70%的硫酸300克,问每种硫酸各取多少%B有两种硫酸,一种浓度为60%,另一种浓度为90%.现在要配制浓度为70%的硫酸300克,问每种硫酸各取 把50g溶质质量分数为98%的硫酸溶液稀释成20%的硫酸溶液,得到20%溶液多少克?加水多少克 1的立方十2的立方十3的立方等于36吗? 一方0.5:1水泥砂浆等于多少公斤水泥、多少公斤砂 大理石地砖的厚度一般是多少? 1立方+2立方+3立方+4立方+...+10立方 要把30克质量分数为98%的浓硫酸稀释为20%的稀硫酸,需要水多少克 we usually eat a kind of rice dumpling called yuanxiao中called为什么加ed? 观察下列各式:1的立方+2的立方十3的立方十4的立方=100 =1/4x16×25=1 /4×4的观察下列各式:1的立方+2的立方十3的立方十4的立方=100=1/4x16×25=1 /4×4的立方×5的立方.若n为正整数,试猜想1的 墙体均在室内地面以下60处设20厚1:2水泥砂浆掺3%防水剂作防潮层,防潮层必须连续贯通.怎么算防潮层?这句话通俗的怎么理解? Yuanxiao is a kind of rice _____.(dumpling)dumpling后面要加s吗 英语中,遇到不可数名词,谓语用单数还是复数? 防水剂要不要参水搅拌 配制1000毫升溶质质量分数为10%的稀硫酸,需要溶质质量分数为98%的浓硫酸多少毫升?同时需加入多少克水 复合名词后谓语用复数还是单数 one and a half 后面跟的名词用单数还是复数?其后跟的谓语动词用单数还是复数? we usually eat a kind of rice dumphing called yuanxiao. any 后面的名词究竟跟复数还是单数形式?其谓语呢?感觉有时候跟可数名词有用单数,也有用复数的.请大师详细举例区分一下! one and a half 后用谓语动词单数还是复数? 地砖上墙 怎么贴用地砖贴墙,请问,是不是必须用胶泥?可以在沙子水泥中掺入108胶代替吗?300mmX600mm的砖 98%的浓硫酸密度是1.84 30%的硫酸密度是1.22 求50%的硫酸密度是 英语中 half of 后是名词复数时/单数名词复数/单数名词是谓语动词应该用什么? 地板砖可以贴墙吗时间长会掉下来吗 1的立方+2的立方+3的立方+……至十的立方,和是多少?怎么算? 配制1000毫升溶质质量分数为10%的稀硫酸,需要溶质质量分数为98%的浓硫酸多少毫升?同时需加水多少克? 用什么贴地板砖比较薄我家在农村是二层小楼 因为盖的比较早 所以高度比较矮 是水泥地板比较潮湿 我现在想在贴层地板砖 用什么和地面水泥层黏贴比较好 越薄越好 因为楼层比较矮 1立方+2立方+3立方.+10立方一步一步写下来, hair与rice为什么不可数 想要配置500克溶质的质量分数为19.6%的稀硫酸,需要溶质的质量分数为98%的硫酸多少? 2毫升 密度为1.84克每立方厘米 质量分数是百分之九十八的浓硫酸 将它配20毫升溶液后 硫酸的物质的量浓度是 rice 和hair都是不可数名词,为什么可以a hair不可以a rice? 实验室需要配制1mol/L的硫酸100ml,需取用98%的浓硫酸多少毫升? one and a half years 谓语动词用单数还是复数?one year and aone and a half years 谓语动词用单数还是复数?one year and a half 谓语动词用单数还是复数? hair(不可数) 铅酸蓄电池、成都铅酸蓄电池、四川铅酸蓄电池什么牌子好?想购买铅酸蓄电池、四川成都铅酸蓄电池哪家的好,是什么牌子的,求助! one year and a half作主语 ,谓语动词用单数还是复数?在线哈,大家速度点~~~最好来几个例句解释下 hair可数不可数?回答:(可数 不可数)就可以了. 请问,铅酸蓄电池 铅的占比一般有多少,生产车用电瓶,需要什么等级的铅做为材料? one and a half apples&one apple and a half的谓语动词应该是复数还是单数? hair在什么情况下是可数名词,什么情况不可数? 汽车、电机车一般要使用铅酸蓄电池.某铅酸蓄电池用的酸溶液是溶质质量分数为30%的稀硫酸,先用1L溶质质量为98%的浓硫酸(密度为1.84g/cm3)配制该稀硫酸.问:(1)1L溶质质量分数为98%的荣 one and a half+复数名词作主语,谓语动词用什么形式 我现在要造房子,落地面积80平方,造三层现浇框架,需要多少水泥、黄沙和石子!没这经验!请懂朋友帮忙谢 a salty rice dumpling 中文是什么粽子? 已知:a²+a一1=0,求a的立方+2a²十1999 水泥砂浆地坪宽1.5米、厚15公分怎样求每平方的用料水泥和沙子的配比是3:1 欲配制600克溶质质量分数为19.6%的稀硫酸,需要这中硫酸多少毫升?硫酸化学纯(CP)(500ML) 品名:硫酸 H2SO4 相对分子质量:98密度:1.84g/cm3 质量分数:98% 请问a quantity of与 quantities of修饰的名词作主语时,谓语动词单复数如何决定?请举例说明, 是one and a half hours还是one and a half hour 实验室常用溶质质量分数为20%的稀硫酸.现配制这种硫酸500g,问需要多少毫升溶质质量分数为98%,密度为1.84g/cm^3的浓硫酸?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn