我定义了一个属性单,class CMyPropertySheet : public CPropertySheet,即写了一个继承于CPropertySheet的类,里面添加了几个对话框,都是继承于CPropertyPage类,每个对话框里都有一些控件用于设置一些信息,我的问题是,当我点击属性单的确定按钮时,怎么保存所有属性页的数据???? 谁知道的告诉我啊,急急急急急·····
调试欢乐多
{
CAcModuleResourceOverride resOverride;
CMyPropertySheet myps(_T("选项"), acedGetAcadFrame(),0);
myps.m_psh.dwFlags|=PSH_NOAPPLYNOW;
myps.m_psh.dwFlags&=~PSH_HASHELP; CDlgSetSys m_pgeSys;
CDlgMapSet m_Map;
CDlgSetMap m_pgeMap;
CDlgSetFTPrt m_pgeFt;
m_pgeMap.m_psp.dwFlags&=~PSP_HASHELP;
m_pgeSys.m_psp.dwFlags&=~PSP_HASHELP;
m_pgeFt.m_psp.dwFlags&=~PSP_HASHELP;
m_Map.m_psp.dwFlags&=~PSP_HASHELP;
myps.AddPage(&m_pgeSys);
myps.AddPage(&m_pgeMap);
myps.AddPage(&m_pgeFt);
myps.AddPage(&m_Map);
myps.AddIcon(::LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_GLOBAL)));
myps.AddIcon(::LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_ADDITION)));
if (myps.DoModal()!=IDOK) return ;
UpdateWindow(FALSE);
}当我点击属性单的确定按钮时,触发以下函数: void CMyPropertySheet::OnOK()
{
CDlgSetSys::GetInstance().OnButSave();
CDlgMapSet::GetInstance().OnOK();
CDlgSetMap::GetInstance().OnButSave();
CDlgSetFTPrt::GetInstance().OnButSave();
CMyPropertySheet::OnClose();
}我的想法是当某个页面的数据改变了,就调用那个页面的保存函数,保存数据,但不知怎么实现???
要保存窗体销毁时的参数并在下次init的时候重新对窗体进行赋值。
一般情况下保存配置文件,写注册表,或在程序中使用全局变量保存窗体上的参数都是可以的。如果要让程序退出后下次运行还能记忆你的设置,还是更推荐使用配置文件。