2015-02-24 67 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);