在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  
}