LRESULT CDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if( message == WM_CLOSE ) return TRUE; //不处理
if( message == WM_OLDMSG ) //加以修改
{
message = WM_NEWMSG;
}
return CDialog::DefWindowProc(message, wParam, lParam);
}
4、
你还可以在PreTranslateMessage(MSG* pMsg)进行拦截处理。5、
本人指的是所有窗口?
PreTranslateMessage(MSG* pMsg)
LRESULT CDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if( message == WM_CLOSE ) return TRUE; //不处理
if( message == WM_OLDMSG ) //加以修改
{
message = WM_NEWMSG;
}
return CDialog::DefWindowProc(message, wParam, lParam);
}
肯定没有用的。6、
假如是所有窗口的话,你只有通过hook API的方法,挂接GetMessage和 PeekMessage函数,通过判断函数所传递的消息进行拦截和修改了。7、
怎么样拦截Windows的消息并加以修改推荐解答:
use WH_GETMESSAGE can hook and change message,but not WH_CALLWNDPROC8、
怎么样拦截Windows的消息并加以修改推荐解答:
方法1:修改窗口过程
LRESULT CALLBACK _new_msg_handle(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
LRESULT lReturn = 0;
WORD hw, lw;
NODE *pnode;
pnode = (NODE *)GetWindowLong(hwnd, GWL_USERDATA);
hw = HIWORD(wParam);
lw = LOWORD(wParam);
if(uMsg==WM_COMMAND)
{
// print_log("hwnd recv msg hw = %u, lw = %u/r/n", hw, lw);
if(hw == BN_CLICKED)
{
if(lw == IDOK)
{
pnode->bsendrecord = TRUE;
// print_log("hwnd recv msg BN_CLICKED -> IDOK/r/n");
}//if(lw == IDOK)
else if(lw == 0x65)
{
if(pnode->flag == RECV)
{
log_chat(hwnd, FALSE);
}
}
}//else if (hw == BN_CLICKED)
}//if(uMsg==WM_COMMAND)
if(pnode->oldfunc)
lReturn = ::CallWindowProc(pnode->oldfunc, hwnd, uMsg, wParam, lParam);
return lReturn;
}
//以下代码修改窗口过程
SetWindowLong(hWnd, GWL_USERDATA, (LONG)pnode);
SetWindowLong(hWnd, GWL_WNDPROC, (LONG)_new_msg_handle);
来源:电脑网络爱好者:http://www.pcnetfan.com/viewnews-38738.html