MFC SDI 中 通过注册表保存当前窗体的 显示状态位置

   

在 框架类响应 WM_CLOSE消息的时候添加如下代码

 

 HKEY  key;        //用于接收注册表项句柄
 WINDOWPLACEMENT  info;  //获得窗体位置状态信息
 GetWindowPlacement(&info);  //CWnd类的函数获取一个窗体的状态信息
 if(ERROR_SUCCESS==                          //调用  RegOpenKeyEx 打开注册表 返回key  如果成功 返回  ERROR_SUCCESS 

  RegOpenKeyEx(
  HKEY_CURRENT_USER,         //要打开的项的句柄  具体看MSDN
  "Software\\WolfeLee\\SaveWinState\\Settings", //子项
  0,   //保留0 

KEY_ALL_ACCESS,  //所有权限

&key))   //返回子项句柄
 {  

  DWORD des;     //用于接收返回信息 这里不用
        if(ERROR_SUCCESS==::RegCreateKeyEx (    //如果注册表创建成功 那么返回ERROR_SUCCESS
  HKEY_CURRENT_USER,  
  "Software\\WolfeLee\\SaveWinState\\Settings",    
        0,
  "State",   //类型
  REG_OPTION_NON_VOLATILE,  //在windows重启的时候 我们创建的注册表 依然保存
  KEY_ALL_ACCESS,   //所有权限
  NULL,   //默认安全结构
  &key,  //用于接收HKEY
  &des))
  { // 将窗口信息保存到注册表中
      RegSetValueEx(key, "WindowState", 0, REG_BINARY, (LPBYTE)&info, sizeof(WINDOWPLACEMENT));  //用二进制的形式保存窗体信息

      RegCloseKey(key);  // 关闭注册表 
  }

 }

 

以上完成了 状态的饿保存  我们如何在启动的时候加载注册表信息  在   APP的  初始化函数中 要在  m_pMainWnd->ShowWindow(SW_SHOW)  之前获取窗体信息

添加下面代码

 

 

 

 

 ///读取注册表

    HKEY key;
 DWORD type,n;
 WINDOWPLACEMENT info;
    if(ERROR_SUCCESS==RegOpenKeyEx(HKEY_CURRENT_USER,     //打开先前创建注册表  如果没有键值那么我们调用原来的设置

           "Software\\WolfeLee\\SaveWinState\\Settings",
     0,
     KEY_ALL_ACCESS,
     &key))
 {
         RegQueryValueEx(key,   //注册表的句柄
    "WindowState",   //我们保存的键值的名字
    0,
    &type,  //获取类型
    (LPBYTE)&info,  //获取 状态信息
    &n);

         this->m_pMainWnd->SetWindowPlacement(&info);  //设置 窗体位置信息
 }
 else
 m_pMainWnd->ShowWindow(SW_SHOW);
 m_pMainWnd->UpdateWindow();

 

以上完成了对 窗体状态的保存

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

时间: 2024-09-29 17:42:49

MFC SDI 中 通过注册表保存当前窗体的 显示状态位置的相关文章

windows注册表保存在哪个文件夹?

  一.注册表保存在哪个文件夹? 1.XP系统的注册表在C:WINDOWSsystem32config目录下.其中还包括DEFAULT.SOFTWARE.SYSTEM.AppEvent.Evt.SecEvent.Evt.SysEvent.Evt等多个隐藏文件及其相应的.LOG(日志)文件和.SAV文件. 2.win7的话注册表的位置是在C:Windows目录下. 3.Win9X系统里面以下路径C:WindowsSYSTEM.DAT和C:WindowsUSER.DAT 这2个就是注册表文件.另外,

VB.NET中访问注册表

访问|注册表 vb.net中访问注册表变得非常的简单.我们可以用  microsoft.Win32 名称空间的 下的 registry 类 和 registryKey 类. 另外 My.Computer.Registry 也可以返回一个 Microsoft.Win32.Registry 类的实例.下面就举几个小例子来说明vb.net访问注册表的方法. 1,返回或创建一个注册表键    Dim Key1 As Microsoft.Win32.RegistryKey        Key1 = My

VC中对注册表进行操作

近来由于需要在自己写的程序中对注册表进行操作.总结些经验,并做个一个DEMO供日后使用,现在把它拿出来和大家分享- 为了使用方便,把一些操作写成了函数,以便方便调用,具体代码如下所示: 一.定义 HKEY hKey; char content[256]; //所查询注册表键值的内容 DWORD dwType=REG_SZ; //定义读取数据类型 DWORD dwLength=256; struct HKEY__*RootKey; //注册表主键名称 TCHAR *SubKey; //欲打开注册表

电脑中通过注册表将3DSMAX界面语言改成中文的方法

  电脑中通过注册表将3DSMAX界面语言改成中文的方法          1.按win+R打开运行,输入regedit打开注册表编辑器; 2.如果弹出用户帐户控制窗口则点击是; 3.依次展开HKEY_LOCAL_MACHINESOFTWAREAutodesk3dsMax16.0; 4.可以看到LanguageInstalled中有"CHS"和"ENU"项,将两个项的名称调换过来; 5.接着打开3DSMAX软件,就可以用中文显示. 若发现电脑中安装的3DSMAX软件

C#中对注册表的操作

注册表 Windows 操作系统的注册表包含了很多有关计算机运行的配置方式,打开注册表我们可以看到注册表是按类似于目录的树结构组织的,其中第二级目录包含了五个预定义主键分别是:HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG. 下面我们来分别解释这5个类的作用 HKEY_CLASSES_ROOT该主键包含了文件的扩展名和应用程序的关联信息以及Window Shell和OLE用

Ghost Win7系统中通过注册表添加网络身份验证的方法

  1.点击"开始--运行",在运行对话框中输入"regedit"命令按回车,打开注册表编辑器; 2.在打开的注册表编辑器中依次展开定位到:"HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa"项,然后在窗口右侧中双击打开"Security Packages"; 3.弹出来的"编辑多字符串"对话框中,在列表中添加"tspkg"的内容;

Windows XP中在注册表下查看隐藏用户

在XP中,从控制面板的用户帐户,和计算机管理中的本里用户和组的用户,以及从注册表中的 KEY_LOCAL_MACHINE\SAM\SAM\Domains\account\Users\Names下看到的用户的数量是有区别的.在控制面 版中看到的是最少的,而在计算机管理中的本里用户和组的用户能看到一些隐藏的用户,但是对于部分通 过后门或者木马添加的帐户,在一般情况是是只能通过注册表才能查看到的. 打开注册表:开始->运行->regedit.msc 在注册表的默认情况下,我们是不能看到隐藏用户.以下

win7中的注册表怎么恢复

  win 7注册表对许多菜鸟用户或者普通用户来说都不敢轻易去动,其实注册表没那么危险的,只要掌握方法就能做到. 1.用win7 系统U盘来修复,结果仍然不行 2.使用注册表修复工具,结果提示找不到相应的dll文件 3.使用系统还原,可是没建立系统还原点 最后,使用系统本身备份的注册表文件替换掉现有的,这样才解决了. 具体的做法是,用win7系统U盘启动,然后进入到修复界面,打开cmd窗口,在命令行中进入到以下目录: C:windowssystem32configRegBack目录,然后使用co

如何禁止掉win7电脑中的注册表功能?

  其实使用win7 旗舰版的朋友都知道,咱们解决很多系统中的故障,或者是调出一些功能的时候,都需要进入到注册表编辑器窗口进行操作,但是同时,咱们也不得不意识到,随意的操作注册表中的键值文件,也是存在一定的风险性的,毕竟,注册表是电脑的一个数据库,电脑中所有的数据都是由它在管理,一旦什么地方的操作出现错误,咱们就需要对此付出沉痛的代价.所以下面,小编就来告诉大家,在win7 旗舰版中,咱们如何禁止注册表功能. 1.首先,咱们同时按下键盘上的win+R快捷键打开电脑的运行窗口,然后在窗口中输入代码