咱們在編寫程序的過程當中,要保存一些用戶的設置信息。怎麼才能方便的保存和讀取呢?ide
通常咱們保存信息由兩個地方:1。註冊表 函數
2。ni文件it
其實在vc中他們的實現都是同樣哦。io
在應用程序類下的 * App::InitInstance()函數里加入下面的程序語句; class
#ifdef 使用ini文件保存test
char czProgName[MAX_PATH];file
CString czN;二進制
int iNiValue=0; 程序
//GetModuleFileName()獲得程序的路徑及名稱di
iNiValue= GetModuleFileName(0,czProgName,MAX_PATH);
czProgName[strlen(czProgName)-3] = '\0';
strcat(czProgName,"ini"); //咱們的ini文件名是跟程序同名的,只是後綴不一樣
free((void*) m_pszProfileName);
m_pszProfileName =_tcsdup(_T(czProgName));
#else //使用註冊表文件來保存
free((void*)m_pszRegistryKey);
m_pszRegistryKey = 「My test App」;
#endif
加入上面的語句之後,咱們就能夠在須要的地方直接用:
固然在使用的時候要定義:
CWinApp* theApp = NULL;
theApp = AfxGetApp();
theApp ->WriteProfileString( , ,)函數寫入ini文件.
在須要讀寫的地方直接用 :
UINT GetProfileInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nDefault);
BOOL WriteProfileInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, int nValue);
固然在讀取整數的時候,咱們能夠分別用
CString GetProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry,
LPCTSTR lpszDefault = NULL);
BOOL WriteProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry,
LPCTSTR lpszValue);
讀取二進制數值時候用以下:
BOOL GetProfileBinary(LPCTSTR lpszSection, LPCTSTR lpszEntry,
LPBYTE* ppData, UINT* pBytes);
BOOL WriteProfileBinary(LPCTSTR lpszSection, LPCTSTR lpszEntry,
LPBYTE pData, UINT nBytes);
具體請參考MFC下面的APPUI3.cpp