前提
我使用参数-width 640 -height 480
启动一个some program.exe
,这会导致程序以指定的大小启动。在
然后我想验证程序是否以指定的大小启动,因此使用win32gui.GetWindowRect()
我计算了窗口大小:
>>> r = win32gui.GetWindowRect(HWND)
>>> w = r[2] - r[0]
>>> h = r[3] - r[1]
>>> print w,h
646 509
大小不匹配。我认为这很可能是因为标题栏。在
我的问题是:如何获得标题栏的大小?
注意:我需要知道标题栏的大小,以便验证程序大小,因此使用win32gui.GetWindowRect()
并用预期大小减去它的值不是一个解决方案。在
用图片说明我的问题
附加问题
不同操作系统的标题栏和边框的大小是否不同?在
根据我自己的计算(信息未经正式确认),在默认的Windows10中,边框的大小是3px
,标题栏的高度是26px
。有人能证实/指责这个信息吗?在
选项1: 你可以硬编码,并给它固定的偏移量,从左到右和下8像素,从上到上31像素,以删除不可见的边框和标题栏。在
但是这样当你改变视窗的比例时,它将不再正常工作,如果你自己编写程序来使用程序,这个选项是很好的。如果您希望程序与多个刻度兼容,请尝试选项2。在
选项2:
您可以使用
GetClientRect
来获得没有标题栏和不可见边框的窗口大小,然后使用它来计算偏移量这里newRect是没有标题栏或不可见边界的rect
资料来源: GetWindowRectGetClientRect
相关问题 更多 >
编程相关推荐