博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CallWindowProc与setwindowlong 用法
阅读量:4116 次
发布时间:2019-05-25

本文共 1908 字,大约阅读时间需要 6 分钟。

该函数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  

 

转载地址:http://icupi.baihongyu.com/

你可能感兴趣的文章
如何禁止JavaScript对象重写?
查看>>
前端10大经典算法
查看>>
object-fit和object-position_定义图片和视频元素在容器内如何显示的css属性
查看>>
华为宣布:免费培养2000名VUE&H5开发者!
查看>>
前端基础知识整理汇总(下)
查看>>
详解30道Vue面试题
查看>>
详细介绍CSS3弹性伸缩box布局
查看>>
5种CSS实现垂直对齐的方法
查看>>
63段常用的JS代码片段汇总
查看>>
【前端面试题】02—59道CSS面试题(附答案)
查看>>
Webpack模块化原理图解
查看>>
推荐14个可以展示你代码的网站
查看>>
canvas绘图详解笔记之线条及线条属性
查看>>
【前端面试题】01—42道常见的HTML5面试题(附答案)
查看>>
【前端面试题】03—200+道常见JavaScript基础面试题上(附答案)
查看>>
Vue项目中使用 tinymce 富文本编辑器的方法,附完整源码
查看>>
大厂面试官常问的React和Vue难题,都在这儿了!
查看>>
为什么总有人说:“前端饱和了”、“前端不好找工作”?
查看>>
vue实现一个6个输入框的验证码输入组件
查看>>
【前端面试题】04—33道基础CSS3面试题(附答案)
查看>>