Seite 1 von 1

Wieder mal MS Visual C++

Verfasst: Mo Sep 16, 2002 10:11 pm
von Pestilence[PTL]
Einfache Frage:
Wie kann ich ein z.B. ein BMP in den Hintergrund eines Dialoges laden ?

Verfasst: Di Sep 17, 2002 11:30 am
von LostTemplar

Code: Alles auswählen

// hwnd = Handle des Dialogs
HDC hdc = GetDC(hwnd);

// Bitmap laden
// Achtung wegen dem Doppel-Backslash bei Pfadangaben
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, "c:\\filename.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
HDC hdcBitmap = CreateCompatibleDC(hdc);
SelectObject(hdcBitmap, hBitmap);

// In das Window kopieren
BITMAP bitmapInfo;
GetObject(hBitmap, sizeof(BITMAP), &bitmapInfo);
BitBlt(hdc, 0, 0, bitmapInfo.bmWidth, bitmapInfo.bmHeight, hdcBitmap, 0, 0, SRCCOPY);

...
...

// Am Schluss aufraeumen
DeleteDC(hdc);
DeleteObject(hBitmap);
DeleteDC(hdcBitmap);

Verfasst: Di Sep 17, 2002 11:37 am
von Pestilence[PTL]
Cool, vielen dank.

Ich gehe davon aus das die Zeilen in den Construktor müssen oder ?

// hwnd = Handle des Dialogs
HDC hdc = GetDC(hwnd); <--- Auch wenn es doof klingt, was ist damit gemeint *hwnd* ??

Verfasst: Di Sep 17, 2002 5:08 pm
von Ruesselschnurps
hWnd = handle of a window

Verfasst: Mi Sep 18, 2002 11:07 am
von Pestilence[PTL]
Hmm, naja ich verstehe den Code ansich.
Aber könnte das jemand vielleicht für ganz dumme erklärren ?
Also ich mache gerade einen MDI Charakter Generator für das schwarze Auge (Rollenspiel).
Die Base Class ist CFormView, und das mit den generieren und speichern habe ich schon hinbekommen. Ich möchte einfach nur in das Fenster ein BMP Hintergrund laden.
1. um zu lernen wie das geht
2. Um das Programm ein wenig anschaulicher zu machen =)

Problem bei den oben genannten Code ist:

HDC hdc = GetDC(); <- Wenn ich in die Klammer die Base Class setze
meckert der Compiler rum =(

Wäre echt nett wenn jemand einen kleinen Newbie in MS Visual C++ helfen könnte.

Verfasst: Mi Sep 18, 2002 11:23 am
von Katana
Du musst da das Handle deines Fensters reinhauen ;)
Handle heißt soviel wie 'ne ID.
Das heißt, jedes Fenster in Windows kriegt seine eigene Nummer (Handle), damit Windows genau weiß, welches Fenster, welches ist.
Geht glaub' ich aber auch anders als mit ner Nr. wenn ich mich nicht irre ...

Btw.: Trag' einfach ""hWnd"" ein. Das sollte in C 'nen vordefinierter Pointer (oder wie auch immer) sein, der auf das aktuelle Handle/Fenster zeigt.

Verfasst: Mi Sep 18, 2002 2:28 pm
von Pestilence[PTL]
Jo versuche ich gleich mal, danke !


D:\Microsoft\Visual C++\MyProjects\Char\CharView.cpp(107) : error C2065: 'hWnd' : undeclared identifier


schade

Ich weiss auch net was er damit genu meint ?
vielleicht ist es an der falschen posititon ?

Es ist zwischen:

CCharView::CCharView()
: CFormView(CCharView::IDD)
{
//{{AFX_DATA_INIT(CCharView)
viele Variablen initalisiern
//}}AFX_DATA_INIT
// TODO: add construction code here
...

oben gennanter Code

...

}

Ich glaub der Code muss wo anders rein ?

Verfasst: Mi Sep 18, 2002 6:43 pm
von Katana
Er kennt die Konstante hWnd nicht ... kann es sein, daß du noch 'ne bestimmte Headerdatei einbinden mußt ?

Hab' mit C(++) noch net so viele Erfahrungen gesammelt ...