while(GetMessage(&msg,NULL,0,0) { 
    if(!IsDialogMessage(hdlg,&msg){ 
        TranslateMessage(&msg); 
        DispatchMessage(&msg); 
     } 

网上说把这个加到主循环中,不太明白,我的对话框根本就没有主循环啊。
现在打个比方,我需要拦截键盘消息,在模态对话框中是PreTranslateMessage这个函数里处理消息?
那么非模态的呢?请高手举个简单的例子,就算是放在主循环中,那这个主循环应该是在哪里的?
本人菜鸟,抱着学习的心态。谢谢。

解决方案 »

  1.   

    http://ynwlgh.blogbus.com/logs/191711507.html
      

  2.   

    这个例子应该是用于win32应用程序,不是用于MFC中的。另外你试试非模式对话框也应该有PreTranslateMessage
      

  3.   

    非模态也可以处理PreTranslateMessage
      

  4.   

    非模态的对话框根本就进不去PreTranslateMessage这个函数啊。你们没调式么?我是非模态对话框的DLL。。
      

  5.   

    一个是源代码MFC自行写好的,一个是你自己从0写
    没必要写
      

  6.   

    你对话框是怎么创建的
    对于WIN32 的DIALOGBOX其消息循环是由系统托管的