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

在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位的数值,它们的意义依赖于消息的类型.
财税街创始人石克清:创业须空杯心态+有效社交 自我知识管理:连贯性就是生产率 玩转Google I/O 2015:Android M、IoT、Glass 2.0、VR、ATAP ARC中Retain Cycle揭秘 失控与逆转!企业移动化2.0时代下如何求变? 玩转物联网之MQTT 专访都灵创客教育奚炎:被忽视的Maker教育 13岁iOS开发者:Swift开发Sprite Kit游戏实践 专访豌豆荚「自动装」开发团队:无需Root即可批量点击「下一步」 iOS项目的持续集成与管理 《近匠》谛听科技,探索智慧家庭的智能网关 【简讯】Python 3.5.0b1发布 《算法的乐趣》作者王晓华访谈:多看、多做、多想是秘诀 专访李祎:Java在Testin的技术应用 React首部经典图书推荐:全程经典实例,360度剖析React.js 再做一个Android!Google发布第二代VR眼镜Cardboard Go语言开发常见陷阱,你遇到过几个? 奏响年度最强音 第七届中国云计算大会日程全公布(表) 【CTO讲堂】请在还年轻的时候,尽量多踩些坑 以细分使用场景为突破点 探究墨迹天气的体验创新 熟练成就创造——MathWorks全球副总裁Richard Rovner、产品市场经理赵志宏专访 Objective-C编码规范:26个方面解决iOS开发问题 豌豆机器小组发布最新WRTnode2R,支持华为Liteos、QQ物联与AllJoyn [新书推荐]Node.js项目实践:构建可扩展的Web应用 【简讯】Perl 5.22.0 发布,大幅改进代码! 【征文】特别策划——群雄逐鹿共话新型数据库 针对DCloud侵权质疑,APICloud发布声明 《近匠》小鱼天气,中国风与细粒度空气质量检测 Xcode 7 beta发布,Swift 2.0带来哪些新变化? 【有奖征集】MDCC 2015演讲议题征集全面启动 Swift语言那些鲜为人知的特性 各位高手看过来》》》》 怎么做一个弹出菜单? 请问VC++的编译器开关是怎么回事? 为什么我把IIS配置好后,当我在一台客户机上游览的时候所有链接都不能用呢?请教如何解决? 在DOS下会死机吗? 何为A片?(搞笑 ) vc中执行 select count(*) from table 如何得到返回的数值? 非绑定的,能编辑的网格控件,是什么? SQL 2000 Text数据类型的问题 北京又起沙尘暴了。 我的RED HAT LINUX 的文件系统出了错误,怎样解结?谢谢! 100分请教ActivX控件的注册问题? 如何获得按钮的位置(x y) 请问“GetVolumeInformation( )”函数所获取的“序列号”,在用FORMAT格式化后是否会发生变化? 怎么建立XML树状目录? 救命啊 我也很着急,拜托~~~~~~~~~(关于发布和订阅的简单问题) 在pb中如何自激动窗口,急! 遍了一个简单的servlet,编译时提示:package javax.servlet does not exist! 怎样统计新闻发布系统的新闻点击数 小弟是新手,用GCC编译了一个源文件,生成一个叫a.out的文件,好像是可执行文件,但不知怎样执行,请告知!!! 请问怎样才能用MainFrame类中的函数来控制同一项目中的视(View类)的操作??? 搞个调查:在杭州的程序员年薪有多少K? 请问大虾,Active Dictroy有什么作用,另外到什么地方可以下载? 请问各位仁兄,珠海的2002年程序员考试在哪里报名?谢谢! 如何绕过禁止IP?请指点? 小和尚想开网吧!请问各位高手!网吧应该用什么样的的配置比较好!扩朴方式那总比较好! Question:有没有_获取“视频采集卡”的AV信号 的控件? win98下能安装oracle8i吗? 如何在ASP页面中对XML文档进行询?(问题较多) Insert into TableName values(?,?,?,?,?) 为何写入中文时数据库会是乱码??? 有几个技术问题求助!!!! 有人要去参加Visual studio.net发布会吗 失落中 如何打开被屏蔽的“运行”窗口、注册表编辑器?? 小和尚想开网吧!请问各位高手!网吧应该用什么样的的配置比较好!扩朴方式那总比较好! 哪位能给个简单的dll例子吗?我不知怎样写。 简单问题:谁知道改变屏幕的一块区域的颜色的函数是什末? 有关数字视频监控系统的问题!!! 改错误 打算用PB做个Oracle管理器,请给点意见参考参考 如何在APPLET中读入 HTTP中将其他网页的内容 小女子求教!对您可能非常easy的问题! pb6.5做b/s!求救!送分! 这个问题,我都不好意思问,pb70如何编译成exe文件啊? 集成主板的声、显、网卡的问题。(内详) 怎么连sybase 数据库! 怎样用vb实现ctrl + alt + delete键的功能 求超级兔子魔法设置4.2的注册码,一定高分相送 如何调用数据库中带输入、输出参数的存储过程 ASP页面里用下拉框控制日期显示时,没有31号的月份怎么控制不显示31号呢? 英语翻译公司名称:青岛欣润香尔工贸有限公司.(公司名称不要翻译成拼音,要意义不错的谐音英文单词)主要从事经营礼品包装,印刷,工艺品等. 物理题浮力求解答 !正方体的边长是10cm浸入水的深度为8cm,求1、正方体底部的压强2、正方体底部的压力3、正方体受的重力4、正方体的质量5.正方体的体积6是正方体的密度 戊戌变法颁布的法令有和重要历史意义? 请高手帮忙将一个公司名称用英语翻译过来.将“xx市金丰房地产开发有限公司”翻译成英文名称.在线等待!xx小区建设项目管理规划刚才忘了这个,现在补充上去,再麻烦各位一下。 中国近代史上第一部宪法性文件是什么? 什么叫平行板电容器充电 磁通量的公式是nBS还是BS 有没有线圈匝数n?貌似是没有的你们最好查下! 如图所示,一边长为10cm的立方体木块,在水中一边长为10cm的立方体木块,在水中静止时,刚好有二分之一露出水面.若g取10N/kg,求: (1)木块的密度是多大? (2)用手将木块缓慢压入水中,当木快刚好全 两个等量异种点电荷+Q和-Q,相距为r,在它们连线的中点O处放置另一电荷q,则Q所受的电场力的大小是等于谁解释下为什么q受到二个点电荷的库仑力方向相同, 磁通量的计算公式磁通量=? 【历史】根据材料,为什么说新中国第一部宪法的颁布是全国各族人民长期奋斗并获得胜利的一个成果?P.就靠你们了!材料:我国宪法的颁布,是全国各族人民长期共同奋斗获得伟大胜利的一个 国体与政体?国体与政体的概念是什么?各个国家的国体和政体是什么?我国的是什么? 边长是10厘米的正方体木块,漂浮在容器中的水面上,如果木块下底面受到的压力为8N,则木块受到的重力为()N,木块浸入水中的深度为()厘米?(g取10N/kg) 钦定宪法大纲是中国历史上第一个宪法性质的条件,在当时的时代背景下你怎样评价它请参照岳麓版必修一第十七课综合探究:探索中国近代整体变革的艰难历程 国体与政体之间的关系 磁通量公式能用面积的变化量乘磁场的变化量吗,为什么 高中化学题求大神解答 中国的国体和政体是什么? 圆柱形容器中装有水,水中漂浮着一个边长为10cm的立方体木块,木块有1/5露出水面h=20厘米,用力将木块向上拉起,当木块在水中的体积为总体积一半时,水面下降个1.5cm(g取10N/kg) (1)木块漂浮 将含一种杂质(其质量小于 0.3g)的丙醛试样 8g,与足量的银氨溶液反应,析出 银 30.6g,则该杂质可能是 A 甲醛 B 乙醛 C 丁醛 D 戊醛如图,还有,我这题是杂质质量小于0.3g,网上都是大于0.3g 我国的国体与政体的关系? 英语翻译This measure,a personal belief in the event,can vary among various individuals.While this sounds perhaps like a little too much freedom,this view comes with a rule for updating probability in light of new observations,known as Bayes theor 1787年宪法规定美国的国体是什么A君主立宪制B资产阶级共和制C责任内阁制D联邦制 为什么GB/T18033-2007没有TP2化学成分的要求 求高手帮忙翻译一段英文合同,谢谢!the use of any of the foregoing, infringes, wrongfully uses, or misappropriates any third party Intellectual Property Rights, private rights or contractual rights; (ii) Claims of personal injury (includi 平行电板电容器充电的时候有电流吗?平行电板之间没有直接相连,空气作为电介质,电板接入电源之前不带电,接入电源之后,负电子移动到一个电板上,正电荷移动到另一个电板上,那么这有没有 相距为r的A、B两点分别带有等量的异种电荷Q和负Q,AB连线中点处的电场强度为?这题我一直不懂,kingtheme~不好意思, 英语翻译3 safety stepsas we can see from the pie chart,based on data from the study "UK children go online",many children have had little or no education about how to use the internet safely.however,when parents and teachers do take time to discu 如题.根据我国第一部社会主义宪法规定,我国的国体和政体分别是什么?我国人民代表大会制度和西方的三权分立制度有何本质的区别?三权分立在西方和近代中国是如何付诸实践的? 不锈钢303含镍多少?GB牌号为0Cr18Ni9这个是什么材质呢? 匀强电场内部场强处处相等吗E=kQ/r.r,是吗,那么场强不是与r有关吗,所以我认为匀强电场内部场强不相等 平行板电容器在电路中的问题一平行板电容器与阻值为10欧的电阻串连,电源电压为100V,接通开关,电容器是否会有电阻,电路中电流多大,且是否会有电流经过平行板. 不锈钢SUS443对应的国标GB牌号怎么写? 为什么匀强电场场强处处相等请证明两金属板组成匀强电场中不同点场强相等 请问一个电路中的平行板电容器充电过程中,这个电容器的电阻如何变化? 电容器的放电速度于什么有关 在场强为4*10^ 5V/m的匀强电场中,一电子从A点移动到B点.已知AB间距离为20cm,AB连线与电场线成30度夹角,求电子势能的变化. 为什么说南方周末应该成为北方报业的典范?南方周末做得很好吗?范冰冰跟南方周末有什么关系呢? 参保人姓名英语怎么说阿?谢谢同问~ 在场强为E的匀强电场中,一绝缘轻质细杆l可绕O点在竖直平面内自由转动,A端有一带正电的小球,电荷为q,质量为m.将细杆从水平位置自由释放,则(1)小球由A到B的过程中电势能如何变化?(OA与O 南方周末好吗? 社保号码用英语怎么说 匀强电场中为什么场强处处相等,匀强电场中电势特点怎么样?匀强电场中电势的等势面是不是垂直于电场线? 南方周末被处罚一共有几次南方周末因报道而遭到官方处罚共有几次,每次都是怎么处理的,这对南方周末的报道思想和报道风格产生过哪些影响请尽快回答~ 详细的加分~ 管理员工社保信息 英语怎么说请帮忙翻译下面的句子,谢谢登记和管理员工的社保和公积金信息. 氨熏试验标准 GB/T10567.2-2007请求好心人提供一份,要求比较清晰, 关于两个等量异种点电荷在其连线中点的电场强度和电势(规定无穷远处电势为零),下列正确的是(  )关于两个等量异种点电荷在其连线中点的电场强度和电势(规定无穷远处电势为零 电场线方向上的场强大小怎么判断 匀强电场中场强的计算公式对于Ud有什么具体的限制 GB/T 18522.6 2007第4.2条是什么 两个等量的异种点电荷,在其连线中点的电场强度和电势,下列说法正确的是 英语翻译过去经常发现很多市政的、公司的英文名称出现错误,实在担心自己翻译的也错误多多,那是要闹大笑话地,所以,在此恳请专家、高手们能帮忙,公司中文名称:“浙江英特医药药材有 半径为r的绝缘圆环上带有电荷量为q的正电荷,q在环上均匀分布,现在环的顶部切去d的一段,求环中电强 等量异种电荷,同种电荷连线上中垂线上的特点和电势和电场强度的变化及原因.如为什么等量异种点电荷连线上以中点O场强最小,中垂线上以中点O的场强为最大 等等~ 英语翻译请高手准确翻译以下2个名词广东烟草AA有限责任公司BB分公司广东省BB烟草专卖局 如图所示,边长为10cm的立方体木块,浮在油和水的分界面上,它浸在水里的深度5cm,其余部分浸在油里若水深20cm,油深10cm,容器的底面积是20cm2,求:木块受到的浮力及木块的密度(ρ油=0.6×103kg/m3, 六方紧密堆积晶胞结构的中心原子在晶胞的体心上吗? 英语翻译北京百事迅捷房地产经纪中心 边长为10cm的立方体物体,浸没在水中,物体上表面与液面平行,且液体表面到物体上表面的深度均为5cm.g取10N/kg)求:1.在水中,物体上表面受到的压力大小和方向.2.在水中,物体下表面受到的压力 戊戌变法的法令有哪些 这些法令有什么意义
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘