亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? stm32+i

?? STM32燒寫
??
字號:
#ifndef __INI_H__
#define __INI_H__

#include <windows.h>
#include <tchar.h>

// If MFC is linked, we will use CStringArray for great convenience
#ifdef __AFXWIN_H__
	#include <afxtempl.h>
#endif

// Number bases
#define BASE_BINARY			2
#define BASE_OCTAL			8
#define BASE_DECIMAL		10
#define BASE_HEXADECIMAL	16

//---------------------------------------------------------------
//	    Callback Function Type Definition
//---------------------------------------------------------------
// The callback function used for parsing a "double-null terminated string".
// When called, the 1st parameter passed in will store the newly extracted sub
// string, the 2nd parameter is a 32-bit user defined data, this parameter can
// be NULL. The parsing will terminate if this function returns zero. To use
// the callback, function pointer needs to be passed to "CIni::ParseDNTString".
typedef BOOL (CALLBACK *SUBSTRPROC)(LPCTSTR, LPVOID);

class CIni
{
public:		

	//-----------------------------------------------------------
	//    Constructors & Destructor
	//-----------------------------------------------------------
	CIni(); // Default constructor
	CIni(LPCTSTR lpPathName); // Construct with a given file name
	virtual ~CIni();

	//-----------------------------------------------------------
	//    Ini File Path Name Access
	//-----------------------------------------------------------
	void SetPathName(LPCTSTR lpPathName); // Specify a new file name
	DWORD GetPathName(LPTSTR lpBuffer, DWORD dwBufSize) const; // Retrieve current file name
#ifdef __AFXWIN_H__
	CString GetPathName() const;
#endif
	
	//------------------------------------------------------------
	//    String Access
	//------------------------------------------------------------	
	DWORD GetString(LPCTSTR lpSection, LPCTSTR lpKey, LPTSTR lpBuffer, DWORD dwBufSize, LPCTSTR lpDefault = NULL) const;
#ifdef __AFXWIN_H__
	CString GetString(LPCTSTR lpSection, LPCTSTR lpKey, LPCTSTR lpDefault = NULL) const;
#endif
	BOOL WriteString(LPCTSTR lpSection, LPCTSTR lpKey, LPCTSTR lpValue) const;

	// Read a string from the ini file, append it with another string then write it
	// back to the ini file.
	BOOL AppendString(LPCTSTR Section, LPCTSTR lpKey, LPCTSTR lpString) const;
	
	//------------------------------------------------------------
	//    Ini File String Array Access
	//------------------------------------------------------------	
	// Parse the string retrieved from the ini file and split it into a set of sub strings.
	DWORD GetArray(LPCTSTR lpSection, LPCTSTR lpKey, LPTSTR lpBuffer, DWORD dwBufSize, LPCTSTR lpDelimiter = NULL, BOOL bTrimString = TRUE) const;
#ifdef __AFXWIN_H__
	void GetArray(LPCTSTR lpSection, LPCTSTR lpKey, CStringArray* pArray, LPCTSTR lpDelimiter = NULL, BOOL bTrimString = TRUE) const;
	BOOL WriteArray(LPCTSTR lpSection, LPCTSTR lpKey, const CStringArray* pArray, int nWriteCount = -1, LPCTSTR lpDelimiter = NULL) const;
#endif	
	
	//------------------------------------------------------------
	//    Primitive Data Type Access
	//------------------------------------------------------------
	int GetInt(LPCTSTR lpSection, LPCTSTR lpKey, int nDefault, int nBase = BASE_DECIMAL) const;
	BOOL WriteInt(LPCTSTR lpSection, LPCTSTR lpKey, int nValue, int nBase = BASE_DECIMAL) const;
	BOOL IncreaseInt(LPCTSTR lpSection, LPCTSTR lpKey, int nIncrease = 1, int nBase = BASE_DECIMAL) const;
	
	UINT GetUInt(LPCTSTR lpSection, LPCTSTR lpKey, UINT nDefault, int nBase = BASE_DECIMAL) const;
	BOOL WriteUInt(LPCTSTR lpSection, LPCTSTR lpKey, UINT nValue, int nBase = BASE_DECIMAL) const;
	BOOL IncreaseUInt(LPCTSTR lpSection, LPCTSTR lpKey, UINT nIncrease = 1, int nBase = BASE_DECIMAL) const;
	
	BOOL GetBool(LPCTSTR lpSection, LPCTSTR lpKey, BOOL bDefault) const;
	BOOL WriteBool(LPCTSTR lpSection, LPCTSTR lpKey, BOOL bValue) const;
	BOOL InvertBool(LPCTSTR lpSection, LPCTSTR lpKey) const;
	
	double GetDouble(LPCTSTR lpSection, LPCTSTR lpKey, double fDefault) const;
	BOOL WriteDouble(LPCTSTR lpSection, LPCTSTR lpKey, double fValue, int nPrecision = -1) const;
	BOOL IncreaseDouble(LPCTSTR lpSection, LPCTSTR lpKey, double fIncrease, int nPrecision = -1) const;

	TCHAR GetChar(LPCTSTR lpSection, LPCTSTR lpKey, TCHAR cDefault) const;
	BOOL WriteChar(LPCTSTR lpSection, LPCTSTR lpKey, TCHAR c) const;

	//------------------------------------------------------------
	//    User-Defined Data Type & Data Block Access
	//------------------------------------------------------------
	POINT GetPoint(LPCTSTR lpSection, LPCTSTR lpKey, POINT ptDefault) const;
	BOOL WritePoint(LPCTSTR lpSection, LPCTSTR lpKey, POINT pt) const;
	
	RECT GetRect(LPCTSTR lpSection, LPCTSTR lpKey, RECT rcDefault) const;
	BOOL WriteRect(LPCTSTR lpSection, LPCTSTR lpKey, RECT rc) const;

	DWORD GetDataBlock(LPCTSTR lpSection, LPCTSTR lpKey, LPVOID lpBuffer, DWORD dwBufSize, DWORD dwOffset = 0) const;
	BOOL WriteDataBlock(LPCTSTR lpSection, LPCTSTR lpKey, LPCVOID lpData, DWORD dwDataSize) const;
	BOOL AppendDataBlock(LPCTSTR lpSection, LPCTSTR lpKey, LPCVOID lpData, DWORD dwDataSize) const;
	
	//------------------------------------------------------------
	//    Section Operations
	//------------------------------------------------------------
	BOOL IsSectionExist(LPCTSTR lpSection) const;
	DWORD GetSectionNames(LPTSTR lpBuffer, DWORD dwBufSize) const;
#ifdef __AFXWIN_H__
	void GetSectionNames(CStringArray* pArray) const;
#endif
	BOOL CopySection(LPCTSTR lpSrcSection, LPCTSTR lpDestSection, BOOL bFailIfExist) const;
	BOOL MoveSection(LPCTSTR lpSrcSection, LPCTSTR lpDestSection, BOOL bFailIfExist = TRUE) const;
	BOOL DeleteSection(LPCTSTR lpSection) const;
	
	//------------------------------------------------------------
	//    Key Operations
	//------------------------------------------------------------
	BOOL IsKeyExist(LPCTSTR lpSection, LPCTSTR lpKey) const;	
	DWORD GetKeyLines(LPCTSTR lpSection, LPTSTR lpBuffer, DWORD dwBufSize) const;
#ifdef __AFXWIN_H__
	void GetKeyLines(LPCTSTR lpSection, CStringArray* pArray) const;
#endif
	DWORD GetKeyNames(LPCTSTR lpSection, LPTSTR lpBuffer, DWORD dwBufSize) const;
#ifdef __AFXWIN_H__	
	void GetKeyNames(LPCTSTR lpSection, CStringArray* pArray) const;
#endif
	BOOL CopyKey(LPCTSTR lpSrcSection, LPCTSTR lpSrcKey, LPCTSTR lpDestSection, LPCTSTR lpDestKey, BOOL bFailIfExist) const;
	BOOL MoveKey(LPCTSTR lpSrcSection, LPCTSTR lpSrcKey, LPCTSTR lpDestSection, LPCTSTR lpDestKey, BOOL bFailIfExist = TRUE) const;
	BOOL DeleteKey(LPCTSTR lpSection, LPCTSTR lpKey) const;

	//------------------------------------------------------------
	// Parse a "Double-Null Terminated String"
	//------------------------------------------------------------
	static BOOL ParseDNTString(LPCTSTR lpString, SUBSTRPROC lpFnStrProc, LPVOID lpParam = NULL);

	//------------------------------------------------------------
	// Check for Whether a String Representing TRUE or FALSE
	//------------------------------------------------------------
	static BOOL StringToBool(LPCTSTR lpString, BOOL bDefault = FALSE);
		
protected:	

	//------------------------------------------------------------
	//    Helper Functions
	//------------------------------------------------------------
	static LPTSTR __StrDupEx(LPCTSTR lpStart, LPCTSTR lpEnd);
	static BOOL __TrimString(LPTSTR lpBuffer);
	LPTSTR __GetStringDynamic(LPCTSTR lpSection, LPCTSTR lpKey, LPCTSTR lpDefault = NULL) const;
	static DWORD __StringSplit(LPCTSTR lpString, LPTSTR lpBuffer, DWORD dwBufSize, LPCTSTR lpDelimiter = NULL, BOOL bTrimString = TRUE);
	static void __ToBinaryString(UINT nNumber, LPTSTR lpBuffer, DWORD dwBufSize);
	static int __ValidateBase(int nBase);
	static void __IntToString(int nNumber, LPTSTR lpBuffer, int nBase);
	static void __UIntToString(UINT nNumber, LPTSTR lpBuffer, int nBase);
	static BOOL CALLBACK __SubStrCompare(LPCTSTR lpString1, LPVOID lpParam);
	static BOOL CALLBACK __KeyPairProc(LPCTSTR lpString, LPVOID lpParam);	
#ifdef __AFXWIN_H__
	static BOOL CALLBACK __SubStrAdd(LPCTSTR lpString, LPVOID lpParam);
#endif

	//------------------------------------------------------------
	//    Member Data
	//------------------------------------------------------------
	LPTSTR m_pszPathName; // Stores path of the associated ini file
};

#endif // #ifndef __INI_H__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人av电影| 美女视频第一区二区三区免费观看网站| 国产一区二区三区美女| 欧美成人一区二区| 国产精品乡下勾搭老头1| 久久久久久夜精品精品免费| 国产精品一卡二| 中文字幕一区二区在线观看| 日本精品视频一区二区| 五月激情综合色| 亚洲精品一区二区三区香蕉| 国产a精品视频| 亚洲男人都懂的| 欧美日韩色一区| 经典三级在线一区| 亚洲欧洲一区二区三区| 欧美又粗又大又爽| 麻豆精品视频在线| 国产精品国产三级国产aⅴ原创 | 亚洲一区二区精品视频| 91精品免费在线| 国产成人免费视频精品含羞草妖精| 国产精品每日更新在线播放网址 | 狠狠色丁香久久婷婷综合丁香| 久久综合丝袜日本网| 99r精品视频| 久久国产欧美日韩精品| 国产日韩精品一区二区三区 | 亚洲bt欧美bt精品777| 久久综合色8888| 日本乱码高清不卡字幕| 国产一区二区视频在线播放| 亚洲精品视频在线| 久久蜜桃av一区精品变态类天堂 | 国产福利一区二区三区视频在线| 日韩美女啊v在线免费观看| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲自拍与偷拍| 国产午夜亚洲精品不卡| 91豆麻精品91久久久久久| 精品制服美女丁香| 亚洲一二三四区不卡| 日韩精品一区二区三区视频| 97久久精品人人做人人爽 | 日韩精品视频网| 亚洲日本丝袜连裤袜办公室| 久久综合久久鬼色| 正在播放亚洲一区| 99精品一区二区| 国产成人鲁色资源国产91色综| 亚洲一区二区av在线| 国产欧美日韩三级| wwwwww.欧美系列| 欧美精品 国产精品| 91国偷自产一区二区使用方法| 国模无码大尺度一区二区三区| 亚洲国产成人av网| 亚洲欧美在线视频| 久久精品网站免费观看| 欧美一级高清片| 91精品国产综合久久久蜜臀粉嫩 | 亚洲免费成人av| 中文字幕巨乱亚洲| 久久久美女毛片| 精品国内二区三区| 91精品国产福利| 欧美精品一级二级三级| 日本精品一级二级| 色婷婷综合视频在线观看| 成人免费看的视频| 国产一区二区精品久久| 精品一区二区成人精品| 欧美aaaaa成人免费观看视频| 亚洲成人av一区| 五月天久久比比资源色| 午夜视频在线观看一区| 亚洲国产精品精华液网站| 亚洲一区二区精品视频| 亚洲成av人片观看| 视频在线观看国产精品| 日日骚欧美日韩| 日本午夜精品视频在线观看 | 午夜一区二区三区视频| 午夜精品在线视频一区| 日本中文字幕一区二区视频| 日韩电影免费一区| 蜜臀久久久久久久| 精品一区在线看| 国产一区啦啦啦在线观看| 丁香婷婷深情五月亚洲| 91浏览器打开| 欧美日韩精品专区| 91精品国模一区二区三区| 精品国产乱码久久久久久久久| 精品久久久久av影院| 国产亚洲人成网站| 亚洲欧洲成人精品av97| 亚洲小说春色综合另类电影| 亚洲第一狼人社区| 蜜桃一区二区三区四区| 国产成a人亚洲精| 色综合色狠狠综合色| 欧美嫩在线观看| 亚洲精品一区二区三区四区高清| 国产亚洲一区二区三区四区 | 国产婷婷色一区二区三区四区 | 亚洲另类一区二区| 午夜电影一区二区三区| 国产精品亚洲午夜一区二区三区| aaa国产一区| 欧美人动与zoxxxx乱| 久久久久国产成人精品亚洲午夜| 中文字幕 久热精品 视频在线 | 婷婷国产在线综合| 国内精品久久久久影院色| www.久久久久久久久| 欧美日免费三级在线| 久久先锋影音av鲁色资源网| 一区二区三区日韩在线观看| 男男成人高潮片免费网站| 成人免费黄色大片| 337p亚洲精品色噜噜狠狠| 国产精品麻豆一区二区| 麻豆成人av在线| 91浏览器入口在线观看| 久久婷婷成人综合色| 一区二区成人在线视频| 国产在线一区二区| 欧美性受xxxx黑人xyx性爽| 久久久久久久综合| 亚洲不卡一区二区三区| 不卡一区二区中文字幕| 日韩亚洲欧美综合| 亚洲线精品一区二区三区八戒| 国产麻豆日韩欧美久久| 欧美日韩aaaaaa| 亚洲人快播电影网| 国产精品一二三区| 91麻豆精品国产自产在线观看一区 | 亚洲免费观看高清完整| 国产精品1区2区| 这里只有精品99re| 亚洲国产精品久久一线不卡| 成人一区二区三区中文字幕| 日韩网站在线看片你懂的| 亚洲一区二区三区中文字幕| 成人听书哪个软件好| 欧美va亚洲va| 日韩avvvv在线播放| 欧美优质美女网站| 亚洲黄色录像片| 白白色 亚洲乱淫| 国产亚洲精品aa午夜观看| 麻豆久久一区二区| 7777精品久久久大香线蕉| 亚洲一区日韩精品中文字幕| 色先锋资源久久综合| 香蕉成人啪国产精品视频综合网| 99免费精品视频| 中文字幕电影一区| 福利电影一区二区三区| 久久久久久久久免费| 麻豆精品蜜桃视频网站| 欧美成人免费网站| 久久精品国产亚洲高清剧情介绍| 欧美日韩的一区二区| 丝袜亚洲另类欧美综合| 欧美日韩免费电影| 日韩国产精品久久久| 在线综合+亚洲+欧美中文字幕| 日韩电影在线观看电影| 欧美一区二区精美| 九九热在线视频观看这里只有精品| 欧美一级二级三级蜜桃| 精品一区二区三区免费| 久久久午夜电影| 成人久久18免费网站麻豆| 中文字幕乱码久久午夜不卡| proumb性欧美在线观看| 欧美国产精品一区二区| 色综合中文字幕国产| 一区二区在线电影| 欧美精三区欧美精三区| 日日欢夜夜爽一区| 26uuu色噜噜精品一区二区| 国产精品一色哟哟哟| 国产精品久久福利| 色综合久久88色综合天天6| 午夜精品久久久久久久久久久| 欧美久久久久久久久| 黑人巨大精品欧美黑白配亚洲| 日本一区二区三区国色天香| 91在线porny国产在线看| 亚洲自拍都市欧美小说| 欧美成人r级一区二区三区| 国产91精品免费| 亚洲国产毛片aaaaa无费看| 精品少妇一区二区三区日产乱码| 国产成人午夜视频| 夜夜夜精品看看|