在一本书上看到“保存应用程序屏幕例子”,好多朋友感觉书上有错误,我更改了一下,请打指教!
#define COMPANY_KEY "jichengdianzi"
#define SETTINGS_KEY "Settings"
#define WINDOWPLACEMENT_KEY "Window Placement" 将三个宏定义放在主框架类的声明文件中
然后找到应用程序类的InitInstance()函数,用SetRegistryKey(COMPANY_KEY);覆盖原来的SetRegistryKey()函数。
//关闭窗口时保存控制条的状态和窗口的位置状态和相关信息。
void CMainFrame::OnClose()
{
// TODO: Add your message handler code here and/or call default
// save state of control bars
SaveBarState("ControlBar");
WINDOWPLACEMENT wp;
GetWindowPlacement(&wp);
if(!(AfxGetApp()->WriteProfileBinary(SETTINGS_KEY,WINDOWPLACEMENT_KEY,(LPBYTE)&wp,sizeof(WINDOWPLACEMENT))))
{
MessageBox("写入注册表失败");
}
读取设置:
首先恢复控制条的状态在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中添加
LoadBarState("ControlBar");
然后找到应用程序类的InitInstance()函数,并把其中的m_pMainWnd->ShowWindow(SW_SHOW); 用下面的代码替换
UINT size=sizeof(WINDOWPLACEMENT);
WINDOWPLACEMENT *pWP;
if(GetProfileBinary(SETTINGS_KEY,WINDOWPLACEMENT_KEY,(LPBYTE *)&pWP,&size))
{
m_pMainWnd->SetWindowPlacement(pWP);
delete pWP;
}
else
{
m_pMainWnd->ShowWindow(SW_SHOW);
}
8076

被折叠的 条评论
为什么被折叠?



