2010-07-01 53 views

回答

17

設備上下文(DC)是一種定義一組圖形對象及其關聯屬性以及影響輸出的圖形模式的結構。

按寬度和高度我猜你指的是位圖繪?
如果是這樣的話,我想你可以嘗試以下方法:

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

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

//structBitmapHeader.bmWidth 
//structBitmapHeader.bmHeight 
2

作爲一個免責聲明,我對GDI或您在應用程序中使用的東西一無所知。如果可能的話,我只是想盡力幫忙。

這麼說,我發現這似乎表明,它是適當的使用GetClientRect獲得繪圖區域的大小鏈接:

RECT clientRect; 

GetClientRect(hWnd,&clientRect); 

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

12

我也不太瞭解GDI,但看來GetDeviceCaps可能會伎倆。

+7

具體來說,'GetDeviceCaps(HDC,HORZRES)'和'GetDeviceCaps(HDC,VERTRES) '很可能是我們想要的。 – TheUndeadFish 2010-07-01 02:16:40

+3

無論窗口大小如何,GetDeviceCaps(hdc,*)都會返回屏幕尺寸。 KevenK和msandiford的GetClientRect(WindowFromDC(hdc),&r)儘管如此。 – AbePralle 2013-12-27 01:05:55

2

你可以WindowFromDC(...)獲得DC的窗口,如果它與一個窗口相關聯。然後,您可以使用@ KevinK的答案從此獲取客戶端權限。

1

當我只有HDC時,我總是使用這段簡單的代碼來獲取渲染區域的尺寸。 首先,你必須從HDC一個HWND - 很簡單,那麼你就可以得到這個HWND的客戶端RECT:

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

這隻有在DC與窗口關聯時纔有效。對於其他情況(例如從CreateCompatibleDC()獲得的DC),WindowFromDC()將返回NULL。 – Archie 2017-05-26 08:10:45