LoadBitmap
-
Hi,
ich habe mit LoadBitmap() eine BMP-Resource in eine CBitmap Variable geladen. Um sie anzeigen zu können habe ich eine Gerätekontext erstellt. Doch beim kompilieren gibt es einen Fehler:
void CToolDlg::ShowBitmap(CPaintDC *pdc, CWnd *pWnd)
{CToolDlg *lpWnd = (CToolDlg*)pWnd;
BITMAP bmp;
lpWnd->m_bmpAmpel.GetBitmap(&bmp); // <--- hier ist der Fehler
.
.
.Aber was ist falsch?
Danke & Gruß
-
der genaue fehler wär noch gut.
wo lädst du das bitmap?
-
Okay, sorry.
Also beim kompilieren gibt es keine Fehler, aber beim Debuggen wird in der Zeile
lpWnd->m_bmpAmpel.GetBitmap(&bmp);
der Wert: lpWnd 0x00000000 {CToolDlg hWnd=???}
angezeigt. Danach fliegt er raus.
Hoffe das hilft weiter.
Gruß
-
Bitmap lade ich in
OnInitDialog()
-
Sicher das pWnd ein gültiger Zeiger ist? Wie wird die Funktion aufgerufen?
-
0x00000000 --> NULL
da funktioniert was mit der uebergabe der adresse nicht.CToolDlg *lpWnd = (CToolDlg *)pWnd; if(lpWnd==NULL) return;dann fliegt er nur aus der funktion nicht aus dem ganzen programm
eine loesung ist das allerdings nicht
wo wird die funktion aufgerufen?
-
In der Funktion OnPaint():
void CToolDlg::OnPaint()
{
CPaintDC dc(this); // Gerätekontext für ZeichnenCToolDlg *pWnd = (CToolDlg*)GetParent();
if (IsIconic())
{
.
.
.
else
{
CDialog::OnPaint();ShowBitmap(&dc, pWnd);
}
-
hmm da funktioniert anscheinend GetParent nicht
warum rufst du getparent nicht erst in showbitmap auf?
und auszug aus msdnThe returned pointer may be temporary and should not be stored for later use.
und hat CToolDlg uberhaupt ein parent window?
-
NULL bedeutet in diesem Fall höchstwarscheinlich, dass der Dialog gar kein Parent-Window hat. Könnte das sein?
-
ein Dialog hat kein Parent, man muss den this Zeiger übergeben
-
Danke an alle. Hab es hinbekommen.
Ist vielleicht etwas unschön aber es geht.CToolDlg *pWnd = (CToolDlg*)GetDlgItem(IDC_SHOWBMP);
Hab mit GetDlgItem direkt auf das Dialogfeld zugegriffen.
Gruß