Bitmap wird nicht dargestellt ???



  • Hi,

    also ich hab mir meine Buttons selbst gebastelt.
    D.h. ich hab Bitmaps genommen, in meine Resourcen eingebunden und diese
    über ein Picture Control dargestellt.

    Per WM_LBUTTONDOWN überprüfe ich ob mein Button gedrückt wurde.
    Soweit so gut, bisher gabs noch keine argen Probleme.

    Ich bin nun mit dem OnMouseOver-Effect beschäfftigt. Ich will also wenn ich mit
    der Mouse über dem Bild bild das Bild neuzeichen.

    Ich würde dazu am liebsten WM_MOUSEMOVE verwenden.

    Das Board hab ich schon auf den Kopt gestellt wie man Bitmaps zeichnet. Schau auch garnicht schwer aus. Geht ja immer nach dem selben Schema.

    Hier mein Code:

    BOOL CALLBACK MainDlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
    {	
    	HDC hdc, hdcMem; 
        BITMAP bitmap; 
        PAINTSTRUCT ps; 
        static HBITMAP hbitmap; 
        static cxClient, cyClient;
    
    .....
    
        if(Message==WM_INITDIALOG){
    		SetDlgItemText(hwnd,IDC_EDIT_STATUS_BAR_LEFT,"Ready");
    		SendMessage(GetDlgItem(hwnd,IDC_CHECK_COMPRESS_WITH_UPX), BM_SETCHECK, BST_CHECKED, NULL);	
    
    		hbitmap = (HBITMAP) LoadImage(hMainInstance, MAKEINTRESOURCE(IDB_BUTTON_NEW_OMO),IMAGE_BITMAP, NULL, NULL, NULL); 
    		MessageBeep(NULL);
            GetObject(hbitmap, sizeof(BITMAP), &bitmap); 
            cxClient = bitmap.bmWidth; 
            cyClient = bitmap.bmHeight; 
    
            if(hbitmap == NULL) 
                MessageBox(NULL, "Error", NULL,NULL);
    
    		return 0;	
        }//WM_INITDIALOG	
    
    	else if(Message==WM_PAINT){		
    		hdc = BeginPaint(hwnd, &ps); 
    
            hdcMem = CreateCompatibleDC(hdc); 
            SelectObject(hdcMem, hbitmap); 
    
            BitBlt(hdc, 0,0, cxClient, cyClient,hdcMem,0,0, SRCCOPY); 
    
            DeleteDC(hdcMem);		
            EndPaint(hwnd, &ps);		
    
    		return 0;
    	}
    

    Ich denke mal das ich das Bitmap nun richtig zeichnen müsste, aber NEIN.
    Leider sehe ich garnichts. Wie man am Code sieht überprüfe ich ob mein Bitmap evtl. NULL ist. Fehlanzeige, das läd er anscheind korrekt.
    Auch wird der Paint-Event brav ausgelöst.

    Warum wird mein Bitmap nicht gezeichnet.

    Danke schonmal,

    Gruß OHPen



  • Bekommt man bei Dialogen auch WM_PAINT 😕



  • Die Message bekomme ich wenn ich z.B. das Fenster über den Bildschirmrand hinaus verschiebe oder ein anderes Fenster über mein Fenster ziehe.
    Dann wird immer neu gezeichnet, aber wieso wird mein Bitmap nicht gezeichnet !?

    Hat keiner ne Idee ??



  • Kann ich überhaupt in ein Picture Control malen, oder muss ich dem Control erst ein neues Bitmap zuweisen und dann das Fenster neuzeichenen ?



  • Picture Control 😕 Ist das MFC oder VCL?!
    Außerdem zeichnest du doch direkt in das Fenster, oder sehe ich da was falsch? Ansonsten (wenn du schon ein spezielles Control dazu verwendest) überlass doch dem Picture Control die Arbeit 😉



  • warum selektierst du die ganze zeit deine bitmap neu in ein hDC?
    könntest doch einfach einmal laden und dann immer draus zeichnen!?


Anmelden zum Antworten