我在主框架MainFrame有一个模式对话框Dialog,让其DoModal后。主框架会定时(在OnTimer中)New出一个其它CFrameWnd对象。这时这个CFrameWnd对象拥有焦点,Dialog对它不是DoModal状态,即Dialog和Frame之间可相互切换焦点,但Dialog对原来的MainFrame还是DoModal状态。
有无什么方法可以使这个Dialog始终是DoModal状态,即使新的Frame产生,还是Dialog拥有焦点和相应消息。
ps:那些置为最上和使dialog为Active状态的方法我试过了,不行。;(那位大虾指导一下了。3X!

解决方案 »

  1.   

    SetForegroundWindow( );
    应该可以,试试!
      

  2.   

    在initdialog里
    setwindowpos(..)试试
      

  3.   

    你现在相当于有两个主框架类,他们其实在一定意义上属于两个不同的应用程序了,如果你想那个对话框激活,实际上是应该激活原来那个主框架,所以可以用SetForegroundWindow(),但是其中的参数应该是主框架的句柄(不知道用对话框的句柄行不行,没有试过,呵呵)
      

  4.   

    setwindowpos(..)的方法只能是Dialog在最上,不能实现其对所有Frame 的DoModal状态。至于SetForegroundWindow(),我觉得也只是使Dialog至于最前和可以有输入,但并不能改变它对新的Frame无法DoModal的状态。Dialog.DoModal时程序的信息循环成为Dialog的信息循环(Dialog Manager's Message Loop),而原来的窗口一致的空闲消息状态。我觉得新的Frame产生后,破坏了原来Dialog Manager's Message Loop,使程序消息成为了Dialog Manager's Message Loop和新Frame的Message Loop两部分,只见可以相互切换。
    问题就是我希望能一直处在Dialog Manager's Message Loop中而不被新的Frame破坏。可我一直没有什么办法。有谁能指教一下呀?3X
      

  5.   

    只能帮你Up了,呵呵要一个对话框属于两个Frame,比较困难,学习……