Gemmer ikke bitmap ordentligt

Tags:    c++

Hej,

Jeg har skrevet dette lille tegneprogram, som tillader en at tegne streger i vinduets klientområde og derefter gemme billedet i en bmp-fil via menuen, men når jeg gemmer bitmap'et og forsøger at åbne det med Paint, siger Paint, det er ugyldigt.

Her er koden:
Fold kodeboks ind/udKode 


Hilsen Thomas



5 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Der er et par problemer.

BeginPaint kan kun bruges ved WM_PAINT, du kan ikke bruge den når du skal gemme filen. Du kan bruge GetDC til at få fat i DC'en

Det er muligvis derfor at den bitmap du henter med:
GetObject(canvas, sizeof(BITMAP), &bm);
er 1*1 stor, det er en tom bitmap.



Argh, det med WM_PAINT vidste jeg sgu da godt... Det var fordi jeg først overvejede at lade WndProc->WM_PAINT gemme bitmap-filen, og så ombestemte jeg mig lidt og glemte at skrotte BeginPaint/EndPaint.

Jeg prøver lige at bruge GetDC og vender så tilbage.



Indlæg senest redigeret d. 17.01.2010 15:25 af Bruger #8985
Nu ser min kode således ud. Det virker stadig ikke, skal jeg bare droppe mem-dc'en og bruge GetDC()-dc'en direkte i forbindelse med canvas? Altså fx i kald som SelectObject og DrawLines etc.? Har fjernet alt andet end SaveFile-funktionen.

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 17.01.2010 14:27 af Bruger #8985
Hvis du putter disse linier ind i koden efter GetObject(canvas, sizeof(BITMAP), &bm)

Fold kodeboks ind/udKode 


Kan du se at der er noget galt med størrelserne. rcClient bliver ikke sat til noget, prøv med GetClientRect




Nu virker det! Jeg havde glemt GetClientRect, har ingen ide om hvorfor. Tusind tak endnu engang, Bertel!



t