Announcement

Collapse
No announcement yet.

Fenster in den Vordergrund bringen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fenster in den Vordergrund bringen

    Hi allerseits,

    ich habe folgendes Problem. Ich möchte das meine SDI Applikation
    bei einer bestimmten Aktion in der Vordergrund kommt sollte sie sich hinter anderen Fenster befinden. Dies habe ich versucht mit der Funktion SetForegroundWindow und auch mit SetActiveWindow.

    Also ich starte meine Applikation und die Option ob das Fenster in den Vordergrund soll ist gesetzt.
    Direkt nach dem Programmstart funktioniert das mit SetForegroundWindow wunderbar in allen getesten Windows Version (XP, Vista, W2K3).
    Dann nehme ich im Anschluß die Option raus und teste dies. Geht auch.
    Nun setze ich die Option wieder. Und unter XP und W2K3 blinkt die Applikation nur in der Taskleiste.


    Nun habe ich in einem anderen Forum eine Lösung gefunden die ich ebenfalls ausprobiert habe.
    Thread

    Aber auch damit das gleiche Problem.
    Es muss doch möglich sein die Applikation immer in den Vrodergrund zu holen wenn sie sich gerade im Hintergrund befindet.

    Ich habe es auch mit SetWindowPos probiert.
    Code:
    //1.) 
    this->SetWindowPos(&CWnd::wndTopMost, 0 ,0, 0, 0, SWP_SHOWWINDOW|SWP_NOREDRAW|SWP_NOSIZE|SWP_NOZORDER); 
    //2.) 
    this->SetWindowPos(&CWnd::wndTopMost, 0 ,0, 0, 0, SWP_SHOWWINDOW|SWP_NOREDRAW|SWP_NOSIZE); 
    //3.) 
    this->SetWindowPos(&CWnd::wndTopMost, 0 ,0, 0, 0, SWP_SHOWWINDOW);
    Das hat gar nicht geholfen.

    Jemand noch ne Idee?

    Gruß
    Karsten

  • #2
    Hi,
    ich hab das mal so gelöst:
    verstecken
    void CMyVw::OnAppHide()
    {
    //App verstecken
    CFrameWnd* pOldFrame = (CFrameWnd*)AfxGetApp()->m_pMainWnd;
    if(pOldFrame->IsWindowVisible())
    pOldFrame->ShowWindow(SW_HIDE);
    }

    zeigen
    void CMyVw::OnAppShow()
    {
    //App zeigen
    CFrameWnd* pOldFrame = (CFrameWnd*)AfxGetApp()->m_pMainWnd;
    if(!pOldFrame->IsWindowVisible())
    pOldFrame->ShowWindow(SW_SHOW);
    SetForegroundWindow();
    }

    Gruss

    Comment

    Working...
    X