在上一篇中介绍了几个写入注册表数据和读取注册表数据的接口,并介绍了使用方法。
这一片教你如何使得你的应用程序在下次打开时保持上一次关闭前的状态。
在上一篇添加的代码的基础上,要添加WM_CLOSE消息的响应函数,因为我们只有在窗口关闭前要保存窗口的位置信息,所以保存窗口位置到注册表的代码要写在这个消息处理函数。
代码如下:
void CTestClassDlg::OnClose()
{
if (AfxGetApp()->GetProfileInt("Settings", "SavePosition", 1))
{
//保存窗口的位置
WINDOWPLACEMENT wp;
GetWindowPlacement(&wp);
AfxGetApp()->WriteProfileInt("Settings", "FrameStatus", wp.showCmd);
AfxGetApp()->WriteProfileInt("Settings", "FrameTop", wp.rcNormalPosition.top);
AfxGetApp()->WriteProfileInt("Settings", "FrameLeft", wp.rcNormalPosition.left);
AfxGetApp()->WriteProfileInt("Settings", "FrameBottom", wp.rcNormalPosition.bottom);
AfxGetApp()->WriteProfileInt("Settings", "FrameRight", wp.rcNormalPosition.right);
}
CDialog::OnClose();
}
在注册表中保存有应用程序关闭前的位置信息,在下一次打开的时候我们就可以取得这些数据来使得应用程序的窗口显示出关闭前的样子。
在MFC中窗口的初始化的代码一般都添加在OnInitDialog()函数中。
代码如下:
BOOL CTestClassDlg::OnInitDialog()
{
CDialog::OnInitDialog();
................................
................................
// TODO: Add extra ini