Eine Frage



  • Ich habe zwei Fragen zu Dilogbasierenden MFC-Anwendungen, würde mich über jede Antwort/Hilfe freuen.

    erste frage lautet: Kann man das Fenter welches von Visual C++ vorgefertigt wird so einstellen das die sachen die man dort macht (Bilder zeichnet anhand der Mauskoordinaten) nicht verloren gehen beim minimieren?
    zweite Frage lautet: Ist es möglich das was man gezeichnet hat auch abzuspeichern?

    Danke schonmal für eure mühen.

    mfg Govedar



  • Zu 1) Du musst den Dialog neu zeichnen. Das kannst du entweder mit CMetaFileDC() machen, oder du schreibst den Code für das Malen in die OnPaint() bzw. OnDraw().

    Zu 2) Du kannst natürlich das Gemalte als ein Bitmap speichern...
    Schau dir mal diesen Link an
    http://www.c-plusplus.net/forum/viewtopic.php?t=39400&sid=fc6665b3a85eb08782a621eccc48680a

    Gruß
    :: NoName ::



  • Gut zu wissen das beide funktionen gehen das beruhigt mich sehr und danke dir für deine Antwort 🙂

    Nur leider weiss ich jetzt nicht wie ich das machen muss um das gezeichnete bild bei minimieren nicht zu verlieren, (ich muss sagen das ich nicht lange mit MFC-Anwendungen arbeite, aber sie haben meine lust an programmieren geweckt ;-))Ich hoffe mal das einer so nett ist und es mir ausführlich erklärt oder mich auf eine hilfe verweisst konnte leider über google nichts finden.

    Die Speicherfunktion habe ich auch versucht zu implementiern doch leider ohne erfolg, werde aber hart bleiben und noch mehr rumprobieren (wenn ich erlich bin dann habe ich im mom. keinen Plan wie ich dass anstellen soll)

    mfg Govedar



  • Nochmal zu 1)
    Die OnPaint() ist dazu da, um den Dialog zu 'aktualisieren', so wird er immer wieder neu gezeichnet. Also wird der Code in der OnPaint() immer wieder neu aufgerufen. Das bedeutet das du doch nur dein Code für das Zeichnen in die OnPaint() verlagern musst. [Ähnlich wie ein Timer der die ganze Zeit dein Code aufruft]

    Zu 2)
    Bau einfach die Funktion

    int CDeineKlasse::dc2bitmap(HDC hdc, int width, int height, char *filename)
    

    in dein Projekt mit ein, und wenn du dann ein Bitmap speichern willst, musst du die nötigen Daten angeben.

    Beispiel:

    HDC hDC = ::GetDC(NULL);
    .
    .
    .
    dc2bitmap(hDC, 500, 500, "C:\\Test.bmp");
    

    Hoffe konnte dir helfen..

    Gruß
    :: NoName ::



  • Danke für die schnellen Antworten.
    Speichern kann ich schonmal, aber das ist irgendwie kein richtiges Speichern ist ein wenig fusch aber es tut es auch. Danke für den Hinweis.

    Leider funktioniert das nicht wenn ich das in die OnPaint rein packe dann kann ich garnicht malen, ich mache da bestimmt nen fehler. Gibt es da ne andere Alternative?

    mfg Govedar



  • Naja, die Alternative wäre mit CMetaFileDC() zu arbeiten...

    Schau dir das mal in der MSDN an.
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_cmetafiledc.3a3a.cmetafiledc.asp

    Falls du Hilfe brauchtst, einfach bescheid sagen....

    Gruß
    :: NoName ::



  • Leider weiss ich nicht was ich mit dieser Funktion genau machen soll, bzw wo ich sie aufrufen soll.

    Wäre echt nett wenn du mir dieses auch noch erklärst.

    mfg Govedar


Anmelden zum Antworten