保存和读取窗口的设置
2007-05-31 16:11
405 查看
首先定义保存窗口属性的注册表中的几个键值:
#define COMPANY_KEY "SunwardCompany"
#define SETTINGS_KEY "Settings"
#define WINDOWPLACEMENT_KEY "Window Placement"
然后是保存窗口的设置。重载窗口的OnClose函数。
void CHelloWindow::OnClose(void)
...{
SaveBarState("Control Bar States");
WINDOWPLACEMENT wp;
GetWindowPlacement(&wp);
AfxGetApp()->WriteProfileBinary(SETTINGS_KEY,WINDOWPLACEMENT_KEY,(BYTE*)&wp,sizeof(WINDOWPLACEMENT));
CFrameWnd::OnClose();
}
最后就是读取上一次关闭时窗口的设置。
int CHelloWindow::OnCreate(LPCREATESTRUCT lpCreateStruct)
...{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
LoadBarState("Control Bar States");
return 0;
}
BOOL CHellowApp::InitInstance()
...{
//设置注册表的关联项
SetRegistryKey(COMPANY_KEY) ;
m_pMainWnd = new CHelloWindow();
m_pMainWnd->ShowWindow(m_nCmdShow);
BYTE *p;
UINT size;
WINDOWPLACEMENT *pWP;
if (GetProfileBinary(SETTINGS_KEY, WINDOWPLACEMENT_KEY, (LPBYTE *)&pWP, &size))
...{
m_pMainWnd->SetWindowPlacement(pWP);
delete []pWP;
}
else
...{
m_pMainWnd->ShowWindow(m_nCmdShow);
}
m_pMainWnd->UpdateWindow();
return TRUE;
}
注册表的位置在:HKEY_CURRENT_USER/Software/<company name>/<application name>/<section name>/<value name>.
注意:因为CFrameWnd的OnCreate和OnClose函数不是虚函数,需要捕获窗口的消息循环。否则是不会运行到你自己写的这两个函数里的。
BEGIN_MESSAGE_MAP(CHelloWindow, CFrameWnd)
ON_WM_CLOSE()
ON_WM_CREATE()
END_MESSAGE_MAP()
#define COMPANY_KEY "SunwardCompany"
#define SETTINGS_KEY "Settings"
#define WINDOWPLACEMENT_KEY "Window Placement"
然后是保存窗口的设置。重载窗口的OnClose函数。
void CHelloWindow::OnClose(void)
...{
SaveBarState("Control Bar States");
WINDOWPLACEMENT wp;
GetWindowPlacement(&wp);
AfxGetApp()->WriteProfileBinary(SETTINGS_KEY,WINDOWPLACEMENT_KEY,(BYTE*)&wp,sizeof(WINDOWPLACEMENT));
CFrameWnd::OnClose();
}
最后就是读取上一次关闭时窗口的设置。
int CHelloWindow::OnCreate(LPCREATESTRUCT lpCreateStruct)
...{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
LoadBarState("Control Bar States");
return 0;
}
BOOL CHellowApp::InitInstance()
...{
//设置注册表的关联项
SetRegistryKey(COMPANY_KEY) ;
m_pMainWnd = new CHelloWindow();
m_pMainWnd->ShowWindow(m_nCmdShow);
BYTE *p;
UINT size;
WINDOWPLACEMENT *pWP;
if (GetProfileBinary(SETTINGS_KEY, WINDOWPLACEMENT_KEY, (LPBYTE *)&pWP, &size))
...{
m_pMainWnd->SetWindowPlacement(pWP);
delete []pWP;
}
else
...{
m_pMainWnd->ShowWindow(m_nCmdShow);
}
m_pMainWnd->UpdateWindow();
return TRUE;
}
注册表的位置在:HKEY_CURRENT_USER/Software/<company name>/<application name>/<section name>/<value name>.
注意:因为CFrameWnd的OnCreate和OnClose函数不是虚函数,需要捕获窗口的消息循环。否则是不会运行到你自己写的这两个函数里的。
BEGIN_MESSAGE_MAP(CHelloWindow, CFrameWnd)
ON_WM_CLOSE()
ON_WM_CREATE()
END_MESSAGE_MAP()
相关文章推荐
- word 文档的保存数据及读取,类似图片,数据库设置图片格式(image)
- 读取和保存应用程序设置
- IOS学习之——用NSUserDefaults保存和读取程序设置
- PB datawindow 数据窗口字段保存显示超过255个字符,要如何设置?
- Windows8 Metro开发 (04) : 保存/读取本地应用程序设置
- Matlab Figure 图形保存以及 Simulink 中 Scope 窗口坐标标注(label)的设置
- 用NSUserDefaults保存和读取程序设置
- qt4使用QSettings来保存设置、读取设置
- js9:设置cookie,读取cookie,删除cookie,保存cookie时间,String,Date对象
- win8应用商店程序开发-保存/读取本地应用程序设置
- Android 一个简单的登陆窗口的实现(文件的保存与读取)
- 保存、方法-Android文件存储--采用SharedPreferences保存用户偏好设置参数和读取设置参数-by小雨
- Android如何保存和读取设置
- Matlab Figure 图形保存以及 Simulink 中 Scope 窗口坐标标注(label)的设置
- 程序启动读取和关闭时保存应用程序设置(QSettings)
- 读取和保存应用程序设置
- 新时尚Windows8开发(4):保存/读取本地应用程序设置
- java的swing设置弹出保存文件窗口
- win8开发(4)——保存/读取本地应用程序设置
- html jsp中设置select disabled 当修改保存时,后台未读取到数据