我的程序架构是这样的:
1、底层是一个大的对话框, DlgBase;
2、这个对话框里面包括了3个小对话框,分别占据(覆盖)这个DlgBase的左、中、右3个区域。
而且是非模态对话框,在DlgBase的OnInit中Create
m_DlgLeft.Create()
m_DlgMid.Create()
m_DlgRight.Create()3、有个按钮的功能是:使这3个子对话框显示出来。
m_DlgLeft.showWindow()
m_DlgMid.showWindow()
m_DlgRight.showWindow()但是我发现,点击按钮后,这3个对话框存在一个从左到右逐步显示的一个过程,并不是同时显示出来的。
我尝试过改变这3个子对话框的showwindow()顺序,但是没用,还是从左到右刷新出来。提问,有没有什么办法能同时把这3个对话框显示出来?

解决方案 »

  1.   

    依次? 有动画效果的? 那就Timer了。
      

  2.   

    耗时的操作就只有 EraseBk了,每个dlg的绘图可能有100毫秒吧关于这个问题:
    我调整了ShowWindow的顺序,把右边Dlg放最先,Mid放其次,Lefe放最后,还是一样的效果。
    m_DlgRight.showWindow()
    m_DlgMid.showWindow()
    m_DlgLeft.showWindow()
    还是从左到右,逐渐显示的。
      

  3.   

    1.用CreateWindowEx + 对话框资源在同一个消息处理线程中创建你的三个对话框。
    2. 或者用MFC在三个消息处理线程中分别创建。
      

  4.   

    就像1楼说的三个对话框有什么耗时的操作吗?假如是简单的界面操作应该不会出现这样的问题。
    建议将你的三个对话框放到主对话框的OnSize用MoveWindow的方式显示和隐藏。点击按钮发送WM_SIZE消息就是了
      

  5.   

    三个线程分别显示应该可以解决此问题另外我想借地方问下ShowWindow显示和MoveWindow显示的效率有什么不同吗?
      

  6.   

    如果是单文档的MFC应用程序的话,可以在CMainFrame类的OnCreateClient函数中添加m_wndSplitter.CreateStatic(this, 1, 2);
    m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CCtrlForm),
     CSize(605,605), pContext);
    m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CDataForm), 
     CSize(300,300), pContext);
    这样的类似语句,就可以在运行是就同时显示出来。
      

  7.   

    slider 鼠标单击 滑块定位 同时 显示/隐藏 几个对话框   
    http://download.csdn.net/user/liang888113