SetWindowPos()函数没有移动窗口?

Lau*_*ren 1 mfc visual-c++

我有一个对话框,我想放在另一个对话框和相对于主对话框上的一个控件的位置.

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);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我的对话框资源(IDD_REULTSDIALOG)具有名为X Pos和Y Pos的属性,它们似乎覆盖了我的SetWindowPos()(资源编辑器中的小属性选项卡不允许我将这些留空).如果我将这些属性设置为0,0我的对话框将出现在主对话框的左上角.如果我将它们设置为一个数字我可以猜测 - 并且测试将它大致放在我想要的位置,但是然后在不同的分辨率下运行应用程序会导致对话框出现在不同的位置.我真正想要做的是将对话框相对于我的主对话框上的另一个控件(在本例中为我的选项卡控件).为什么我的SetWindowPos()被忽略,我该如何解决这个问题?我应该使用不同的功能吗?

sea*_*n e 7

根据SetWindowPos的文档,如果传入SWP_SHOWWINDOW,则不会移动窗口:

如果设置了SWP_SHOWWINDOW或SWP_HIDEWINDOW标志,则无法移动或调整窗口大小.