在MFC的CWinApp类的启动成员函数中,会一个SetRegistryKey函数,在注册表中为程序设置一个主键。配合WriteProfileInt等函数,对程序的配置文件进行读写。
SetRegistryKey(_T(""));//有这句,读写将会针对INI文件进行
//指定自己的INI文件名,否则编译器将以程序名称命名INI文件
free((LPTSTR)theApp.m_pszProfileName);
theApp.m_pszProfileName = (LPCTSTR)malloc(256);
_tcscpy ((LPTSTR)theApp.m_pszProfileName ,_T("ScaleWeight"));
写入配置文件信息,如下:
void SecondDig::OnCancel()
{
CRect rect;
GetWindowRect(&rect);
theApp.WriteProfileInt(_T("InitData"),_T("left"),rect.left);
theApp.WriteProfileInt(_T("InitData"),_T("top"),rect.top);
theApp.WriteProfileInt(_T("InitData"),_T("right"),rect.right);
theApp.WriteProfileInt(_T("InitData"),_T("bottom"),rect.bottom);
//AfxMessageBox(_T("cancel"));
//DestroyWindow();
CDialogEx::OnCancel();
}
读取配置文件信息,如下:
BOOL SecondDig::OnInitDialog()
{
CDialogEx::OnInitDialog();
CRect rect;
int left = theApp.GetProfileInt(_T("InitData"),_T("left"),0);
int top = theApp.GetProfileInt(_T("InitData"),_T("top"),0);
int right = theApp.GetProfileInt(_T("InitData"),_T("right"),0);
int bottom = theApp.GetProfileInt(_T("InitData"),_T("bottom"),0);
rect.left = left;
rect.top = top;
rect.right = right;
rect.bottom = bottom;
this->MoveWindow(&rect,true);
return TRUE;
// return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}