Bitmap verschwindet, wenn Fenster maxi, mini oder über ein anderes Window bzw Rand gezogen wird, wieso ?



  • hi,
    ich habe per LoadImage( ... ) usw. eine Bmp geladen und in der WM_PAINT in den anwendungsbereich zeichen lassen. doch wenn ich wie oben genannte aktionen ausführe verschwindet meine Bmp. wieso? und wie kann ich da abhilfe schaffen?

    Gruß Tobi.



  • kener ne idee ?



  • versuch mal indem du in der WNDCLASSEX beim erstellen CS_HREDRAW|CS_VREDRAW weg laesst

    ATOM CMain::MyRegisterClass(HINSTANCE hInstance){
    	WNDCLASSEX wcex;
    	wcex.cbSize		= sizeof(WNDCLASSEX);
    	//wcex.style		= CS_HREDRAW|CS_VREDRAW;
    	wcex.style		= 0;	// 0 means only redraw wanted elements
    	wcex.lpfnWndProc	= WndProc;
    	wcex.cbClsExtra		= 0;
    	wcex.cbWndExtra		= 0;
    	wcex.hInstance		= hInstance;
    	wcex.hIcon		= LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON));
    	wcex.hCursor		= LoadCursor(NULL, IDC_ARROW);
    	wcex.hbrBackground	= reinterpret_cast<HBRUSH>(COLOR_3DFACE + 1);
    	wcex.lpszMenuName	= MAKEINTRESOURCE(IDR_MENU1);
    	wcex.lpszClassName	= szWindowClass;
    	wcex.hIconSm		= LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
    
    	return RegisterClassEx(&wcex);
    }
    


  • wenn ich style auf 0 setze dann verschwindet die Bmp zwar beim maxim. net oder beim rahmen verändern... doch sollte über die Bmp irgendwas geschoben werden... oder wenns mini miert wird verschwindet die BMP.

    hm... also wc.style = 0; bringts auch nicht wirklich.

    Gruß Tobi.



  • Wo lädst du die Bitmap denn? In der WndProc?



  • meine vermutung ist das das fenster das WM_PAINT nicht bekommt - wundert mich aber



  • hae, wieso sollte ich die Bmp nicht in der WndProc() laden?



  • Spricht nichts dagegen. Problem gibt es nur wenn du die Bitmap z.B. in WM_CREATE einmal lädst, aber die HBITMAP-Variable auch in der WndProc liegen hast ohne static-keyword. Dann ist der Inhalt nämlich nach dem nächstbesten WndProc()-Aufruf wieder tot 😉


Anmelden zum Antworten