【发布时间】:2015-01-29 08:27:42
【问题描述】:
我有一个多显示器设置。当窗口在辅助监视器中最大化时,我在 OnSysCommand() 中将窗口最大化到监视器大小的一半 通过执行以下操作:
MONITORINFO monitorInfo = { sizeof(MONITORINFO) };
GetMonitorInfo(hMonitor, &monitorInfo);
CRect rc = monitorInfo.rcMonitor;
rc.left = rc.left / 2;
SetWindowPos(hWnd, rc.left, rc.right, rc.Width(), rc.Height(),0);
这很好用。
但是,当进程停止并在进程启动后打开窗口时,窗口最大化到完整的监视器大小,尽管窗口放置在进程退出时保存。(WindowPlacement 的标志是 WPF_RESTORETOMAXIMIZED ,showCmd 是 SW_MAXIMIZE)
在 OnShowWindow() 中,使用了 SetWindowPlacement()。
【问题讨论】:
-
可能
rc.left的值为零,rc.left = rc.left / 2;之后表示 0/2 = 0。它将是相同的,这就是它不工作的方式。 -
试试这个它可能会工作
rc.right = rc.right / 2;或者你可以尝试rc.Width()/2在setwindowpos中的rc.Width()的位置使其减半。 -
rc.left 不为零。当我最大化打开的窗口时,它可以工作。但是当我停止进程并在启动后打开窗口时,窗口最大化以监视大小。我希望窗口显示为显示器大小的一半,因为我在进程关闭期间存储窗口放置并在 OnShowWindow 中执行 setwindowplacement