【发布时间】:2015-10-22 12:14:08
【问题描述】:
我有一个非常简单的目标,但它似乎很棘手。我必须为文档获取一些精确尺寸的屏幕像素,所以我认为添加一个控件来将我的应用程序窗口的大小调整到我想要的确切尺寸是有意义的。
我正在使用 VS2010。
这是我的向导生成的对话框中的相关代码:
DlgSetWindowSize::DlgSetWindowSize(CWnd* pParent /*=NULL*/)
: CDialogEx(DlgSetWindowSize::IDD, pParent)
{
m_width = 0;
m_height = 0;
m_parent = pParent;
}
void DlgSetWindowSize::OnBnClickedOk()
{
CDialogEx::OnOK();
SetWindowPos(m_parent, 0, 0, m_width, m_height, SWP_NOMOVE|SWP_NOZORDER|SWP_NOOWNERZORDER);
}
这是对它的调用:
void CMyAppView::OnWindowSize()
{
DlgSetWindowSize d(this);
if (IDOK == d.DoModal())
{
Invalidate();
}
}
SetWindowPos 返回一个非零值,根据文档 (click here) 表示成功。当然,在运行对话框时,我输入了我想要的宽度和高度的像素值。调试器验证预期值是否被传递给SetWindowPos,并且SetWindowPos 给出非零返回。最后一个参数中到SetWindowPos 的位开关被设置为忽略位置参数,并且只表达该调用中的size 参数,因此窗口应该在不改变位置的情况下按我想要的大小调整。
一切似乎都井井有条,但窗口大小没有改变。我已将此逻辑应用于我的应用程序的文档窗口,当它不起作用时,我还将它应用于应用程序的 MainFrame 窗口。零操作。
我在这里遗漏了什么,还是我应该使用一些完全不同的方法?
【问题讨论】:
标签: c++ visual-studio-2010 mfc