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.