CallWindowProcprintf函数的返回值值有什么用

5780人阅读
Windows(12)
该函数CallWindowProc将消息信息传送给指定的窗口过程。&&&&函数原型:LRESULT CallWindowProc(WNDPROC lpPrevWndFunc,HWND hWnd.UINT Msg,WPARAM wParam,LPARAMIParam);&&&&参数:&&&&lpPrevWndFunc:参数主要是指向你要调用的函数句柄&&&&hWnd:指向接收消息的窗口过程的句柄。&&&&Msg:指定消息类型。&&&&wParam:指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。&&&&IParam:指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。&&&&返回值:返回值指定了消息处理结果,它与发送的消息有关。&&&&备注:使用函数CallWindowsProc可进行窗口子分类。通常来说,同一类的所有窗口共享一个窗口过程。子类是一个窗口或者相同类的一套窗口,在其消息被传送到该类的窗口过程之前,这些消息是由另一个窗口过程进行解释和处理的。&&&&SetWindowLoog函数通过改变与特定窗口相关的窗日过程,使系统调用新的窗口过程来创建子类,新的窗口过程替换了以前的窗口过程。应用程序必须通过调用CallWindowsProc来将新窗日过程没有处理的任何消息传送到以前的窗口过程中,这样就允许应用程序创建一系列窗口过程。
SetWindowLong() 函数
VB声明 Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long 说明 在窗口结构中为指定的窗口设置信息 返回值 Long,指定数据的前一个值 参数表 参数 类型及说明 hwnd Long,欲为其取得信息的窗口的句柄 nIndex Long,请参考GetWindowLong函数的nIndex参数的说明 dwNewLong Long,由nIndex指定的窗口信息的新值
GetWindowLong ()函数
VB声明 Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long 说明 从指定窗口的结构中取得信息 返回值 Long,由nIndex决定。零表示出错。会设置GetLastError 参数表 参数 类型及说明 hwnd Long,欲为其获取信息的窗口的句柄 nIndex Long,欲取回的信息,可以是下述任何一个常数: GWL_EXSTYLE 扩展窗口样式 GWL_STYLE 窗口样式 GWL_WNDPROC 该窗口的窗口函数的地址 GWL_HINSTANCE 拥有窗口的实例的句柄 GWL_HWNDPARENT 该窗口之父的句柄。不要用SetWindowWord来改变这个值 GWL_ID 对话框中一个子窗口的标识符 GWL_USERDATA 含义由应用程序规定 DWL_DLGPROC 这个窗口的对话框函数地址 DWL_MSGRESULT 在对话框函数中处理的一条消息返回的值 DWL_USER 含义由应用程序规定
WindowProc是个窗口过程,其返回值是由系统处理的,应用程序中是不用也无法处理的。 Public & Sub & Hook(hWnd & As & Long) & & lngHWnd=hWnd & & lpPrevWndProc & = & SetWindowLong(lngHWnd, & & GWL_WNDPROC, & AddressOf & WindowProc) & End & Sub & 调用这个挂钩函数后,当有消息到窗口后,有系统调用WindowProc函数处理消息,由系统调用的函数返回值当然由系统处理
Function & WindowProc(ByVal & hw & As & Long, & ByVal & uMsg & As & Long, & _ & & & ByVal & wParam & As & Long, & ByVal & & & lParam & As & Long) & As & Long & & & Select & Case & uMsg & 检测鼠标击键消息,如果是单击右键 & & & Case & WM_RBUTTONUP & & & & & 什么事也不做 & & & & 或弹出自己定制的菜单 & & & Case & Else & & & WindowProc & = & CallWindowProc(lpPrevWndProc, & hw, & uMsg, & wParam, & lParam) & & & End & Select & End & Function&&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:972396次
积分:11364
积分:11364
排名:第1246名
原创:137篇
转载:326篇
评论:83条
(2)(1)(1)(1)(1)(1)(1)(1)(2)(1)(1)(1)(9)(2)(1)(2)(4)(1)(1)(2)(2)(3)(4)(2)(1)(3)(1)(5)(3)(3)(4)(3)(7)(1)(2)(2)(5)(2)(4)(2)(6)(3)(6)(9)(3)(1)(10)(10)(6)(8)(4)(9)(7)(10)(5)(16)(23)(17)(5)(12)(9)(12)(3)(9)(13)(7)(13)(5)(59)(73)查看: 1383|回复: 2
高手支持,vba使用CallWindowProc调用dll,迁移到其他机器使用不兼容问题?
阅读权限10
在线时间 小时
我在用vba调用动态dll,使用CallWindowProc函数调用dll函数,在自己环境上运行是正常结果,但拷到其他两台机器,一台能正常运行,另一台运行后excel强制退出。
我查过dll都齐全,不会是自己程序造成问题,机器都是使用office 2010版本的。
请高手指教,这样情况是缺什么引起的?
阅读权限10
在线时间 小时
& & & & & & & &
求高手出手。。谢谢
阅读权限10
在线时间 小时
没有人知道吗??
最新热点 /1
ExcelHome图书当当网5折来袭,抢、抢、抢!
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师基本介绍/CallWindowProc
函数功能:该函数CallWindowProc将消息信息传送给指定的窗口过程。函数原型:LRESULT CallWindowProc(WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM IParam);
参数/CallWindowProc
lpPrevWndFunc:指向前一个窗口过程的 指针。如果该值是通过调用GetWindowLong函数,并将该函数中的nlndex参数设为GWL_WNDPROC或DWL_DLGPROC而得到的,那么它实际上要么是窗口或者对话框的地址,要么就是代表该地址的句柄。hWnd:指向接收消息的窗口过程的句柄。Msg:指定消息类型。wParam:指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。IParam:指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。返回值:返回值指定了消息处理结果,它与发送的消息有关。
备注/CallWindowProc
使用函数CallWindowsProc可进行窗口子分类。通常来说,同一类的所有窗口共享一个窗口过程。子类是一个窗口或者相同类的一套窗口,在其消息被传送到该类的窗口过程之前,这些消息是由另一个窗口过程进行解释和处理的。SetWindowLong函数通过改变与特定窗口相关的窗口过程,使 系统调用新的窗口过程来创建子类,新的窗口过程替换了以前的窗口过程。应用程序必须通过调用CallWindowsProc来将新窗口过程没有处理的任何 消息传送到以前的窗口过程中,这样就允许应用程序创建一系列窗口过程。如果定义了STRICT,那么lpPrevWndFunc参数具有WNDPROC 数据类型。WNDPROC类型说明如下:LRESULT(CALLBACK· WNDPROC)(HWND, UINT WPARAM,LPARAM)如果没有定义STRICT,那么lpPrevWndFunc参数具有FARPROC 数据类型。FARPROC类型说明如下:int(FAR WINAPL·FARPROC)()在C语言中,FARPROC申明表示为一个没有指定参数表的 回调函数。然而在 C++中;申明中的空参数表示该函数没有参数。这种微妙的区别有可能引起代码出错。下面是一种解决办法:#ifdef STRICT;WNDPROC MyWindowProcedure;#else;FARPROC MyindowProcedure;#endif IResult=CallWindowProc(MyWindowProcedure,…)有关该函数的空参数表方面进一步的信息,请参考Bjarne Stroustrup编写的C++编程语言第2版。对于Windows NT:函数CallWindowsProc function进行了Unicode至ANSf转换处理。如果你直接调用该窗口过程,那么无法利用该转换。速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;头文件:winuser.h;库文件:user32.lib:Unicode:在Windows NT环境中以Unicode和ANSI版本实现。CallWindowProc
&|&相关影像
互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于。
登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。
此词条还可添加&
编辑次数:7次
参与编辑人数:6位
最近更新时间: 22:05:20
申请可获得以下专属权利:
贡献光荣榜

我要回帖

更多关于 printf函数的返回值 的文章

 

随机推荐