菜鸟,大虾们。泡杯茶进来坐坐。今天主要是和大家讨论一个问题何为“类的派生技术”

wenquan836 2004-10-21 07:03:16
哦的VB书本里有提到“子类派生”这个。。。(我也不知道是什么东东)但是里面没有详细的介绍。只列了一个例子出来。

书本里就只列出了这么一小段代码,也没有解释, 有哪位高手能为大家讲解。讲解吗? 谢谢·!!
API:
callwindowproc
setwindowlong
getwindowlong
’------------
const GWL_WNDPROC=-4
Global lpPrevWndproc as long
Global gHW as long

public sub Hook()
lpPrevWndproc=setwindowlong(gWH,GWL_WNDPROC,AddressOf Windowproc)
end sub

public sub UnHook()
Dim temp as long
temp=setwindowlong(gHW,GWL_WNDPROC,lpPrevWndproc)
end sub

public Function Windowproc(byval hw as long,byval msg as long,byval wParam as long, _
byval lParam as long) as long
debug.print "Message:";hw;msg;wParam;lparam
windowproc=callwindowproc(lpPrevWndproc,hw,msg,wParam,lParam)
end function

private sub Form_Load()
gHW=Me.hwnd

end sub

private sub Command1_Click()
HOOK
end sub

private sub Command2_Click()
UnHook
end sub

书本里就只列出了这么一小段代码,也没有解释, 有哪位高手能为大家讲解。讲解吗? 谢谢·!!

还有如果有人回答了问题,我怎么把分数给他呢?

希望在CSDN里可以交到VB6.0的朋友 QQ114587904
...全文
100 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bladeinside 2004-10-26
  • 打赏
  • 举报
回复
mark
hansong_ll 2004-10-26
  • 打赏
  • 举报
回复
多谢Tiger_Zhao()的讲解。
Ruler82125 2004-10-26
  • 打赏
  • 举报
回复
我不懂为什么要用Global,用处是什么
Tiger_Zhao 2004-10-21
  • 打赏
  • 举报
回复
什么破书,误人子弟!

这是标准的窗口挂钩技术,根本与类没有任何关系。

挂钩技术:
窗口(Window)是用句柄(hWnd)作为唯一标识符,一个句柄就标识了一个特定的窗口。
作为标准,窗口的所有消息均通过一个过程(称为 WinProc)进行处理,而且该过程是用函数指针的方式进行操作的。
GetWindowLong(hWnd, GWL_WNDPROC) 返回窗口句柄相关 WinProc 的函数指针
SetWindowLong(hWnd, GWL_WNDPROC, pfWinProc) 替换函数指针并返回旧函数指针

Sub Hook() 中就是将窗口的 WinProc 指向 WindowProc,并保存旧函数指针在 lpPrevWndproc 中;
以后所有的窗口消息触发后就会自动调用 WindowProc,可以根据需要响应不同的消息,过程最后必须调用 CallWindowProc 将消息向下传递;
Sub Unhook() 中用来恢复函数指针。
badboy168 2004-10-21
  • 打赏
  • 举报
回复
学习中

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧