我需要知道窗口的阴影尺寸。我尝试通过GetSystemMetrics WinAPI函数接收值,但我找不到要传递的参数。 关于如何全局(或单个窗口句柄)获取此值的任何想法?我知道投影的宽度取决于窗口类型(对话框/正常/等)。 我会用C#实现这个功能,但C ++也没关系。
答案 0 :(得分:2)
有一种使用DWM API来确定投影大小的方法,但是,只有在窗口可见时它才起作用。
在以前的Windows版本中,有Client Rect和Window Rect。但是自从Vista发布以来,用于窗口的第三个Rect窗口称为Extended Frame Bounds。第三个rect大于Client Rect且小于Window Rect,并且排除了阴影所占据的区域。
调用DwmGetWindowAttribute(hwnd, DWMWA_EXTENDED_FRAME_BOUNDS, &rect, sizeof(RECT))
以读取扩展帧边界rect。此函数来自<dwmapi.h>
,并且是
在Windows XP或更早版本中不可用。
请注意,如果在显示窗口之前调用此方法,将会得到不正确的结果。
答案 1 :(得分:1)
据我所知,无法获取该信息。诸如WindowClippings之类的程序通过截取屏幕并在之后裁剪为阴影尺寸来解决它。