| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3746 人关注过本帖
标题:关于callwindowproc函数
只看楼主 加入收藏
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
 问题点数:0 回复次数:14 
关于callwindowproc函数
请问哪位有关于callwindowproc函数的各个参数的意义及用法示例?

可否贴上来告诉我下!

我电脑中的帮助文档找不到这个函数,搜索到的资料也都没有说明得比较详细。所以才来这边向大家拿拿看~~~~~`
搜索更多相关主题的帖子: 函数 
2007-08-23 19:02
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
收藏
得分:0 

实例。。他们发的API查询器不是有吗。。。。。下下来看下不就知道了。。。
不过没什么说明。。。实例到有一个

'Create a new project, add a module to it
'Add a command button to Form1
'In the form
Private Sub Form_Load()
'Joforn 2007
'Blog:Http://Blog.163.com/Joforn/

'E-Mail: Joforn@sohu.com
'Subclass this form
HookForm Me
'Register this form as a Clipboardviewer
SetClipboardViewer Me.hwnd
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Unhook the form
UnHookForm Me
End Sub
Private Sub Command1_Click()
'Change the clipboard
Clipboard.Clear
Clipboard.SetText "Hello !"
End Sub

'In a module
'These routines are explained in our subclassing tutorial.
'http://www.allapi.net/vbtutor/subclass.htm
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong 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
Declare Function SetClipboardViewer Lib "user32" (ByVal hwnd As Long) As Long
Public Const WM_DRAWCLIPBOARD = &H308
Public Const GWL_WNDPROC = (-4)
Dim PrevProc As Long
Public Sub HookForm(F As Form)
PrevProc = SetWindowLong(F.hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Sub UnHookForm(F As Form)
SetWindowLong F.hwnd, GWL_WNDPROC, PrevProc
End Sub
Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
WindowProc = CallWindowProc(PrevProc, hwnd, uMsg, wParam, lParam)
If uMsg = WM_DRAWCLIPBOARD Then
MsgBox "Clipboard changed ..."
End If
End Function


2007-08-23 19:22
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
家里的系统是ME,不是XP

所以我下载了,但是看不了,找不到入口函数

偶学编程,也许本身就是一个错。。。
2007-08-23 19:27
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
我先看下,先行谢过~~~~~~~~~

偶学编程,也许本身就是一个错。。。
2007-08-23 19:27
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
晕,这是个钩子程序,不过向在对callwindowproc完全不了解,又找不到详细用法~~~~~~

看了这段代码后,我对这个函数的了解还是没进展!!!

偶学编程,也许本身就是一个错。。。
2007-08-23 19:33
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
收藏
得分:0 
汗。。。。我也没用过。。。。。

2007-08-23 19:37
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
看了两遍例子+setwindowlong的各参数,对callwindowproc有点了解了,它应该是处理窗口信息的函数

上面那个例子应那是在窗体启动时,将窗口信息处理的入口地址改成WindowProc而实现钩子功能,然而WindowProc = CallWindowProc(PrevProc, hwnd, uMsg, wParam, lParam)这句应该是为了执行对窗体的原始操作,而那个if则可以看成附加操作。。。

不知我理解对不对???

偶学编程,也许本身就是一个错。。。
2007-08-23 19:53
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
收藏
得分:0 

汗。。。我还没看过。。。我也来看看。。。。


2007-08-23 19:54
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
收藏
得分:0 

【VB声明】
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

【别名】
SetWindowLongA

【说明】
在窗口结构中为指定的窗口设置信息

【返回值】
Long,指定数据的前一个值

【参数表】
hwnd ---------------- Long,欲为其取得信息的窗口的句柄
nIndex -------------- Long,请参考GetWindowLong函数的nIndex参数的说明
dwNewLong ----------- Long,由nIndex指定的窗口信息的新值


2007-08-23 20:05
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
setwindowlong函数的资料一大砣啊~~~~~`

因为没有MSDN,只有一份网上下载的API帮助,找都找不到callwindowproc

偶学编程,也许本身就是一个错。。。
2007-08-23 20:07
快速回复:关于callwindowproc函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016755 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved