我的程序中有很多dialog,他们都要处理keyup消息,并且在OnKeyUp里的处理都相同,我不想在每个dialog里都写一遍同样的代码,能不能写一个消息处理就把所有的keyup消息截获并处理呢?
谢谢!

解决方案 »

  1.   

    你单独写个函数添加keyup的处理代码,然后在每个函数里调用
      

  2.   

    再仔细分析分析,如果真的是所有消息响应都一模一样,那就写个Global函数,在每个消息响应里都调用它。不过,一般不会出现这种情况,除非你的消息响应操作的都是Global变量,而根本和本对话框无关。
      

  3.   

    当然对话框还自己本身还是要处理KEYUP消息的,我只是想截获,处理以后还是要返回给对话框的。
      

  4.   

    使用PreTranslateMessage消息涵数处理吧!
      

  5.   

    只有使用键盘钩子是比较合适的,你的钩子程序处理后,让它继续原来的操作即可。至于PreTranslateMessage,虽然可以,但是还是要在每个对话框的类里写啊。另外,建立一个对话框基类,在里边处理KEYUP消息,但有很多局限性,好像很多键响应了其他事件后到不了这里,比如ESC等。你可以在网上查找“Windows XP系统中如何屏蔽Ctrl+Alt+Del、Alt+Tab以及Ctrl+Esc键序列”这篇文章,里面有详细的例子。
      

  6.   

    BOOL CClient_VodDlg::PreTranslateMessage(MSG* pMsg) 
    {
    if(WM_RBUTTONDOWN == pMsg->message)
    return TRUE;
    else if(WM_RBUTTONUP==pMsg->message)
    return TRUE;
    else if (WM_RBUTTONDBLCLK==pMsg->message) 
    return TRUE;
    else if (WM_MOUSEMOVE==pMsg->message) 
    return TRUE;

    return CDialog::PreTranslateMessage(pMsg);
    }
    我上面是屏蔽的是鼠标,keyup换一下应该就可以
      

  7.   

    http://dev.csdn.net/develop/article/15/15121.shtm