• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[C++] Screenshot

Status
Für weitere Antworten geschlossen.
C

Cryspy

Guest
Hi,
wie kann man mit C++ einen Screenshot erzeugen und den dann in einer Bitmap-Datei speichern???

Ich bin jetzt nur so weit gekommen, dass ich mir erst das Handle vom Desktop mit GetDC oder so was holen muss und dann noch was und das dann in eine Bitmap speichern.

mfg cryspy
 
Code:
HDC HScreenDC = GetDC(0);  
    Image1->Picture->Bitmap->Handle = CreateCompatibleBitmap(HScreenDC, 
                                            Form1->Width, 
                                            Form1->Height); 
 
    [B]int[/B] result = GetDeviceCaps(HScreenDC, RASTERCAPS);  
    [B]if[/B] (result & RC_PALETTE)  
    {  
        [B]int[/B] palette_size = GetDeviceCaps(HScreenDC, SIZEPALETTE);  
        [B]if[/B] (palette_size == 256)  
        {  
            [B]const[/B] size_t size = [B]sizeof[/B](LOGPALETTE) + 255 * [B]sizeof[/B](PALETTEENTRY);  
            [B]unsigned char[/B]* pBuffer = [B]new unsigned char[/B][size];  
 
            LPLOGPALETTE lplogpal =  
                [B]reinterpret_cast[/B]<LPLOGPALETTE>(pBuffer);  
            lplogpal->palVersion = 0x300;  
            lplogpal->palNumEntries = 256;  
            GetSystemPaletteEntries(HScreenDC, 0, 256,  
                                    lplogpal->palPalEntry);  
 
            Image1->Picture->Bitmap->Palette = CreatePalette(lplogpal); 
            [B]delete[/B] [] pBuffer;  
        }  
    }  
    ReleaseDC(0, HScreenDC);  
 
    HDC HWindowDC = GetWindowDC(Form1->Handle); 
    BitBlt(Image1->Picture->Bitmap->Canvas->Handle, 0, 0, 
           Image1->Picture->Bitmap->Width, Image1->Picture->Bitmap->Height, 
           HWindowDC, 0, 0,  
           SRCCOPY);  
    ReleaseDC(Form1->Handle, HWindowDC);

Du musst aber noch eine Image-Componente erstellen.
 
Danke für den Code, aber wie geht das mit der Image-Compononte (sorry falls ich mich ein bissl blöd anstell) `?
 
VC6 ziehst du einfach so ein Dingens auf dein Workspace. Wenn du hoverst steht da dann Image.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben