MFC - Rahmen als Zeichenfläche einbinden



  • Hallo,
    komischerweise stürzt mein Programm beim Aufruf immer ab,
    nachdem der Konstruktor einen Rahmen herstellt, in dem ich zeichnen möchte.

    1. Im Dialog füge ich ein Bild vom Typ "Rahmen" ein: IDC_RAHMEN

    2. Im Header erstelle ich eine Variable: CRect rahmen;

    3. Im Konstruktor definiere ich den Rahmen:

    Create("Klassenname"::IDD, pParent);
    GetDlgItem(IDC_RAHMEN)->GetWindowRect(&rahmen);      //Adresse ermitteln
    ScreenToClient(&rahmen);      //Position und Größe des Rahmens ermitteln
    ShowWindow(SW_SHOW);
    

    4. In OnPaint fülle ich den Rahmen z. B. weiß

    Ich brauche die Definition des Rahmens (Pkt. 3) unbedingt, weiß aber nicht, warum das Programm abschmiert. Wenn ich Pkt. 3 auskommentiere, läuft das Programm, aber die Zeichenfläche bleibt natürlich grau. Es muss also an den Eingaben im Konstruktor (Pkt. 3) liegen.
    Bin für jeden Hinweis/Tipp dankbar!!!



  • Das liegt wohl daran, dass das Fenster im Konstruktor noch nicht vorhanden ist und du somit auch nicht mit
    GetDlgItem(IDC_RAHMEN)->GetWindowRect(&rahmen);
    irgendwelche Grösse bestimmen kannst. Und schon gar nicht, bevor du das Fenster mit
    ShowWindow(SW_SHOW);
    überhaupt anzeigen lässt.
    In OnPaint() wird es erst gezeichnet.



  • Natürlich kennt der Konstruktor den Rahmen!

    Bisher klappte das immer so. Ist ja auch logisch!
    Früher hab ich in SDI-Dialogen programmiert.
    Hier handelt es sich um einen dialogbasierten Dialog.
    Weitere Änderung: Dialog wird MODAL aufgerufen.

    Das alles dürfte aber kein Grund für den Absturz sein.
    Mir fällt sonst nix ein.



  • *gngngn* ...wie du meinst...
    Dann will ich mal nicht weiter stören.


Log in to reply