我正在使用 Visual Studio 2008 C++ 工作。我有一个 MFC 对话框,里面有一个控件。我正在尝试在控件中放置另一个对话框。
第二个对话框上的 SetWindowPos() 显然使用屏幕坐标,因此我需要获取控件或父对话框的屏幕坐标。 MSDN 文档说 GetWindowRect() 提供“相对于显示屏左上角的屏幕坐标”,但这不是我得到的。在控件上,它给出相对于父级的坐标。在父级上,它给出 left=0 和 top=0。我也尝试过 GetWindowPlacement() 中的矩形,它给出了相同的结果。一切都与父母有关。
为什么 GetWindowRect() 不返回屏幕相对坐标?还有其他方法可以获取它们吗?
我对编程并不陌生,但对 Windows 编程、Visual Studio 和 MFC 相当陌生,所以我可能会遗漏一些明显的东西。
这是我在 OnInitDialog 中为父对话框所做的事情:
// TestApp message handlers
BOOL TestApp::OnInitDialog()
{
CDialog::OnInitDialog();
FILE * pFile = fopen("out.txt","w");
CRect winRect;
GetWindowRect(&winRect);
fprintf(pFile,"left=%li top=%li right=%li bottom=%li\n",winRect.left,winRect.top,winRect.right,winRect.bottom); fflush(pFile);
fclose(pFile);
return TRUE; // return TRUE unless you set the focus to a control
}
运行时,对话框不会出现在屏幕的左上角,但 out.txt 包含:
left=0 top=0 right=297 bottom=400