2015-02-24 65 views
1

我創建了一個從CDialogEx繼承的通用對話框類(CCommonDlg)。MFC獲取對話框區域

現在我從CCommonDialog繼承CMyDialog。通過CMyDialog對話框資源ID到基類CCommonDialog.I試圖在對話框上畫一個圓。因此,在CMyDialog::OnPaint()我嘗試下面的代碼:

CPaintDC dc(this); 
CRect rect; 
GetWindowRect(&rect); 
ScreenToClient(rect); 
dc.Ellipse(rect); 

在運行我看到更大的圓的一部分。它不適合對話。所以我相信GetWindowRect並沒有給我適當的對話框尺寸。

任何人都可以請幫忙。 注意:CommonDlg是一個DLL,CMyDlg是另一個DLL。 謝謝

回答

1

使用此代碼。

CPaintDC dc(this); 
CRect rect; 
GetClientRect(&rect); //to get client area only 
dc.Ellipse(rect); 

您正在使用的功能,GetWindowRect(&rect);
它將包括你的窗口同樣的標題欄,所以在您的Ellipse將被夾住的區域。因此,因爲您只需要在客戶區域進行繪圖,您應該使用GetClientRect(&rect);