VB中子分类技术的应用

2016-02-19 21:47 9 1 收藏

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的VB中子分类技术的应用,希望大家看完后能赶快学习起来。

【 tulaoshi.com - 编程语言 】

  子分类技术的原理:要先取得原先Window Procedure所在的地址,将之记录起来,接着设定所有的消息都先转到我们所写的消息处理过程上来,我们过滤传过来的消息,寻找特定的消息进行处理,其余的送回系统,由系统决定如何处理。等到我们不需要再处理这些特定的消息时,便取消消息的截取,即中止子分类过程。它一般需要三个过程:开始截取,消息处理,中止截取.

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  程序需要一个模块,在模块中声明如下:
'API函数Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) A s Long Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hwnd As Long, ByVal nIndex As Long) As Long Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
(ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
'定义常数Public Const GWL_WNDPROC = (-4) Public Const WM_MOUSEMOVE = &H200 Public Const WM_RBUTTONDOWN = &H204
'全局变量,存放控件标志性数据Public preWinProc As Long
'本函数就是用来接收子分类时截取的消息的Public Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As
Long
'截取下来的消息存放在msg参数中.
if msg=WM_RBUTTONDOWN then
'检测到鼠标右击消息,这里就可以加入我们的处理代码如:
msgbox "你好,鼠标右击消息!"
'需要注意,如果这儿不加入任何代码,则相当于吃掉了这条消息. else
'如果我们不是我们需要处理的消息,则将之送回原来的程序.
wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam) endif End Function
'以下代码在窗体中: '本例以截取一个combobox控件的消息为例,假设该'控件的名字是:comb1 Private Sub subclass() Dim ret As Long
'记录Window Procedure的地址
preWinProc = GetWindowLong(comb1.hwnd, GWL_WNDPROC)
'开始截取消息,并将消息交给wndproc过程处理.
ret = SetWindowLong(comb1.hwnd, GWL_WNDPROC, AddressOf wndproc) End Sub
Private Sub EndSubclass()
Dim ret As Long
'取消消息截取,结束子分类过程.
ret = SetWindowLong(comb1.hwnd, GWL_WNDPROC, preWinProc) End Sub
'当要截取其它控件的消息时,只需要将subclass与EndSubclass过程中的comb1.h wnd换成该控件的控件.hwnd即可. '调试过程中注意存盘,因为如果一时不慎会造成死机

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1627180.html

延伸阅读
初学VB编程,很快就能编出些实用的程序了。我便将它们制成安装盘送给朋友,但很快就发现一个问题,程序总是按编程时固定好的路径读写文件,但文件路径改变,程序就找不到路径了,因此不能正常写文件。例如编程时设定:picture1.picture=LoadPicture("c:HVBHAN.BMP")但若安装使用时,工作目录变为E:HVBHAN.BMP或其它路径,程序就会出错,并提示...
从VisualBasic的第一版至今,VB中有关文件的处理都是通过使用Open、Write以及其它一些相关的语句和函数来实现的。随着软件技术的不断发展,加上面向对象编程概念的日臻成熟,这些文件操作语句已经不能适应软件不断增加的复杂程度的需要了。因此,从VB6.0开始,微软提出了一个全新的文件系统对象FSO。 一、简介 文件系统对象...
VB作为快速开发Windows下的编程工具,已经为越来越多的开发者采用。但如果要开发出专业的Windows软件,还需采用大量的API函数,以下结合笔者开发管理软件的经验谈几点体会。 程序中判定Windows的版本 众所周知,Windows3.x各版本或多或少会有些差别,为了使开发程序避免出现莫名其妙的错误,最好在程序运行前自动判定Windows的版本。采...
路径问题 很多程序员在打开文件、调用程序时喜欢使用绝对文件路径,结果在另一台计算机上运行时便会遇到路径不对或需要重新拷贝到该目录的问题。其实,只要使用相对路径,就完全可以避免这个问题。在Windows下,某个程序一旦运行,除非特别指定了工作目录,一般该程序文件所在的目录就是工作目录,其他目录可以用工作目录为参照系。在编...
6 月份,我们谈过您为什么要使用 CORBA 和 Java 技术。本月,我要通过一个可用的简单示例,让您开始探索 CORBA 技术的许多领域。不过,别忘了我们的目标是,创建这样一种分布式应用程序:使驻留在一台计算机上的客户机能向运行于另一台计算机上的服务发出请求。我们不想为诸如硬件或操作系统软件等细节问题操心,而只是想让这种服务能响应...

经验教程

404

收藏

54
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部