2010-07-01 15 views

Respuesta

17

Un contexto de dispositivo (DC) es una estructura que define un conjunto de objetos gráficos y sus atributos asociados, y los modos gráficos que afectan el resultado.

Por ancho y alto supongo que te refieres al mapa de bits pintado?
Si es así, supongo que se puede intentar lo siguiente:

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

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

//structBitmapHeader.bmWidth 
//structBitmapHeader.bmHeight 
2

Como descargo de responsabilidad, no sé nada sobre GDI o con qué debe trabajar en su aplicación. Solo estoy tratando de ser útil si es posible.

Dicho esto, he encontrado un enlace que parece sugerir que es apropiado utilizar GetClientRect para obtener el tamaño del área de dibujo:

RECT clientRect; 

GetClientRect(hWnd,&clientRect); 

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

12

también saben muy poco acerca de GDI, pero parece que GetDeviceCaps podría hacer el truco.

+7

Específicamente, 'GetDeviceCaps (HDC, HORZRES)' y 'GetDeviceCaps (HDC, VERTRES) 'son muy probablemente lo que se desea. – TheUndeadFish

+3

GetDeviceCaps (hdc, *) devuelve las dimensiones de la pantalla independientemente del tamaño de la ventana. KevenK y GetClientRect de msandiford (WindowFromDC (hdc), & r) hacen el truco. – AbePralle

2

Usted podría WindowFromDC(...) para obtener la ventana de la CC si se asocia con una ventana. Luego puede usar la respuesta de @KevinK para obtener al cliente de esto.

1

Esta simple pieza de código que uso siempre para obtener las dimensiones del área de renderizado, cuando solo tengo el HDC. primer lugar, usted debe obtener un HWND de la HDC - es simple, entonces se puede obtener la rect cliente de este HWND:

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

Esto solo funcionará cuando DC esté asociado con una ventana. Para otros casos (por ejemplo, DC obtenido de CreateCompatibleDC()) WindowFromDC() devolverá NULL. – Archie

Cuestiones relacionadas