请问对话框工程的窗口被其他程序产生的窗口(譬如IE打开的多个窗口遮住,不再是顶层的活动窗口时,可以使用什么代码来使得对话框窗口恢复到顶层,即显示器上能看见的第一个窗口,并成为活动窗口)?,如果对话框窗口是最小化的,还将其回复到正常显示。谢谢

解决方案 »

  1.   

    this->SetForegroundWindow();   
    并没有将珠窗口设为顶层活动窗口,而只是状态栏上串口窗口的图标成黄色并闪烁啊,该窗口还是被另外的窗口遮住
      

  2.   

    SetForegroundWindow(); 和AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW);一起运用看看,这个函数肯定是对的,能够实现功能的,看你是不是用错地方了.
      

  3.   

    还有如果你是在一个程序中,产生的多个窗口,这个方法可能不行,比如在对话框中,你要想让某个对话框放置在顶端,则用SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
      

  4.   

    都不对,楼主应该用 
    BringWindowToTop();
      

  5.   

    //捕捉并设置当前焦点窗口为我们的窗口
    AttachThreadInput( GetWindowThreadProcessId(::GetForegroundWindow(),NULL),GetCurrentThreadId(),TRUE); //置我们的为焦点窗口
    SetForegroundWindow(); //释放thread
    AttachThreadInput( GetWindowThreadProcessId(::GetForegroundWindow(),NULL),
    GetCurrentThreadId(),FALSE);试试这个
      

  6.   

    BringWindowToTop();  绝对是正解,你是不是加错地方了?放到你的主窗口中去
      

  7.   

    Saimen(向两星冲一把) ( ) 信誉:100    Blog 
    ------------------------------------------
    BringWindowToTop();  直接放在主窗口里,它需要参数吗?还是前面需要  this->  ?谢谢
      

  8.   

    AttachThreadInput( GetWindowThreadProcessId(::GetForegroundWindow(),NULL),GetCurrentThreadId(),TRUE);
    SetForegroundWindow();
    AttachThreadInput( GetWindowThreadProcessId(::GetForegroundWindow(),NULL),
    GetCurrentThreadId(),FALSE);这个真的不行么?我的代码就是这样写的,完全可以提到前面阿。
    这三句是一起写的整体,你不会只抄了一句吧?