Wie macht man einen Dialog, der IMMER im Vordergrund ist??



  • Hi,

    ich brauche einen Dialog, der immer im Vordergrund ist, bis er geschlossen wird. Mit "Im Vordergrund" meine ich insbesondere auch, dass er nicht verschwindet, wenn man auf die Oberfläche eines ganz anderen PRogramms klickt....

    So sieht das im Moment aus:
    Mein Programm startet eine InternetExplorer...Im Hintergrund läuft noch ein Thread. Bei einem bestimmten Ereignis erscheint nun der besagte Dialog...der User sieht also noch den Explorer und darüber den Dialog...Wenn der USer aber jetzt irgednwo in den Explorer klickt, verschwindet mein Dialog....wie kann ich das verhindern????

    Gibt es vielleicht so ne Eigenschaft "ALLWAYS_ON_TOP" oder???...Ahja, es sollte im übrigen für WindowsCE funktionieren....(Der Dialog ist im Moment nicht-modal)

    BESTEN DANK



  • Ja, es gibt den (extended) Window-Style WS_EX_TOPMOST (den mußt du per CreateEx bzw. ModifyStyleEx übergeben - alternativ kannst du CWnd::SetWindowPos(wndTopMost,...) verwenden).



  • und beide sind leicht zu umgehen-.- guck mal bei www.codeproject.com unter Dialog and Windows ... da findest de was dazu 🙂



  • Ich habs so gelöst, dass ich den Cursor in dem Fenster
    festhalte, und den Befehl

    SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
    

    ausführe.
    Den Mauszeiger kannst du in ner Timerausführung festhalten

    if(IDD_TIMER==nIDEvent)
    {
         this->GetWindowRect(rRect);
         ClipCursor(rRect);
    }
    

    Ne andere Variante ist der Befehl OnActivate();



  • Ja klasse... was bringt dir das den Mauszeiger festzuhalten... ich kann den Taskmanager bsw. ohne weiteres nur mit Tastertur steuern 🙂



  • ...besten Dank für die Hilfe....das mit dem wndTopmost hat gut funktioniert...



  • weils auch anwendungen gibt,wo dies benötigt wird.
    hatte ne Visualisierung, welche nen ähnlichen
    Befehl wie TopMost verwendet.deshalb ist mein Dialog
    beim danebenklicken trotzdem verschwunden.deshalb hab ich den
    ClipCursor verwendet.

    Und zum TaskManager, ich wüsst nicht,wie man den überdecken könnte


Anmelden zum Antworten