Bitmap als Fensterhintergrund
-
Hallo,
Ich wollte in meiner APP anstatt einer Farbe eine Bitmap als Fensterhintergrund haben, habe dazu folgendes probiert (benutze VC++ 6.0):HWND CreateMainWindow(HINSTANCE hInstance) { WNDCLASSEX wndClass; wndClass.cbSize = sizeof(WNDCLASSEX); wndClass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW; wndClass.lpfnWndProc = WindowFunc; wndClass.cbClsExtra = 0; wndClass.cbWndExtra = 0; wndClass.hInstance = hInstance; wndClass.hbrBackground = LoadBitmap(NULL, MAKEINTRESOURCE(IDB_BACKGROUND)); // anstelle des üblichen z.B.(HBRUSH)... Hier komm ich //nicht weiter, der Compiler gibt mir einen Fehler aus, gibt es eine andere Möglichkeit eine Bitmap als Hintergrund zu laden? wndClass.hCursor = LoadCursor(NULL, IDC_ARROW); wndClass.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1); wndClass.lpszClassName = "WindowClass"; wndClass.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_MEINLOGO)); wndClass.hIconSm = LoadIcon(NULL, MAKEINTRESOURCE(IDI_MEINLOGO)); RegisterClassEx(&wndClass); return CreateWindowEx(NULL, "WindowClass", "H.U.N.T.I.N.G. Configuration Window", WS_SYSMENU | WS_MINIMIZEBOX | WS_VISIBLE, 100, 100, 1024, 768, NULL, NULL, hInstance, NULL); }
An meinem Kommentar im Quelltext könnt ihr erkennen, wo das Problem liegt, danke schonmal für eure Hilfe.
-
falsches forum
afaik geht das so nicht, sondern du musst in wm_paint das bitmap blitten.// ungefähr so case WM_PAINT: { BITMAP bm; PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); HDC hdcMem = CreateCompatibleDC(hdc); // hBitmapFromFile am besten static und in wm_create laden HBITMAP hbmOld = SelectObject(hdcMem, hBitmapFromFile); GetObject(hBitmapFromFile, sizeof(bm), &bm); BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY); SelectObject(hdcMem, hbmOld); DeleteDC(hdcMem); EndPaint(hwnd, &ps); } break;
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
das geht schon. du mußt jedoch die bitmap zuerst in eine brush verwandeln:
wndClass.hbrBackground = CreatePatternBrush(LoadBitmap(NULL,MAKEINTRESOURCE(IDB_BACKGROUND)));