问题描述(C++,MFC):
      主线程打开:A(MainFrame),A打开B(NewFrame),B打开模态对话框C(Dialog)
      问题是:鼠标能激活A(MainFrame),但是不能对A(MainFrame)进行操作。此时该窗体的Enable状态是不可以用的。
求助:
      如果在B打开模态对话框之后,A不能响应激活消息。
      效果就像:OutLook(A)->新建邮件(B)->选择联系人(C)之后的工作效果;
求高人相助……
不胜感激。

解决方案 »

  1.   

    线程+模态对话框 看看机子上面Outlook没配置过,看不了效果。
      

  2.   

    我现在点击A,A会显示为顶层,但不能进行操作,isEnable = false。
    outlook,点击A的时候,会把C显示出来,从顶层往下一次是C->B->A.
      

  3.   

    打开对话框?EnableWindow(FALSE) A窗口??
      

  4.   

    打开对话框?EnableWindow(FALSE) A窗口??
      

  5.   

    打开对话框,就是调用DoModal方法,窗口A 和B的 isWindowEnable() 返回的都是false。
    关闭对话框,窗口A 和B的 isWindowEnable() 返回的都是true。
      

  6.   

    你不是想要EnableWindow(FALSE) A窗口吗?
      

  7.   


    不是的,A已经是EnableWindow了,并且还能接收WM_ON_ACTIVATE的消息。我的意思如果不让A窗口前端显示。
    谢谢
      

  8.   

    楼主要的状态是
    A能编辑?
    B和C不能编辑?B用线程打开应该可以吧。
      

  9.   

    试下A的PreTranslateMessage里面处理WM_ON_ACTIVATE,当B存在的时候,A收到WM_ON_ACTIVATE消息不处理直接返回。这样A应该就不会在前端显示了。
      

  10.   

    AB不能编辑,C工作。当点击任务栏的A时,从顶往下一次显示:C->B->A。
      

  11.   

    我试下,告诉你结果。
    BTW:鼠标左击A之后,同样会把A前端显示。不知道响应了什么事件,我用了mouseactive,mousedown和mouseup都没有响应。
    请教一下,谢谢
      

  12.   

    全部模态显示。。这样C就是最顶层了。。A和B还不能操作!
      

  13.   

    该问题我已经解决,详细信息见如下连接:
    http://topic.csdn.net/u/20120918/16/7fb9236a-9c89-423a-b5af-adb078f5a56a.html