我有一个对话框,我想将其放置在另一个对话框中,并相对于主对话框上的其中一个控件进行定位。
void CspAceDlg::DrawResultsArea()
{
CWnd* pTabCtl = GetDlgItem(IDC_BUILDTABS);
CRect rectTabCtl; // Allocate CRect for control's position.
pTabCtl->GetWindowRect(&rectTabCtl);
int resX = rectTabCtl.right + 15;
int resY = rectTabCtl.top;
//RESULTS AREA
results.Create(IDD_RESULTSDIALOG, this);
results.SetWindowPos(this, resX, resY, /*608, 19, */175, 135, SWP_SHOWWINDOW);
results.ShowWindow(SW_SHOW);
}
我的问题是我的对话框资源 (IDD_REULTSDIALOG) 具有名为 X Pos 和 Y Pos 的属性,它们似乎覆盖了我的 SetWindowPos()(资源编辑器中的小属性选项卡不允许我将这些留空)。如果我将这些属性设置为 0, 0 我的对话框出现在主对话框的左上角。如果我将它们设置为一个数字,我可以猜测并测试将其大致放置在我想要的位置,但随后以不同的分辨率运行应用程序会导致对话框出现在不同的位置。无论如何我真正想做的是将对话框相对于我的主对话框上的另一个控件放置(在本例中是我的选项卡控件)。为什么我的 SetWindowPos() 被忽略了,我该如何解决这个问题?我应该使用不同的函数吗?
最佳答案
根据 SetWindowPos 的文档,如果传入SWP_SHOWWINDOW,则窗口不会移动:
If the SWP_SHOWWINDOW or SWP_HIDEWINDOW flag is set, the window cannot be moved or sized.
https://stackoverflow.com/questions/1044315/