screenshot wird nicht richtig gemacht



  • die "Breite" stimmt, die "Höhe" auch - jedoch nicht die "Anfangsposition" ... der Screenshot wird also etwas verschoben ... warum?

    HWND hWnd = (HWND)StrToInt(worte->Strings[2]);
           HDC DC = GetDC(hWnd);
           RECT rc;
           if (GetWindowRgn(hWnd,&rc) || GetWindowRect(hWnd, &rc))
           {
              Form1->HandleWindow->Picture->Bitmap->FreeImage();
              HandleWindow->Picture->Bitmap->Handle = CreateCompatibleBitmap(DC, rc.right-rc.left, rc.bottom-rc.top);
    
              if (GetDeviceCaps(DC, RASTERCAPS) & RC_PALETTE)
              {
                 int palette_size = GetDeviceCaps(DC, SIZEPALETTE);
                 if (palette_size == 256)
                 {
                    const size_t size = sizeof(LOGPALETTE) + (palette_size-1) * sizeof(PALETTEENTRY);
                    unsigned char* pBuffer = new unsigned char[size];
    
                    LPLOGPALETTE lplogpal = reinterpret_cast<LPLOGPALETTE>(pBuffer);
                    lplogpal->palVersion = 0x300;
                    lplogpal->palNumEntries = palette_size;
                    GetSystemPaletteEntries(DC, 0, palette_size, lplogpal->palPalEntry);
    
                    HandleWindow->Picture->Bitmap->Palette = CreatePalette(lplogpal);
                    delete [] pBuffer;
                 }
              }
    
              BitBlt(HandleWindow->Picture->Bitmap->Canvas->Handle, 0, 0,
                     HandleWindow->Width, HandleWindow->Height,
                     DC, 0, 0, SRCCOPY);
    
              ReleaseDC(Handle, DC);
    

    Bitte HIIILFE!


Anmelden zum Antworten