我程序里的Dialog上有若干控件,如editbox,combobox等,我想在
Dialog的虚函数里截获Dialog里所有控件的所有消息统一进行处理,
如editbox的killfoucs,combobox的selchange等(这些我想在OnCommand里应该能实现);
还有一些自定义控件的消息,是Notify类型的(在OnNotify里好像不能正确截获)。请教一下大家有没有Dialog里的虚函数能截获所有的控件消息呢,如果有,如何区分
各种控件的各种事件呢?还是要通过hook实现呢?

解决方案 »

  1.   

    不是有个翻译消息前(Trans...)的虚函数吗?这里就可以呀,根据句柄来区分呀
      

  2.   

    它的参数类型是MSG的吧,如果我判断是否是combox的killfoucs消息,能不能
    if((MSG *)lpmsg->message == CBN_KILLFOUCS)这样来判断?
      

  3.   

    PreTranslateMessage拦截消息,判断,处理
      

  4.   

    如何判断处理啊,比如CBN_KILLFOUCS类型的消息,能不能举个例子,找了MSDN,没找到
      

  5.   

    判断PreTranslateMessage函数接收到的MSG参数
    BOOL XXX::PreTranslateMessage(MSG* pMsg) 
    {
    if(pMsg->message == WM_KEYDOWN)
    {
            switch(pMsg->wParam)
            {               
        case VK_ESCAPE:
                     return TRUE;
    case VK_RETURN:
                     return TRUE;
    }
        
    }

    return CDialog::PreTranslateMessage(pMsg);
    }
      

  6.   

    用PreTranslateMessage函数很方便的。