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();
?
以上完成了對 窗體狀態的保存
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/yuedongwei/archive/2011/08/04/4145646.html
總結
以上是生活随笔為你收集整理的MFC SDI 中 通过注册表保存当前窗体的 显示状态位置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决 error: Your local
- 下一篇: kong入门实战