About Dialog



  • Hallo,

    Ich programmiere gerade einen About Fenster, das erstelle ich als child im Anwendungsbereich (es ist kein Dialog!). Wie schaffe ich es nun das man im Rest der Anwendung nicht mehr weiterarbeiten kann???



  • Das ist doch quatsch. Bitte verwende einen modalen Dialog.



  • Wenn du einen Ressource bassierten modalen Dialog meinst, dann muss ich dir sagen das nicht alle Leute in Besitz von VS-C++ sind und ich mit Dev-C++ bis jetzt nur schererreien hatte (bei Ressourcen). Abgesehen davon hat MS die MessageBox und die modalen Dialogfelder ja auch irgendwie programmiert. (Eigentlich dürfte das nicht so schwierig sein)



  • Guckst du HIER
    und das mit dem Resourcen dürfte kein Prob mehr sein, sonst fragste mich, ich habe auch DevCpp und keine Probleme



  • Ich werde mir das noch mal angucken, aber ich würde auch gerne eine Antwort auf meine Ursprungsfrage haben, ob es möglich ist diesen Status auch für Fenster zu setzen.



  • Deaktiviere einfach alle anderen Fenster mit EnableWindow.



  • Daran habe ich auch schon gedacht aber das Prob ist das edit Boxen dann grau werden und ich auch alle childs durchgehen müsste (mit enumchilds eigentlich kein problem), aber kennt nicht jemmand noch ne andere möglichkeit?



  • Aufruf des About-Childwin über eine Function

    Pseudocode:

    // bla bla
    WM_COMAND
    // bla bla
    ID_ABOUT_DIALOG
    // bla bla
    ShowAbout();
    // bla bla
    //....
    
    void ShowAbout()
    {
       //window class abändern
       // auch wndproc nach childproc
       // und registrieren
       // Anzeigen
       static bool ok_geklickt = false;
       while (!ok_geklickt) /* muck nichts */
    }
    
    LRESULT CALLBACK ChildProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    WM_CREATE
    // OK Button und so rein
    WM_COMAND
    //  OK Button geklickt?
        // Fenster schliesen, ok_geklickt = true;
    }
    


  • Evtl. über WM_WINDOWPOSCHANGING 🙄



  • Manchmal verstehe ich deine kurzpostings mit WM_...... etc. nicht, fleners.
    Hast du ein "Auto-Antwort-Programm" geschrieben.



  • Die_drei-??? schrieb:

    Manchmal verstehe ich deine kurzpostings mit WM_...... etc. nicht, fleners.
    Hast du ein "Auto-Antwort-Programm" geschrieben.

    Nein, war aber eben schon spät und ich wollte nicht zu viel Zeit damit verbringen.
    Gedacht hatte ich das so, dass man WM_WINDOWPOSCHANGING abfängt und dann das Ganze über hwndInsertAfter der WINDOWPOS-Struktur vielleicht verhindern könnte - weiß allerdings nicht, ob das auch so hinhaut 😉



  • Weiß ich auch nicht ob das hinhaut, müßte man testen, aber fine ich zu aufwendig. In eine Function packen sehe ich einfacher.



  • @flenders: Ne das kann nicht funktionieren da mein About Feld natürlich kleiner ist als Hauptfenster.

    @DevMicky das habe ich mir auch schon überlegt aber die childs haben alle ihre eigene WindowProcedure. Soll heißen wenn ich in ein edit Feld drücke erscheint da der Cursor und (was noch schlimmer ist) das Fenster wird neu gezeichnet was dafür sorgt da ich im schlimmsten Fall ein weißes Loch im About Window habe.



  • Merkst du nicht das das total bescheuert ist, was du da vorhast?



  • Nach einer alten Regel gibt es keine bescheuerten Fragen, es gibt nur dumme antworten. Nur weil bis jetzt noch niemand eine Lösung gefundet hat bedeutet das nicht das es keine gibt.

    Die radikalste Lösung ist natürlich einfach die Window Procedure komplett zu blockieren. Dann steht das Programm völlig still. Das Prob ist Aktion wie resize und repaint funktionieren dann nicht mehr. Wenn keiner mehr ne Lösung weiß werde ich es wohl dann mal so probieren ...


Log in to reply