如何在Win32程序中设置以记住大小被记住

Icy*_*Brk 2 winapi visual-c++

我遇到了这个问题.我有一个简单的Win32程序,就像我在Visual Studio 2010的"模板 - > Visual C++"中选择"Win32项目"时可以得到的样板.

我发现所有其他基于Windows的程序,如Adobe Reader,Windows资源管理器具有以下功能:您将主窗口放大到新的大小,然后从文件菜单或系统菜单中选择"关闭"或"退出"关闭它,然后你再次启动程序,主窗口的大小将调整到上次.但是我从Visual Studio获得的程序作为引导程序没有这样的功能.

我对它进行了更多的研究,但无法找到WndClass或CreateWindow中的哪个设置,我可以通过调整来实现这一点.有谁知道,谢谢你的帮助.

Jon*_*ter 6

最简单的方法是使用GetWindowPlacement()SetWindowPlacement()函数.它们为您管理窗口大小和状态(最小化/最大化/恢复).

GetWindowPlacement()当您想要记录窗口的当前状态时调用:

WINDOWPLACEMENT wp = {0};
wp.length = sizeof(wp);
if (GetWindowPlacement(hWnd, &wp))
{
    // save wp values somewhere...
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以WINDOWPLACEMENT在程序的配置文件中的某处保存结构的值- 在注册表中或磁盘上.

要恢复窗口的信息,请将保存的值加载到WINDOWPLACEMENT结构中,然后调用SetWindowPlacement()函数:

if (values were previously saved)
{
    WINDOWPLACEMENT wp = {0};
    wp.length = sizeof(wp);
    // load wp values from somewhere...
    SetWindowPlacement(hWnd, &wp);
}
Run Code Online (Sandbox Code Playgroud)