VB中子分类技术的应用

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

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

【 tulaoshi.com - 编程语言 】

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

(本文来源于图老师网站,更多请访问https://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即可. '调试过程中注意存盘,因为如果一时不慎会造成死机

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

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

延伸阅读
经常使用Lightscape进行室内表现的朋友们都应该清楚,LS的优势主要在于材质表现和全局光照的算法,它的建模能力几乎是没有的,而且模型和灯光的移动也比较麻烦,因为这不是Lightscape的强项。那么如果我们碰到以下的情况,你又是如何解决的呢? 问题:场景已经正确的从3dsmax中输出为Lightscape的准备文件Lp格式,并且场景中的主要材质和材质已...
路径问题 很多程序员在打开文件、调用程序时喜欢使用绝对文件路径,结果在另一台计算机上运行时便会遇到路径不对或需要重新拷贝到该目录的问题。其实,只要使用相对路径,就完全可以避免这个问题。在Windows下,某个程序一旦运行,除非特别指定了工作目录,一般该程序文件所在的目录就是工作目录,其他目录可以用工作目录为参照系。在编...
标签: Web开发
AJAX浅谈 AJAX技术在1998年前后开始应用于Web,之后经由Google把它发扬光大,让更多人了解到JavaScript原来可以这样使用,而不再是过去广告字显示或画面渐层等刻版印象。如今AJAX已不再是新名词或新技术,而最经典、有名的代表作算是Google Suggest及Google Maps。 AJAX的定义 AJAX全称为“Asynchronous JavaScript and ...
VB作为快速开发Windows下的编程工具,已经为越来越多的开发者采用。但如果要开发出专业的Windows软件,还需采用大量的API函数,以下结合笔者开发管理软件的经验谈几点体会。 程序中判定Windows的版本 众所周知,Windows3.x各版本或多或少会有些差别,为了使开发程序避免出现莫名其妙的错误,最好在程序运行前自动判定Windows的版本。采...
从VisualBasic的第一版至今,VB中有关文件的处理都是通过使用Open、Write以及其它一些相关的语句和函数来实现的。随着软件技术的不断发展,加上面向对象编程概念的日臻成熟,这些文件操作语句已经不能适应软件不断增加的复杂程度的需要了。因此,从VB6.0开始,微软提出了一个全新的文件系统对象FSO。 一、简介 文件系统对象...

经验教程

278

收藏

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