我正在尝试以编程方式设计一个对话框菜单,该菜单根据屏幕的分辨率进行调整大小,并且能够根据以下问题使用对话框的nameID
获取对话框的大小和位置:
Get Dialog Size as defined in resource file
但是,我在尝试获取对话框中按钮控件的大小和位置时遇到了麻烦。这是该对话框在资源文件中的外观示例:
IDD_DLG DIALOG 0, 0, 300, 200
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP
BEGIN
DEFPUSHBUTTON "OK",IDOK,30,46,42,18
PUSHBUTTON "Cancel",IDCANCEL,145,46,42,18
END
我可以使用对话框的nameID
即IDD_DLG
来获取对话框的大小和位置,但是可以通过编程方式为DEFPUSHBUTTON
或PUSHBUTTON
获得相同的内容吗?
如果是,怎么办?谢谢!
答案 0 :(得分:0)
MFC允许自动重新定位/调整子按钮的大小。在资源属性页面中,单击对话框按钮,转到“动态控制”部分,为每个按钮启用动态调整大小/移动。
要找到按钮相对于对话框客户端窗口左上角的坐标:
使用GetWindowRect
在屏幕坐标中找到矩形的按钮。然后将屏幕坐标转换为客户端坐标:
CMyDialog::OnInitDialog()
{
CDialog::OnInitDialog();
CRect rc;
CWnd *wnd = GetDlgItem(IDOK);
wnd->GetWindowRect(&rc);
ScreenToClient(rc);
...
//move/resize rc
wnd->SetWindowRect(NULL, rc.left, rc.top, rc.Width(), rc.Height(), SWP_SHOWWINDOW);
}