SetWindowLong使用GWL_WNDPROC参数的问题
nf3 2006-04-09 12:40:03 我用钩子插入DLL后,想替换被插入进程列表视窗口的消息响应函数
以下代码
LRESULT OldLongWinProc=NULL;
LRESULT NewWndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
只要运行到下面这一句,程序就会退出,
编译时出现警告
warning C4311: “类型转换” : 从“LRESULT (__cdecl *)(HWND,UINT,WPARAM,LPARAM)”到“LONG”的指针截断
OldLongWinProc=(LRESULT)SetWindowLong(sg_hwnd,GWL_WNDPROC,(LONG)NewWndProc);
LRESULT NewWndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
return(CallWindowProc((WNDPROC)OldLongWinProc,hwnd,uMsg,wParam,lParam));
}