WINDOWPLACEMENT wp = { };
wp.length = sizeof( WINDOWPLACEMENT );
bool result = GetWindowPlacement( Sess.M_hdl , &wp );
Sess.xPos = wp.ptMinPosition.x;
Sess.yPos = wp.ptMinPosition.y;


我如何处理此函数上的POINT结构,当前在ptMinPosition.x / ptMinPosition.y上显示-1,这是一个错误,但是result为1,因此该函数成功了。

最佳答案

-1是函数结果的错误,但作为X或Y坐标完全有效。
在结构WINDOWPLACEMENT中,字段ptMinPosition是窗口最小化时的屏幕坐标。对于大多数窗口,最小化时的位置不在屏幕上,因此(-1,-1)似乎很合理。

我已经审查了我自己的答案。也许您尝试使用错误的字段执行错误的操作?

字段showCmd可能会告诉您窗口的当前状态(文档不清楚,这是否取决于您进行的调用是输入/输出字段)。大多数人只在假定窗口可见时才关心位置(尽管您仍然可以通过编程将其置于屏幕之外)。

也许您应该查看结构的rcNormalPosition字段?
您可以尝试调用IsIconic()来确定窗口是否最小化,或者调用IsZoomed()来查看窗口是否最大化。如果它们都不是,并且没有被隐藏,那么您应该能够从我上面提到的RECT字段中获取当前位置信息。

10-08 08:23