MFC經常使用函數

1 GetModuleFileName()

函數原型

1 windows

2 緩存

3 函數

4 this

5 spa

DWORDGetModuleFileName( debug

HMODULEhModule, 指針

LPTSTRlpFilename, 調試

DWORDnSize code

); orm

函數參數

HMODULE hModule 裝載一個程序實例的句柄。若是該參數爲NULL,該函數返回該當前 應用程序全路徑。

LPTSTR  lpFileName 是你存放返回的名字的內存塊的指針,是一個輸出參數

DWORD nSize,裝載到緩衝區lpFileName的最大值

函數返回值

若是返回爲成功,將在lpFileName的 緩衝區當中返回相應模塊的路徑,若是所設的nSize太小,那麼返回僅按所設置緩衝區大小返回相應字符串內容。

若是函數失敗,返回值將爲0,利用GetLastError可得到異常代碼。

頭文件

windows.h

2 GetPrivateProfileString()

函數原型

DWORD GetPrivateProfileString(lpszSection, lpszKey, lpszDefault,lpReturnedString, cchReturnBuffer, lpszFile)

Retrieves a string from the specified section in an initialization file.

從一個初始化文件中的指定的小節中獲取一個字符串

函數參數

參數 類型及說明

DWORD WINAPI GetPrivateProfileString(
  _In_   LPCTSTR lpAppName,
  _In_   LPCTSTR lpKeyName,
  _In_   LPCTSTR lpDefault,
  _Out_  LPTSTR lpReturnedString,
  _In_   DWORD nSize,
  _In_   LPCTSTR lpFileName
);
lpAppName  [in]    The name of the section containing the key name. If this parameter is  NULL , the  GetPrivateProfileString  function copies all section names in the file to the supplied buffer.
lpKeyName  [in]     The name of the key whose associated string is to be retrieved. If this parameter is NULL, all key names in the section specified by the lpAppName parameter are copied to the buffer specified by the lpReturnedString parameter.
lpDefault [in]          A default string. If the lpKeyName key cannot be found in the initialization file, GetPrivateProfileString copies the default string to the lpReturnedString buffer. If this parameter is NULL, the default is an empty string, "".

Avoid specifying a default string with trailing blank characters. The function inserts a null character in the lpReturnedString buffer to strip any trailing blanks.

lpReturnedString [out]     A pointer to the buffer that receives the retrieved string.

nSize [in]   The size of the buffer pointed to by the lpReturnedString parameter, in characters.

lpFileName [in]    The name of the initialization file. If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory.

函數返回值

 The return value is the number of characters copied to the buffer, not including the terminating   null  character.

If neither lpAppName nor lpKeyName is NULL and the supplied destination buffer is too small to hold the requested string, the string is truncated and followed by anull character, and the return value is equal to nSize minus one.

If either lpAppName or lpKeyName is NULL and the supplied destination buffer is too small to hold all the strings, the last string is truncated and followed by two nullcharacters. In this case, the return value is equal to nSize minus two.

In the event the initialization file specified by lpFileName is not found, or contains invalid values, this function will set errorno with a value of '0x2' (File Not Found). To retrieve extended error information, call GetLastError.

實例

函數返回值爲string的長度(long型),而從ini 文件得到的 字符串則保留在目的緩衝器中DWORD GetPrivateProfileString(
LPCTSTR lpAppName, //配置 文件的section名
LPCTSTR lpKeyName, //配置 文件的key名
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);
其中各參數的意義:
前二個參數與   WritePrivateProfileString中的意義同樣.
lpDefault : 若是INI 文件中沒有前兩個參數指定的 字段名或鍵名,則將此值賦給 變量.
lpReturnedString : 接收INI 文件中的值的CString對象,即目的緩存器.
nSize : 目的緩存器的大小.
lpFileName : 是完整的INI 文件名.
下面是一個常見的出錯緣由:
GetPrivateProfileString怎麼老是讀不出來
--------------------------------------------------------------------------------
*.INI內容
[NETWORK]
ServerIP=100.100.100.53
程序:
main()
{
char ip[16];
DWORD num=0;
num=GetPrivateProfileString("NETWORK","ServerIP","", ip,sizeof(ip), "Server.ini");
cout<<num<<endl<<ip<<endl;
}
--------
num=GetPrivateProfileString("NETWORK","ServerIP","",  ip,sizeof(ip),  "Server.ini");
Server.ini這個 文件放在哪裏的?要放在與應用程序相同的目錄下應該用".\\server.ini"
你看看是否是沒有找到這個INI 文件
-----------
VC中調試時,server.ini放在工程目錄中;程序單獨運行時,則須要放在跟exe同一個目錄中。
由於從VC裏啓動程序,VC將程序的工做目錄初始化爲工程目錄,而不是debug或release目錄自己。
相關文章
相關標籤/搜索