Sagen wir, ich habe einen Handle des Device Context (natürlich in Windows-Umgebung):Wie findet man die Abmessungen von DC?
HDC hdc;
Wie kann ich die Breite und die Höhe davon?
Sagen wir, ich habe einen Handle des Device Context (natürlich in Windows-Umgebung):Wie findet man die Abmessungen von DC?
HDC hdc;
Wie kann ich die Breite und die Höhe davon?
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
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);
Ich weiß auch wenig über GDI, aber es scheint GetDeviceCaps könnte den Trick tun.
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.
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;
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
Insbesondere 'GetDeviceCaps (hdc, HORZRES)' und 'GetDeviceCaps (hdc, VERTRES) 'sind wahrscheinlich, was gewünscht wird. – TheUndeadFish
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