DialogBox Systemmodal erstellen...



  • Hi!

    Folgendes Problem:
    DialogBox mit Resourceneditor (MS Visual C++ .NET) erstellt.
    Im Programm aufgerufen mit

    DialogBox(MyInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,StaticProc);
    

    Ich möchte nun, das diese DialogBox niemals den Fokus verlieren darf (Systemmodal? heißt dat so?)...
    Wie stell ich das an?
    Da muß man doch sicherlich nur im Resourceneditor was umstellen, oder?
    Momentan kann man die Dialogbox durch klick außerhalb in den Hintergrund verschwinden lassen... das soll so aber nicht sein....



  • Also, soweit ich weiß bedeutet Systemmodal, dass das Fenster über allen anderen liegt und somit ständig sichtbar ist. Trotzdem kann es den Focus verlieren. Wenn ich mich irren sollte, dann gebt mir bitte Bescheid 😃

    Und wegen dem Problem, dass das Fenster nicht den Fokus verlieren darf... Ich habe es selbst noch nicht probiert, aber du kannst ja evtl. mal ein bisschen mit der WM_KILLFOCUS Message rumprobieren.



  • WS_EX_TOPMOST



  • Alles falsch, Mädels....

    INT_PTR DialogBox(
      HINSTANCE hInstance,  // handle to module
      LPCTSTR lpTemplate,   // dialog box template
      HWND hWndParent,      // handle to owner window
      DLGPROC lpDialogFunc  // dialog box procedure
    );
    

    Der dritte Parameter war bei meinem Aufruf NULL und nicht hDlg (Handle auf den Parent-Dialog). Jetzt tut der Dialog genau das, was ich brauchte!



  • Dann ist dein Dialog aber applikationsmodal und nicht systemmodal! 😉



  • Jo, deshalb fragte ich ja, wie man das nennt... 😉
    Ist allerdings verwirrend, denn ich kann nun nicht außerhalb des Fensters klicken, ohne das mein Dialog meckert (Windows-Sound) und mit der Titelleiste 2-3mal kurz blinkt! Er will also absoluten Vorrang haben vor allem! Erst wenn man den Dialog geschlossen hat, kann man "normal" weiterarbeiten, und das ist genau was ich suchte!



  • Original erstellt von Hepi:
    Ist allerdings verwirrend, denn ich kann nun nicht außerhalb des Fensters klicken, ohne das mein Dialog meckert

    Doch, das kannst du wohl, wenn das geklickte Fenster nur zu nem anderen Prozess gehört.


Anmelden zum Antworten