visual-c++ - SetWindowPos() 函数不移动窗口?

我有一个对话框,我想将其放置在另一个对话框中,并相对于主对话框上的其中一个控件进行定位。

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/

相关文章:

sql - 在 SQL 中选择多个字段的最大值的最佳方法是什么?

php - 我将如何扫描目录以使用 php 链接到 pdf?

delphi - "Long running method is done"有设计模式吗?

perl - 如何使用 Perl 列出具有特定名称模式的目录下的文件?

vba - 限制多选列表框中的选择数

php - 如何在 PHP 中 3 秒内切换到另一个页面?

oracle - 如何在文件系统上创建目录?

php - 当前文档的 PHP 中的最后更新日期

vb.net - 如何清除datagridview中的所有数据且不影响删除数据

ms-access - MS Access 交叉表查询参数