使用CWinApp读写与应用程序EXE相同路径下的Ini文件

我们都知道在VC里可以通过Windows API函数GetPrivateProfileString()、WritePrivateProfileString()来读写Ini文件,但其实MFC写好的CWinApp类里也具备读写Ini文件的能力,而且使用更为方便。对应的函数是CWinApp::GetProfileString()、CWinApp::WriteProfileString(),但是默认情况下,这两个函数是去操作注册表的,下面的方法就是使它们转而读写与exe文件相同路径下的Ini文件:

/**
 * 初始化CWinApp的Ini文件名,之后就可以直接用AfxGetApp()->GetProfileXXX()来读写Ini文件。
 
*/
BOOL CMyApp::InitIniFile()
{
    
char szProgName[MAX_PATH];
    
int iNiValue = 0;

    iNiValue 
= GetModuleFileName(0, szProgName, sizeof(szProgName));
    
if (iNiValue <= 0)
    {
        
return FALSE;
    }

    szProgName[strlen(szProgName) 
- 3= '\0';
    strcat(szProgName, 
"ini");
    
// 清除Ini变量
    free((void*)m_pszProfileName);
    m_pszProfileName 
= _tcsdup(_T(szProgName));
    
// 清除注册表键值变量所分配的内存空间
    free((void*)m_pszRegistryKey);
    m_pszRegistryKey 
= NULL;

    
return TRUE;
}
原文地址:https://www.cnblogs.com/ddgg/p/1814898.html