MFC SDI 中 通过注册表保存当前窗体的 显示状态位置
2011-08-04 15:04
357 查看
在 框架类响应 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();
以上完成了对 窗体状态的保存
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();
以上完成了对 窗体状态的保存
相关文章推荐
- MFC SDI 中 通过注册表保存当前窗体的 显示状态位置
- MFC 通过opencv打开摄像头 拍照后显示保存
- listview 保存当前位置,跳转其他页面,返回时显示当前Item
- 读写注册表来保存窗体当前设置
- MFC:在状态栏上显示鼠标当前的位置
- MFC编个对话框,能够实时显示摄像头捕捉的镜头, 点击确定,保存当前图像。
- 通过百度地图API显示当前位置在地图上(图标显示)--第三方开源--百度地图(二)
- 通过百度地图API显示当前位置在地图上(图标显示)--第三方开源--百度地图(二)
- 多文档的MFC中,如何去掉菜单栏,父窗体,子窗体最大化显示,关闭子窗体是去掉保存提示
- Android 应用程序窗体显示状态操作(requestWindowFeature()的应用)
- Android 应用程序窗体显示状态操作(requestWindowFeature()的应用)
- Sharedpreferences轻量级数据库 基本操作 可实现保存登录状态 保存少量数据 比如密码 第一次登录动画,第二次不显示
- Android 应用程序窗体显示状态操作(requestWindowFeature()的应用)
- Android 应用程序窗体显示状态操作(requestWindowFeature()的应用)[转]
- 微信小程序之获取当前位置经纬度以及地图显示详解
- MFC 在状态栏显示当前鼠标坐标
- iOS 任何位置轻松控制自己当前想显示的控制器
- 内容的显示或隐藏、变换图片、检测当前内容的隐藏或显示状态
- .net2.0窗体关闭时自动保存窗体位置及大小
- C#退出当前窗体,显示另一个窗体