Wieder mal MS Visual C++

Hardware, Software, Webdesign & Coding.

Moderator: Katana

Antworten
Benutzeravatar
Pestilence[PTL]
Beiträge: 218
Registriert: Di Okt 16, 2001 12:01 am

Wieder mal MS Visual C++

Beitrag von Pestilence[PTL] »

Einfache Frage:
Wie kann ich ein z.B. ein BMP in den Hintergrund eines Dialoges laden ?
Bild
Benutzeravatar
LostTemplar
Beiträge: 166
Registriert: Sa Aug 31, 2002 10:25 pm

Beitrag 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);
Benutzeravatar
Pestilence[PTL]
Beiträge: 218
Registriert: Di Okt 16, 2001 12:01 am

Beitrag 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* ??
Bild
Benutzeravatar
Ruesselschnurps
Beiträge: 943
Registriert: Sa Sep 23, 2000 12:01 am

Beitrag von Ruesselschnurps »

hWnd = handle of a window
Benutzeravatar
Pestilence[PTL]
Beiträge: 218
Registriert: Di Okt 16, 2001 12:01 am

Beitrag 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.
Bild
Benutzeravatar
Katana
Beiträge: 5337
Registriert: So Jan 02, 2000 1:01 am

Beitrag 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.
Benutzeravatar
Pestilence[PTL]
Beiträge: 218
Registriert: Di Okt 16, 2001 12:01 am

Beitrag 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 ?
Bild
Benutzeravatar
Katana
Beiträge: 5337
Registriert: So Jan 02, 2000 1:01 am

Beitrag 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 ...
Antworten