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);
我创建了一个从 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);