我欲乘风yecheng.blog.chinaunix.net
yecheng_110
全部博文(78)
2007年(53)
2006年(25)
DT27
jolinok
ylke2007
saintdra
zhxd
大鬼不动
tntcheng
chenkeac
flb_2001
yyfq521
bluesky0
zjq5688
w1818618
168Kill
myoeoo
bolebdms
sxzf168
11qq22ww
分类:
2007-03-10 14:26:55
定制窗口消息处理函数
需要对一个已经建立的窗口的消息进行自己的处理时,可以提供一个消息处理函数,替换原来的消息处理函数。自己的处理完成后,再调用原来窗口的消息处理函数。 1、更改窗口消息处理函数 LONG SetWindowLong( HWND hWnd, // handle to window int nIndex, // offset of value to set LONG dwNewLong // new value ); nIndex值为GWL_WNDPROC时,表示dwNewLong是消息处理函数的地址,返回值是原来的窗口处理函数的地址。 所以使用以下方法改变窗口处理函数,并记录下原来的窗口处理函数。 WNDPROC OldWndProc; OldWndProc = (WNDPROC)SetWindowLong (hWnd, GWL_WNDPROC, (LONG)MyWndProc); 将窗口消息处理函数替换成MyWndProc,原处理函数被OldWndProc记录。 2、自己的消息处理函数完成对消息的处理后,用CallWindowProc调用窗口原来的消息处理函数。 LRESULT MyWndProc(HWND hWnd,UINT uMessage, WPARAM wParam, LPARAM lParam) { switch(uMessage) { //自己对消息处理 } //调用控件原来的消息处理函数 return CallWindowProc(OldWndProc,hWnd,uMessage,wParam,lParam); }
上一篇:实现IObjectSafety接口
下一篇:IE7中激活的tab
chinaunix网友2009-09-14 20:03:24
这个函数只能对自己创建的窗口有效,其他的窗口是无法成功的,错误代码是拒绝访问。不知道有没有什么办法可以修改到其他窗口的消息处理函数。
登录 注册