[C++] Nicht gespeicherter Screenshot

Ich hab lange gesucht, aber bie fast allen Foren etc. wird der Screenshot gespeichert...

Code:
HDC hdcScreen = GetDC(NULL);
HDC hdcTemp = CreateCompatibleDC(hdcScreen);
HBITMAP hbmpTemp = CreateCompatibleBitmap(hdcTemp);
SelectObject(hdcTemp, hbmpTemp);
BitBlt(hdcTemp, 0, 0, 1024, 768, hdcScreen, 0, 0, SRCCOPY);
Ist der Code richtig?
 
Ich habe es nie getestet, aber so rein von meiner Überlegung her würde ich es mal so probieren. Du kannst es ja mal testen indem du die Bitmap als Datei schreibst und schaust ob das rauskommt, was du möchtest. Wenn ja, dann stimmt es ja auch im Speicher ;)
 
Ich habs mit dem Code von dem hier gemacht und ein Screenshot kam raus, aber interessnt ist er... :-) siehe Anhang...
 

Anhänge

  • cmap.jpg
    cmap.jpg
    23,8 KB · Aufrufe: 13
Gut, das Speichern geht schonmal... ;) Ich habe erst
Code:
HDC hdcTemp = CreateCompatibleDC(dc);
HBITMAP hbmpTemp = CreateCompatibleBitmap(hdcTemp, 1024, 768);
geschrieben, aber
Code:
HDC hdcTemp = CreateCompatibleDC(dc);
HBITMAP hbmpTemp = CreateCompatibleBitmap(dc, 1024, 768);
funktioniert jetzt! ;)
Ich versuch mal, eine Funktion mit HDC-return zu programmieren...
 
Ich habs geschafft...
Für alle die es interessiert:
Code:
struct SCREEN{
public:
	HBITMAP hbmp;
	HDC hdc;
};

SCREEN getScreen(HDC src){
	HDC hdcTemp = CreateCompatibleDC(src);
	HBITMAP hbmpTemp = CreateCompatibleBitmap(src, 1024, 768);
	SelectObject(hdcTemp, hbmpTemp);
	BitBlt(hdcTemp, 0, 0, 1024, 768, src, 0, 0, SRCCOPY);
	SCREEN scr;
	scr.hbmp = hbmpTemp;
	scr.hdc = hdcTemp;
	return scr;
};

Man muss nur einen HDC übergeben, der den Bildschirm "enthält"...
Das funktioniert prima! ;)

Danke an alle, v. a. an Cromon. ;)
 
Zurück