2010-07-01 8 views

Antwort

17

Ein Gerätekontext (Device Context, DC) ist eine Struktur, die eine Gruppe von Grafikobjekten und ihre zugeordneten Attribute sowie die Grafikmodi definiert, die sich auf die Ausgabe auswirken.

Nach Breite und Höhe Ich vermute, Sie beziehen sich auf die Bitmap gemalt?
Wenn ja ich denke, man dann die folgende versuchen:

BITMAP structBitmapHeader; 
memset(&structBitmapHeader, 0, sizeof(BITMAP)); 

HGDIOBJ hBitmap = GetCurrentObject(hDC, OBJ_BITMAP); 
GetObject(hBitmap, sizeof(BITMAP), &structBitmapHeader); 

//structBitmapHeader.bmWidth 
//structBitmapHeader.bmHeight 
2

Als Haftungsausschluss weiß ich nichts über GDI oder was Sie in Ihrer Anwendung arbeiten müssen. Ich versuche nur, wenn möglich, hilfreich zu sein.

Das heißt, ich einen Link gefunden, dass es angemessen scheint darauf hinzudeuten GetClientRect zu verwenden, um die Größe der Zeichenfläche zu erhalten:

RECT clientRect; 

GetClientRect(hWnd,&clientRect); 

http://www.toymaker.info/Games/html/gdi.html#winsize

12

Ich weiß auch wenig über GDI, aber es scheint GetDeviceCaps könnte den Trick tun.

+7

Insbesondere 'GetDeviceCaps (hdc, HORZRES)' und 'GetDeviceCaps (hdc, VERTRES) 'sind wahrscheinlich, was gewünscht wird. – TheUndeadFish

+3

GetDeviceCaps (hdc, *) gibt die Bildschirmdimensionen unabhängig von der Fenstergröße zurück. KevenK und msandifords GetClientRect (WindowFromDC (hdc), & r) macht jedoch den Trick. – AbePralle

2

konnte Sie WindowFromDC(...) die DC-Fenster zu erhalten, wenn es mit einem Fenster zugeordnet ist. Sie können dann die Antwort von @ KevinK verwenden, um den Client davon zu überzeugen.

1

Dieses einfache Stück Code verwende ich immer, um die Dimensionen des Renderbereichs zu erhalten, wenn ich nur die HDC habe. Zuerst Sie eine HWND aus dem HDC erhalten muss - ist einfach, dann können Sie den Client rect dieser HWND erhalten:

RECT rcCli;   
GetClientRect(WindowFromDC(hdc), &rcCli); 
// then you might have: 
nWidth = rcCli.right-rcCli.left; 
nHeight = rcCli.bottom-rcCli.top; 
+0

Dies funktioniert nur, wenn DC einem Fenster zugeordnet ist. Für andere Fälle (z. B. DC, die von CreateCompatibleDC() erhalten werden), wird WindowFromDC() NULL zurückgeben. – Archie