有关窗口位置的信息存储在哪里?


9

有关窗口位置的信息存储在哪里?

一个例子:我启动notepad.exe,它既没有最小化也没有最大化,而只是在屏幕中心启动了一个中等大小的窗口。如果我关闭它并重新启动,则它在相同的XY坐标上。但是,如果我在屏幕底部关闭它,它将在屏幕底部再次启动(而不是Midlle)。

如果我想手动更改窗口的XY位置以便在非标准位置打开,我需要编辑什么?

可能是注册表,但是在哪里?

Answers:


8

每个程序都以自己的方式存储有关其窗口的信息。对于记事本,我在Windows XP注册表中找到了以下内容。

在注册表中,转到以下文件夹

HKEY_CURRENT_USER\Software\Microsoft\Notepad

然后修改以下值

iWindowPosX
iWindowPosY
iWindowPosDX
iWindowPosDY

X和Y是窗口左上角的坐标。DX和DY是窗口的宽度和高度。

其他程序可能会将窗口位置信息保存在注册表或其他设置文件中。


因此,每个程序都必须处理自己的定位数据?
BenjiWiebe 2013年

我希望Windows能够处理它。但是,我脑子大开了。我编译了一个非常基本的Win32 GUI程序,并浏览了该代码以找到位置设置代码。我发现的只有一行告诉Windows定位该程序。然后,Windows像放置任何控制台程序一样定位该程序-左上角,然后再向右下方降低一点,然后再次降低,直到最终将其重置为左上角。演示:输入start10次test.bat并运行。
BenjiWiebe 2013年

我只是看到在我的情况下,iWindowPosX设置为fffffffd(4294967293)。你知道那大量的数字如何工作吗?
卡兰2013年

@BenjiWiebe它们是不同的东西:1.如果程序记住了窗口的位置,以便下次可以将其放置在同一位置,则该程序可以选择保存窗口坐标和大小的方式和位置。它可以将值保存在注册表,文本文件或其他方式中。2.如果您正在编写制作窗口的程序,则在创建窗口时应该能够指定窗口的位置和大小。我猜如果您不指定它们,Windows将按照您描述的那样选择默认位置。也许您可以在编程论坛上获得更具体的指导。
Bavi_H 2013年

1
@Karan当这些位被视为有符号值时,该数字为-3。简要地说:假设一个里程表有8个转盘,每个转盘上的数字为0到9,然后是A到F。如果从00000000开始,然后向后单击里程表三下,则结果为FFFFFFFD。有关更多详细信息:了解二进制,十六进制和二进制补码。
Bavi_H 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.