我在对话框CDialog1类里建立了一个对话框CWaitDlg的对象dlg,在CDialog的初始化函数中这样初始化了dlg对象:
dlg.Create(IDD_WAIT_DLG,NULL),建成的是非模态的对话框,在应用程序的某些地方用dlg.ShowWindow(SW_SHOWNORMAL)激活显示,在另一些地方用dlg.ShowWindow(SW_HIDE)隐藏。在windows 2000或windows 7下运行,在显示对话框dlg时,它不是激活状态,但是在windows XP 下它又是激活的,请问各位大侠这是怎么回事?怎样使这个对话框dlg显示时呈现的是激活状态。

解决方案 »

  1.   

    dlg.ShowWindow(SW_SHOWNORMAL);
    dlg.SetActiveWindow
      

  2.   

    dlg.ShowWindow(SW_SHOWNORMAL); 
    dlg.SetActiveWindow();
      

  3.   

    xp下是可以的,但是在2000下就是不行,这个SetActiveWindow()已经很强劲了,但在2000下还是不行,有没有别的方法啊。
      

  4.   

    class XX:public CWnd
    ...
    dlg.Create(XXX:IDD,NULL);
    dlg.ShowWindow(1);
      

  5.   

    class XX:public CWnd 
    ... 
    dlg.Create(XXX::IDD,NULL); 
    dlg.ShowWindow(1);
      

  6.   

    这个很有难度,你是不是说在2000下装个VC 2005来试试啊?用这种方式隐藏就会让它失去激活状态,这是程序要求的,是不是在setactivewindow后要采取某个措施来处理一下啊
      

  7.   

    ::SetForegroundWindow(hwnd); ::SetWindowPos(hwnd, HWND_TOPMOST  ,   0   ,   0   ,   0   ,   0   ,   SWP_NOSIZE   |   SWP_NOMOVE);
      

  8.   

    用了SetWindowPos后一会儿把它隐藏可以不?然后一会儿在把它激活