DrawTransparentBitmap
-
wie meinst du das mit aufrufen?
Hab ne Klasse dafür... und die Werte sind beim Aufruf der Funktion gefüllt...
-
Was genau übergibst du der Funktion? Zeig doch mal den Code, wie du das Ganze eingebunden hast

-
ok, das ist nicht ganz so einfach... ich hab das in classen gebaut:
Hier mal nur der "wichtige" teilclass CGButton { private: HDC hdcButton; HWND hwnd; HBITMAP hBitmap; HINSTANCE hInstance; [...] public: CGButton(HWND HWnd, HINSTANCE HInstance, int iWM_MessageCode, int PICTURE_1, int iXPosition, int iYPosition, int iHeight, int iWidth); ~CGButton(); void SetButtonPics(int PICTURE); void PaintButton(); void PaintButton(HDC hdc); [...] }; //****SetButtonPics()****// //Zum setzen der Bilder und zum ändern der Position und Größe void CGButton::SetButtonPics(int PICTURE) { HDC hdc; hdc = GetDC(hwnd); hBitmap = (HBITMAP)LoadImage(hInstance,MAKEINTRESOURCE(PICTURE),IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION); hdcButton = CreateCompatibleDC(hdc); SelectObject(hdcButton, hBitmap); DeleteObject(hBitmap); ReleaseDC(hwnd,hdc); } //****PaintButton()****// //Zum Zeichnen des Buttons void CGButton::PaintButton(HDC hdc) { if (Visible == TRUE) { DrawTransparentBitmap(hdc, hBitmap, sSize.XPosition, sSize.YPosition, Color); if (PaintStatus == BUTTON_2) { HPEN hPen, hOldPen; hPen = CreatePen (PS_SOLID, 1, GetSysColor(COLOR_APPWORKSPACE)); hOldPen = (HPEN) SelectObject(hdc, hPen); MoveToEx(hdc,sSize.XPosition, sSize.YPosition, NULL); LineTo(hdc, sSize.XPosition + sSize.Width - 1, sSize.YPosition); LineTo(hdc, sSize.XPosition + sSize.Width - 1, sSize.YPosition + sSize.Height - 1); LineTo(hdc, sSize.XPosition, sSize.YPosition + sSize.Height - 1); LineTo(hdc, sSize.XPosition, sSize.YPosition); DeleteObject(SelectObject(hdc, hOldPen)); } } } //****PaintButton()****// //Zum Zeichnen des Buttons void CGButton::PaintButton() { HDC hdc; if (Visible == TRUE) { hdc = GetDC(hwnd); PaintButton(hdc); ReleaseDC(hwnd,hdc); } }
-
Lösche keine Objekte, die in einen Geräte-Kontext eingesetzt sind!
(Man hört sich das auf deutsch scheiße an)
-
du meinst:
DeleteObject(hBitmap);
=> stimmt das passt nicht. ich probier das mal aus, dann meld ich mich nochmal
-
bringt auch nichts

-
Warum setzt du eigentlich hBitmap in einen Geräte Kontext ein, den du niemals verwendest? DrawTranspar... setzt das Bitmap ja auch in einen DC ein, bzw. versucht es, aber ich glaube es schafft es nicht, weil das Bitmap schon in einem anderen DC selektiert ist.
Wenn das auch nicht hilft, musst du halt mal alle Rückgabewerte kontrollieren, dann findest du auch allein den Fehler.
-
D@niel $chumann schrieb:
Warum setzt du eigentlich hBitmap in einen Geräte Kontext ein, den du niemals verwendest? DrawTranspar... setzt das Bitmap ja auch in einen DC ein, bzw. versucht es, aber ich glaube es schafft es nicht, weil das Bitmap schon in einem anderen DC selektiert ist.
mh... das hab ich nicht gewusst...
-
und das war mein Fehler

Sorry, das hab ich echt nicht gewusst

Danke!!!
-
Ich habe da auch gleich mal ne Frage: Wieso benutzt du nicht TransparentBlt
Ich weiß zwar selber nicht wie das Funktioniert aber vielleicht klappt es ja bei dir.
-
Ich benutze es nicht, weil das JETZT funktioniert

Ansonsten gerne...