MFC 获取对话框区域

MFC Getting Dialog Area

我创建了一个从 CDialogEx 继承的通用对话框 class(CCommonDlg)。

现在我从CCommonDialog继承了CMyDialog。已将 CMyDialog 对话框资源 ID 传递给基础 class CCommonDialog.I 我正在尝试在对话框上画一个圆圈。所以在 CMyDialog::OnPaint() 我尝试了下面的代码:

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

虽然 运行 我看到了更大圆圈的一部分。它不适合对话框。所以我相信 GetWindowRect 没有给我正确的对话框维度。

任何人都可以帮助解决这个问题。 注意:CommonDlg 是一个 DLL,而 CMyDlg 是另一个 dll。 谢谢

使用此代码。

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

您正在使用的功能,GetWindowRect(&rect);
它还将包括您的 window 的标题栏,因此在该区域中您的 Ellipse 将被剪裁。所以因为你只需要在客户区绘制,你应该使用 GetClientRect(&rect);