在EVC里读写配置(ini)文件
DWORD GetPrivateProfileString(LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName )
{
CFile iniFile; //文件读写类
PBYTE pFileBuf; //文件缓冲区
CString szBuf;
DWORD dwLength; //文件长度
long AppNamePos=-1; //AppName出现的位置;
long KeyPos=-1; //KeyName出现的位置;
long i,j,k,l;
const short ASC_TAB =9; //Tab 键、空格键的ASC码;
const short ASC_SPACE =32;
bool LeftOK,RightOK; //标志,用来判断是否 左邻回车换行、右邻 “=”
long EqualCharPos; //“=” 的位置;
//用来接收结果的是个空指针,那么无法接收结果,返回;
if( lpReturnedString == NULL)return 0;
//如果有默认字符串,那么拷贝默认字符串
if( lpDefault ) {_tcscpy( lpReturnedString,lpDefault ); }
//没有默认的,直接拷贝个结束符
else {_tcscpy( lpReturnedString,TEXT( "\0" )); }
//没有指定文件名
if (lpFileName == NULL )
{return _tcslen( lpReturnedString );}
//打开文件,如果失败则返回;
if(!iniFile.Open(lpFileName, CFile::modeRead))
{return _tcslen( lpReturnedString );}
dwLength = iniFile.GetLength();//获得文件字节数
//如果文件0字节则返回
if (dwLength == 0) { return _tcslen( lpReturnedString );}
pFileBuf = new BYTE[dwLength + 2]; //分配缓冲区
if (pFileBuf == NULL) { return _tcslen( lpReturnedString );}//失败则返回
memset(pFileBuf, 0x0, dwLength + 2);//缓冲区充0;
iniFile.Read((void *)pFileBuf, dwLength); //把文件数据读取到缓冲区;
iniFile.Close();//关闭文件
if (pFileBuf[0] == 0xFF && pFileBuf[1] == 0xFE) {szBuf = (LPCWSTR)(pFileBuf + 2);}
else
{
unsigned short * pszWideChar = new unsigned short[dwLength + 1];
MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pFileBuf, dwLength,pszWideChar, dwLength);
szBuf = pszWideChar;
delete[] pszWideChar;
}
delete[] pFileBuf;//删除文件缓冲区;
CString sAppName;
sAppName.Format (_T("%s"),lpAppName);