不知道关于全局配置别人都是怎么处理的,最近做的东西都用到全局配置,而且要保存软件的设置,下次启动时要使用上次关闭时的配置。
我的做法是建一个类用来保存和读取配置,并且在这个类中创建一些变量,供所有的界面类,处理类使用。
例如这个类的名字
CGloableConfig
做个比方,比如我在好多对话框或处理类中都用到一个变量,
CString strLLow;
这个变量在软件启动的时候需要从配置文件中读出,并在关闭软件是保存,在某个对话框中这个此值的大小,在某个处理类中需要知道此值的大小。
全局配置配置的类,在CMainFrame中定义一个对象,当然这是对于多文档程序来讲,对于单文档的或对话框的话就在主view中定义。
CGloableConfig gloablecfg;
在这个CGloableConfig中有个初始化函数,一个退出时的保存函数。
void CGloableConfig::Init(CString strFile)
void CGloableConfig::SaveConfig(CString strFile)
这里使用INI文件作为配置文件,在软件启动的时候调用Init函数读取值,
GetPrivateProfileString("Panding","LLow","Odd",charTemp,20,strFile);
strLLow.Format("%s",charTemp);
在退出的时候调用SaveConfig保存值
WritePrivateProfileString("Panding","LLow",strLLow,strFile);
在设置此值的对话框中,可以修改这个值,首先获取主窗口的指针
CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd();
pMainFrame->gloablecfg.strLLow = “12345”;
如果是单文档的,获取主View的指针
CBrightnessMeasureView * pMainView = (CBrightnessMeasureView*)((CFrameWnd*)AfxGetApp()->m_pMainWnd)->GetActiveView();
pMainView->gloablecfg.strLLow = “12345”;
在使用的此值的时候,一样要获取主窗口或主View的指针,然后获取gloablecfg,才能正常使用。