bmp auf bmp malen/mehrere bmp malen?



  • Hi, ich bins wieder 😃

    In dem Programm, welches ich schreibe, habe ich 'ne Bitmap als Hintergrund- Als "mouseover-effekt" wollte ich jetzt den hintergrund button (der natürlich auch gemalt ist) hell aufleuchten lassen bei einem "drüber rollen" nur irgendwie bekomm ichs ned auf die reihe, ich hab für fast alles nen eigenen canvas gemacht

    naja seht mal selbst:

    switch (message)
    {
    case WM_CREATE:
    {
    // bitmap laden
    hBmp=(HBITMAP)LoadImage(GetModuleHandle(NULL),MAKEINTRESOURCE(ID_BITMAP_01),IMAGE_BITMAP,0,0,LR_SHARED);
    hBmp2=(HBITMAP)LoadImage(GetModuleHandle(NULL),MAKEINTRESOURCE(ID_BITMAP_02),IMAGE_BITMAP,0,0,LR_SHARED);
    hRegion1 = ScanRegion(hBmp,250,0,250);
    SetWindowRgn(hWnd,hRegion1,TRUE);
    DeleteObject(hRegion1);

    DWORD ID;
    static HANDLE Thread;
    Thread = CreateThread(NULL, 0, main_thread, (LPVOID)NULL, 0, &ID);
    WaitForSingleObject(Thread, 250);
    break;
    }

    case WM_LBUTTONDOWN:
    {
    x1 = LOWORD(lParam);
    y1 = HIWORD(lParam);

    if((x1>=1 && x1 <= 390) && (y1>=1 && y1<=21)) {
    SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);
    }

    if((x1>=365 && x1<=378) && (y1>=6 && y1<=19)) {
    PostQuitMessage(WM_QUIT);
    }

    break;
    }

    case WM_MOUSEMOVE:
    {
    x2 = LOWORD(lParam);
    y2 = HIWORD(lParam);

    if((x2>=365 && x2<=378) && (y2>=6 && y2<=19)) {
    hDC3 = BeginPaint(hWnd, &ps2);
    hDC4 = CreateCompatibleDC(hDC3);
    SelectObject(hDC4,hBmp2);
    BitBlt(hDC3,0,0,365,6,hDC4,0,0,SRCCOPY);
    DeleteDC(hDC4);
    EndPaint(hWnd, &ps2);
    }

    break;
    }

    < das was nur passeren soll, wenn die mouse drauf ist funzt ned (aber andere sachen kp ne messagebox funzt schon, also scheint irgendwie am erstellen/zeichnen der bmp zu liegen...

    case WM_PAINT:
    {
    hDC = BeginPaint(hWnd, &ps);
    hDC2 = CreateCompatibleDC(hDC);
    SelectObject(hDC2,hBmp);
    BitBlt(hDC,0,0,390,304,hDC2,0,0,SRCCOPY);
    DeleteDC(hDC2);
    EndPaint(hWnd, &ps);

    return 0;
    }

    < das geht wie geschmiert

    case WM_DESTROY:
    {
    PostQuitMessage(WM_QUIT);
    break;
    }
    }
    return DefWindowProc(hWnd, message, wParam, lParam);
    }

    Ich hoffe ihr könnt mir sagen woran es liegt, danke shconmal

    mfg



  • Hi, habs jetzt hinbekommen es malen zu können, aber NICHT beim mouseover...

    case WM_MOUSEMOVE:
          {         
              x2 = LOWORD(lParam);
    		  y2 = HIWORD(lParam);
    
    		  if((x2>=365 && x2<=378) && (y2>=6 && y2<=19)) {
                  asd = 1;
              }
              break;
          }       
    
           case WM_PAINT:
           {
                hDC = BeginPaint(hWnd, &ps);
                hDC2 = CreateCompatibleDC(hDC);
                SelectObject(hDC2,hBmp);
                BitBlt(hDC,0,0,390,304,hDC2,0,0,SRCCOPY);
                if(asd == 1) {
                    SelectObject(hDC2,hBmp2);
                    BitBlt(hDC, 365, 6, 20, 20, hDC2, 0, 0, SRCCOPY);
                }
                DeleteDC(hDC2);
                EndPaint(hWnd, &ps);
                return 0;
            }
    

    Warum geht es einfach nicht?!

    helft mir bitte 😕

    mfg



  • *pusch*

    Bitte helft mir doch, weiß ned was ich amchen soll!



  • habs schon hinbekommen ,danke für nix^^

    ne trotzdem thx xD

    mfg


Anmelden zum Antworten