[wxWidgets] Fenster in den Vordergrund bringen



  • Hi Leute.
    Hab hier ein kleineres Problem. Ich hab ein Fenster, welches sich über einen globalen Hotkey (F11) verstecken lässt. Das Fenster hat nicht die "Always on TOp"-Eigenschaft, bzw das lässt sich einstellen. Weiterhin wird das Fenster NICHT in der Taskbar angezeigt, sondern als Ikone im SystemTray. Wenn jetzt das Fenster im Hintergrund ist, möchte es mit einem Links-Klick auf die SysTray-Ikone wieder in den Vordergrund bringen. Hier steckt das Problem.
    wxTopLevelWindow::DrawUserAttention(), wxWindow::SetFocus() hab ich probiert. Was funktionieren würde wäre wxWindow::Iconize(true); und danach sofort wxWindow::Iconize(false). Allerdings schaut das recht dumm aus.
    Habt Ihr noch eine Idee?
    rya.


  • Mod

    wxWindow::Show();?



  • Schon probiert hehe, funktioniert auch nicht. Naja, was mir grade spontan noch einfällt, wäre das Fenster zu verstecken mit wxWindow::Show(false) und mit wxWindow::Show(true) wieder anzuzeigen, ist aber auch wieder so ne schmutzige Lösung.
    Oder ich machs gleich wie Yakuake und versteck das Fenster wenn es den Focus verliert. Das Programm is ja auch eine Yakuake-like Console für WindowsXP.
    rya.



  • wxWindow::Show(false) und wxWindow::Show(true) geht nicht, das bleibt im Hintergrund.
    Ich hab ne etwas sauberere Lösung (vor allem visuell), aber die macht auch wieder Probleme:

    if ( m_mainframe->ToggleWindowStyle(wxALWAYS_ON_TOP) )
    {
        m_mainframe->ToggleWindowStyle(wxALWAYS_ON_TOP)
        m_mainframe->GetCanvas()->SetFocus();
    }
    

    Problem ist:
    Wenn ich die letzte Zeile weg lasse, dann hab ich kein Caret auf meinem Canvas, wenn ich den Focus auf den Canvas setze (wxPanel auf dem der Text gezeichnet wird), seh ich zwar das caret, aber das Programm reagiert nicht auf Eingaben. Es kommen auch keine Events an. Ich muss immer nochmal das Fenster anklicken, bevor Eingaben möglich sind.


Log in to reply