关于SetWindowLong的使用

ShaB 2003-09-11 10:57:39
OldWindowProc = SetWindowLong(frm.HWnd, GWL_WNDPROC, AddressOf NewWindowProc)

这是任务栏图标处理的一行,OldWindowProc得到的是什么值?
这一句如何解释啊?
...全文
73 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihonggen0 2003-09-11
  • 打赏
  • 举报
回复
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

SetWindowLong函数的作用是在窗口结构中为指定的窗口设置属性,利用它我们来改变窗口的属性参数,其中各个参数的意义如下表所示:

参数 意义
hwnd Long,欲为其取得信息的窗口的句柄
nIndex Long,这里取GWL_WNDPROC,表示设置该窗口的窗口函数的地址
dwNewLong Long,由nIndex指定的窗口信息的新值
返回值 Long,指定数据的前一个值

  在默认状态下WINDOWS操作系统会指定一个窗口函数来接受和处理WINDOWS消息,而通过使用SetWindowLong函数改变窗口函数的地址使它指向我们自己写的一个函数WindowProc,这样WINDOWS消息就会转由WindowProc函数接收和处理。于是我们就能判断文件拖放的消息并进行处理。改变窗口属性的语句如下:
   procOld = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WindowProc)


lihonggen0 2003-09-11
  • 打赏
  • 举报
回复
SetWindowLong函数的作用是在窗口结构中为指定的窗口设置属性,利用它我们来改变窗口的属性参数,其中各个参数的意义如下表所示:

参数 意义
hwnd Long,欲为其取得信息的窗口的句柄
nIndex Long,这里取GWL_WNDPROC,表示设置该窗口的窗口函数的地址
dwNewLong Long,由nIndex指定的窗口信息的新值
返回值 Long,指定数据的前一个值
hxy1982 2003-09-11
  • 打赏
  • 举报
回复
up~!
射天狼 2003-09-11
  • 打赏
  • 举报
回复
是返回窗口以前的状态,保存在变量中,在退出的时候要恢复到以前的状态:

Call SetWindowLong(Me.hwnd, GWL_WNDPROC, OldWindowProc)

7,759

社区成员

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

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