Programm immer im Vordergrund (Always on op)



  • Hi!
    Also ich habe ein Programm geschrieben, dem ich gerne über eine Checkbox die Option hinzufügen möchte es immer in den Vordergrund zu stellen. (so wie die "Always on top" option von WInamp oder MoreTV) Es sollen also dahinterliegende Anwendungen benutzt werden können aber meine Anwendung soll immer sichtbah (nicht aktiv) über allen anderen Anwendungen stehen.

    Das Programm das ich geschrieben habe ist dieses hier:
    http://home.arcor.de/cwolkensinger/Uga-Agga/Time-Calculator.zip
    es ist ein Programm um Bewegungen und ausbauzeiten in einem Onlinespiel zu berechnen.

    ..Muss noch dazu sagen das ich ziemlicher Programmierneuling bin (ist das erste Programm das ich geschrieben hab), würd mich also über etwas ausführliche erklärungsversuche sehr freuen 🙂

    Gruß & Danke für eure Hilfe



  • Hi,

    das geht ganz einfach. Ich habs dir mal kompakt in eine Funktion verpackt 😃

    void SetWndAlwaysOnTop(CWnd* pWnd, bool bAllwaysOnTop)
    {
    	const CWnd* pWndInsertAfter = (bAllwaysOnTop ? &pWnd->wndTopMost : &pWnd->wndNoTopMost);
    	pWnd->SetWindowPos(pWndInsertAfter, NULL, NULL, NULL, NULL, SWP_NOMOVE | SWP_NOREPOSITION | SWP_NOSIZE);
    }
    

    Der 1. Parameter ist ein Zeiger auf das Fenster, das du Always On Top setzten willst (in einer Fenster/Dialog-klasse einfach this), der 2. Parameter gibt an, ob Always On Top aktiviert bzw deaktiviert werden soll.

    Wenn du jetzt z.B. eine Funktion hast, die beim Klicken auf einen Button aufgerufen wird, kannst du soetwas schreiben (die vorherige Funktion darüber einfügen):

    void CMyDlg::OnButton1()
    {
       SetWndAlwaysOnTop(this, true); // damit wird der Dialog Always On Top
    }
    

    Grüße Rapha



  • perfekt! genau das meinte ich!
    Vielen vielen dank 🙂


Anmelden zum Antworten