只要点击非模态对话框,这个非模态对话框就得到了焦点,主窗口的标题栏就变灰了,怎样在与非模态对话框交互时让主窗口仍有焦点,就是不能让标题栏变灰。

解决方案 »

  1.   

    SetWindowPos(&wndTopMost ……)
      

  2.   

    好像这部可能,windows的设计上就要求唯一的激活窗口。如果你把主窗口激活了,你非模态对话框就无法得到正确的键盘输入了
      

  3.   

    可以再非模态对话框就得到了焦点的时候,给主窗口发SETFOUCS消息让其获得焦点,
      

  4.   

    这种情况没遇到过,继承自CDialog的对话框,自己添加东西,然后再派生子对话框,应该可以吧,属性都是自己添加的,事件也是
      

  5.   

    有些要求就需要放弃,你这种设计是和Windows设计的基本理念是冲突的,windows应该就只有一个激活窗口
      

  6.   

    观察过浮动工具条吗?点击他们时主窗口不会失去焦点。
    其实原理很简单。就是在子窗口接收到WM_MOUSEACTIVATE:
    时 return MA_NOACTIVATE; 就可以了。
    这样在点击子窗口的客户区时主窗口不会失去焦点
    但你不能点击子窗口上的控件,否则焦点又会失去
    我现在还没有解决这个问题,但我相信是可以实现的。
    就像VC6的浮动工具栏,你怎么点击上面的编辑框,主窗口的标题都不会失去焦点
    用Spy++观察后同样也是使用WM_MOUSEACTIVATE: 时 return MA_NOACTIVATE;
      

  7.   

    确实有效,谢谢jacky_qiu,如果只是将对话框拿来显示信息就可以用这种方法,如果有控件也是不行,看来jacky_qiu跟我遇到了同样的问题。
      

  8.   

    很简单啊,在对话框获取焦点时给主窗口PostMessage(hwnd, WM_NCACTIVATE, 1, 0);
      

  9.   

    把子窗口的类型(style)选成Child就可以用了!!!
      

  10.   

    正好用到MFC 的东西,也遇到 了楼主相同的问题。就是用这个方法解决了。
    实现了想要的效果。
    本人亲测。
      

  11.   

    正好用到MFC 的东西,也遇到 了楼主相同的问题。就是用这个方法解决了。
    实现了想要的效果。
    本人亲测。