MFC 拦截消息

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值