获取没有边框的进程窗口大小

3
使用WinApi的GetWindowRect()函数可以返回完整的窗口大小,但我想获取没有边框和标题栏的大小,就像红色方框所示。是否有相应的函数可以实现这个功能呢?谢谢。
1个回答

6
你需要的Windows API函数是 GetClientRect。如果随后需要将这些坐标转换为屏幕相关坐标,请调用ClientToScreen

我尝试调用ClientToScreen函数,但它返回一个Point类型,我需要获取Rect的值,以便查看其相对于顶部/底部/右侧/左侧的坐标。GetClientRect函数只返回高度和宽度,而不是真正的Rect。 - Kyore
一个矩形由两个点定义,即左上角和右下角。对于客户区矩形,左上角始终为(0,0)。调用“ClientToScreen”函数两次,分别针对定义矩形的这两个点,即可得到屏幕坐标系中定义矩形的两个点。 - David Heffernan
所以基本上我需要计算值并设置一个矩形来使用吗?ClientToScreen返回一个疯狂的值,比如X=1.18831764296032E-312和Y=0,窗口句柄是正确的,因为它已经在其他正常工作的函数中使用过了,我应该采取不同的方法来使用ClientToScreen获取那个点吗? - Kyore
你的代码显然有误。坐标是整数,这里不应该有浮点值。 - David Heffernan
是的,我的错,我创建了一个Windows.Point而不是Drawing.Point。无论如何,它返回左上角,但是我怎么才能得到右下角呢?调用两次ClientToScreen只会使我的点值增加2倍。 - Kyore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接