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

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

?? cfile.h

?? 將VC7.0和VC.NET的工程轉換到VC6.0的工程,內有詳細的介紹做法(自己試驗后寫的)
?? H
字號:

#pragma once

#include <fcntl.h> // filecontrol : _O_RDONLY symbol and other stuff
#include <tchar.h> // _fgetts ==> fgets
#include <stdio.h>
#include <io.h>
#include <windows.h>
#include "CString.h"



class CFile
{
	// Members
protected:
	UINT		m_hFile; // handle to actual file (created by ::CreateFile WIN32 API)
	BOOL		m_bCloseOnDelete;
	CString		m_strFileName;


public:
// Flag values
	enum OpenFlags {
		modeRead =          0x0000,
		modeWrite =         0x0001,
		modeReadWrite =     0x0002,
		shareCompat =       0x0000,
		shareExclusive =    0x0010,
		shareDenyWrite =    0x0020,
		shareDenyRead =     0x0030,
		shareDenyNone =     0x0040,
		modeNoInherit =     0x0080,
		modeCreate =        0x1000,
		modeNoTruncate =    0x2000,
		typeText =          0x4000, // typeText and typeBinary are used in
		typeBinary =   (int)0x8000 // derived classes only
		};

	enum SeekPosition { 
		begin = 0x0, 
		current = 0x1, 
		end = 0x2 };

	enum { hFileNull = -1 };

	// Constructor/Destructor
public:
	CFile()
	{
		m_hFile = (UINT) hFileNull;
		m_bCloseOnDelete = FALSE;
	}
	~CFile()
	{
		if (m_hFile != (UINT)hFileNull && m_bCloseOnDelete)
			Close();
	}

	// Methods
public:
	BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags)
	{
		// CFile objects are always binary and CreateFile does not need flag
		nOpenFlags &= ~(UINT)typeBinary;

		m_bCloseOnDelete = FALSE;
		m_hFile = (UINT)hFileNull;
		m_strFileName.Empty();

		// map read/write mode
		DWORD dwAccess = 0;
		switch (nOpenFlags & 3)
		{
			case modeRead:
				dwAccess = GENERIC_READ;
				break;
			case modeWrite:
				dwAccess = GENERIC_WRITE;
				break;
			case modeReadWrite:
				dwAccess = GENERIC_READ|GENERIC_WRITE;
				break;
			default:
				;  // invalid share mode
		}

		// map share mode
		DWORD dwShareMode = 0;
		switch (nOpenFlags & 0x70)    // map compatibility mode to exclusive
		{
			default:
				;  // invalid share mode?
			case shareCompat:
			case shareExclusive:
				dwShareMode = 0;
				break;
			case shareDenyWrite:
				dwShareMode = FILE_SHARE_READ;
				break;
			case shareDenyRead:
				dwShareMode = FILE_SHARE_WRITE;
				break;
			case shareDenyNone:
				dwShareMode = FILE_SHARE_WRITE|FILE_SHARE_READ;
				break;
		}

		// map modeNoInherit flag
		SECURITY_ATTRIBUTES sa;
		sa.nLength = sizeof(sa);
		sa.lpSecurityDescriptor = NULL;
		sa.bInheritHandle = (nOpenFlags & modeNoInherit) == 0;

		// map creation flags
		DWORD dwCreateFlag;
		if (nOpenFlags & modeCreate)
		{
			if (nOpenFlags & modeNoTruncate)
				dwCreateFlag = OPEN_ALWAYS;
			else
				dwCreateFlag = CREATE_ALWAYS;
		}
		else
			dwCreateFlag = OPEN_EXISTING;

		// attempt file creation
		HANDLE hFile = ::CreateFile(lpszFileName, dwAccess, dwShareMode, &sa,
			dwCreateFlag, FILE_ATTRIBUTE_NORMAL, NULL);
		if (hFile == INVALID_HANDLE_VALUE)
			return FALSE;

		m_hFile = (HFILE)hFile;
		m_bCloseOnDelete = TRUE;

		return TRUE;
	}

	LONG Seek( LONG lOff, UINT nFrom )
	{
		if (m_hFile == (UINT)hFileNull)	return 0;

		return 	::SetFilePointer((HANDLE)m_hFile, lOff, NULL, (DWORD)nFrom);
	}

	DWORD SeekToEnd()
	{
		return Seek(0, CFile::end);
	}


	UINT Read(void* lpBuf, UINT nCount)
	{
		if (nCount == 0) return 0;   // avoid Win32 "null-read"

		DWORD dwRead = 0;
		
		::ReadFile((HANDLE)m_hFile, lpBuf, nCount, &dwRead, NULL);

		return (UINT)dwRead;
	}

	BOOL ReadEntireFile(/*out*/CString &szContent)
	{
		szContent.Empty();

		char buf[4096+1];
		UINT nRead;
		while ( (nRead=Read(buf,4096))>0 )
		{
			buf[nRead]='\0'; // force EOL
			szContent += buf;
		}

		return szContent.GetLength()>0;
	}

	void Write( const void* lpBuf, UINT nCount )
	{
		if (m_hFile == (UINT)hFileNull)	return;

		if (nCount == 0)
			return;     // avoid Win32 "null-write" option

		DWORD nWritten;
	    ::WriteFile((HANDLE)m_hFile, lpBuf, nCount, &nWritten, NULL);
	}

	void Write(CString &s)
	{
		if (!s.IsEmpty())
			Write(s.GetData(), s.GetLength());
	}

	void Flush()
	{
		if (m_hFile == (UINT)hFileNull)	return;

		::FlushFileBuffers((HANDLE)m_hFile);
	}

	void Close()
	{
		if (m_hFile != (UINT)hFileNull)
			::CloseHandle((HANDLE)m_hFile);

		m_hFile = (UINT) hFileNull;
		m_bCloseOnDelete = FALSE;
		m_strFileName.Empty();
	}


};




class CStdioFile : public CFile
{
	// Members
protected:
	FILE*		m_pStream;

	// Constructor/Destructor
public:

	CStdioFile()
	{
		m_pStream = NULL;
	}

	~CStdioFile()
	{
		if (m_pStream != NULL && m_bCloseOnDelete)
			Close();
	}


	// Methods
public:
	BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags)
	{
		m_pStream = NULL;

		if (!CFile::Open(lpszFileName, (nOpenFlags & ~typeText)))
			return FALSE;

		char szMode[4]; // C-runtime open string
		int nMode = 0;

		// determine read/write mode depending on CFile mode
		if (nOpenFlags & modeCreate)
		{
			if (nOpenFlags & modeNoTruncate)
				szMode[nMode++] = 'a';
			else
				szMode[nMode++] = 'w';
		}
		else if (nOpenFlags & modeWrite)
			szMode[nMode++] = 'a';
		else
			szMode[nMode++] = 'r';

		// add '+' if necessary (when read/write modes mismatched)
		if (szMode[0] == 'r' && (nOpenFlags & modeReadWrite) ||
			szMode[0] != 'r' && !(nOpenFlags & modeWrite))
		{
			// current szMode mismatched, need to add '+' to fix
			szMode[nMode++] = '+';
		}

		// will be inverted if not necessary
		int nFlags = _O_RDONLY|_O_TEXT;
		if (nOpenFlags & (modeWrite|modeReadWrite))
			nFlags ^= _O_RDONLY;

		if (nOpenFlags & typeBinary)
			szMode[nMode++] = 'b', nFlags ^= _O_TEXT;
		else
			szMode[nMode++] = 't';
		szMode[nMode++] = '\0';

		// open a C-runtime low-level file handle
		int nHandle = _open_osfhandle(m_hFile, nFlags);

		// open a C-runtime stream from that handle
		if (nHandle != -1)
			m_pStream = _fdopen(nHandle, szMode);

		if (m_pStream == NULL)
		{
			return FALSE;
		}

		return TRUE;
	}


	BOOL ReadString(CString& rString)
	{
		rString.Empty();

		const int nMaxSize = 256;
		char lpsz[nMaxSize+1];
		LPTSTR lpszResult;
		int nLen = 0;
		for (;;)
		{
			lpsz[0]='\0';

			lpszResult = _fgetts(lpsz, nMaxSize+1, m_pStream);

			// handle error/eof case
			if (lpszResult == NULL && !feof(m_pStream))
			{
				break;
			}

			nLen = lstrlen(lpsz);
			rString += lpsz;

			// if string is read completely or EOF
			if (lpszResult == NULL ||
				nLen<nMaxSize ||
				lpsz[nLen-1] == '\n')
				break;
			
		}

		// remove '\n' from end of string if present
		nLen = rString.GetLength();
		if (nLen != 0 && rString.GetAt(nLen-1) == '\n')
			rString.SetAt(nLen-1,'\0');

		return (lpszResult != NULL);
	}

	void Close()
	{
		int nErr = 0;

		if (m_pStream != NULL)
			nErr = fclose(m_pStream);

		m_hFile = (UINT) hFileNull;
		m_bCloseOnDelete = FALSE;
		m_pStream = NULL;
	}
	

};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线观看下载| 欧美精品乱人伦久久久久久| 亚洲第一福利一区| 久久精品视频在线看| 欧美精品丝袜中出| 色乱码一区二区三区88| 国产在线国偷精品免费看| 亚洲超碰97人人做人人爱| 亚洲欧洲另类国产综合| 精品国产百合女同互慰| 欧美伊人久久久久久久久影院 | 在线观看亚洲a| 国产成人亚洲精品青草天美| 日本不卡视频一二三区| 一区二区高清视频在线观看| 国产精品理伦片| 久久精品水蜜桃av综合天堂| 欧美va日韩va| 欧美一区二区免费视频| 欧美剧在线免费观看网站| 日本高清成人免费播放| 99精品在线观看视频| 成人网在线免费视频| 国产91综合网| 国产不卡在线播放| 国产精品一区二区久久精品爱涩| 麻豆精品视频在线| 蜜桃免费网站一区二区三区| 日韩精品免费视频人成| 亚洲福利视频一区二区| 亚洲妇女屁股眼交7| 亚洲综合色噜噜狠狠| 亚洲人成网站色在线观看| 欧美国产日韩精品免费观看| 久久久精品国产免大香伊| 久久亚洲精品小早川怜子| 久久亚洲春色中文字幕久久久| 日韩一卡二卡三卡| 精品欧美一区二区久久| 久久影院午夜片一区| 久久久99久久| 中文字幕一区二区视频| 亚洲欧美偷拍卡通变态| 亚洲一区二区视频在线| 亚洲第一电影网| 日本美女视频一区二区| 久久成人久久爱| 国产乱码精品一区二区三区av| 狠狠色综合色综合网络| 国产伦精品一区二区三区视频青涩| 国产乱码精品一品二品| 成人av影视在线观看| 色综合色狠狠综合色| 在线中文字幕一区二区| 欧美精品粉嫩高潮一区二区| 日韩一区二区在线免费观看| 国产亚洲欧美日韩在线一区| 国产精品成人免费精品自在线观看| 亚洲免费在线电影| 亚洲成av人片| 国产成人综合自拍| 色综合天天天天做夜夜夜夜做| 欧美中文字幕亚洲一区二区va在线| 欧美日本在线看| 久久久久久久综合| 亚洲免费在线视频| 蜜桃av一区二区| 成人一区二区视频| 欧美色综合久久| 精品免费国产二区三区| 国产精品久久久久毛片软件| 亚洲成人av免费| 国产一区二区三区av电影| 99国产欧美另类久久久精品| 欧美精选一区二区| 国产无遮挡一区二区三区毛片日本| 亚洲日本va在线观看| 日韩国产欧美一区二区三区| 国产成人亚洲综合色影视| 欧美性大战久久久久久久蜜臀| 精品国产凹凸成av人网站| 亚洲免费看黄网站| 激情五月婷婷综合| 欧美无乱码久久久免费午夜一区| 精品国产露脸精彩对白| 亚洲五码中文字幕| 成人黄色国产精品网站大全在线免费观看 | 欧美区视频在线观看| 久久久久久99精品| 五月激情综合网| 99riav一区二区三区| 欧美sm美女调教| 亚洲一区在线视频观看| 国产成人综合在线播放| 宅男噜噜噜66一区二区66| 1000部国产精品成人观看| 精久久久久久久久久久| 欧美亚洲国产一区二区三区| 国产亚洲精品超碰| 日本免费新一区视频| 欧洲人成人精品| 国产欧美精品一区| 捆绑变态av一区二区三区| 91精品福利在线| 国产精品伦理一区二区| 国产在线视频精品一区| 日韩三区在线观看| 一区二区三区美女| 91在线视频观看| 国产精品免费视频一区| 狠狠狠色丁香婷婷综合久久五月| 欧美午夜精品电影| 亚洲精品国产一区二区精华液| 国产精品99久久久久久似苏梦涵 | 日韩久久免费av| 视频在线观看91| 欧美中文字幕一二三区视频| 中文字幕在线一区| 国产精品996| 久久免费偷拍视频| 国产在线精品一区二区| 日韩亚洲欧美综合| 日本麻豆一区二区三区视频| 欧美日韩国产bt| 午夜伊人狠狠久久| 欧美色图天堂网| 亚洲综合免费观看高清完整版在线 | 偷拍一区二区三区| 欧美图区在线视频| 亚洲图片一区二区| 欧美日精品一区视频| 亚洲图片欧美色图| 欧美男女性生活在线直播观看| 亚洲伊人伊色伊影伊综合网| 日本道在线观看一区二区| 亚洲精品写真福利| 欧美综合一区二区| 婷婷六月综合亚洲| 91精品国产一区二区三区蜜臀| 丝袜a∨在线一区二区三区不卡| 欧美在线一区二区三区| 亚洲h动漫在线| 日韩一区二区电影| 国产精品自产自拍| 欧美激情综合在线| 99精品欧美一区二区蜜桃免费| 亚洲视频免费在线观看| 欧美性大战久久| 久久99久国产精品黄毛片色诱| 日韩免费视频一区| 国产成人午夜电影网| 国产精品区一区二区三| 色网站国产精品| 午夜电影久久久| 欧美xxxx老人做受| www.日韩大片| 亚洲一区二区四区蜜桃| 日韩一级大片在线观看| 懂色av一区二区夜夜嗨| 亚洲三级在线观看| 91麻豆精品国产91久久久久久久久 | 欧美成人一区二区| 懂色av一区二区三区免费观看| 亚洲乱码国产乱码精品精可以看 | 中文成人综合网| 色一区在线观看| 蜜臀久久久久久久| 国产欧美日韩视频一区二区| 99久久er热在这里只有精品66| 亚洲国产毛片aaaaa无费看 | 国产精品萝li| 欧美精品18+| 国产suv精品一区二区三区| 亚洲四区在线观看| 日韩一二三四区| 91在线丨porny丨国产| 日本美女一区二区| 日韩美女啊v在线免费观看| 3d成人h动漫网站入口| 成人免费视频视频在线观看免费| 亚洲一区在线观看网站| 久久亚洲精品小早川怜子| 欧美性猛交xxxxxx富婆| 国内国产精品久久| 亚洲国产一区二区视频| 国产欧美精品区一区二区三区| 欧美日韩亚洲综合| 成人爱爱电影网址| 美女精品自拍一二三四| 亚洲激情男女视频| 久久九九全国免费| 欧美一区二区久久久| 91黄色免费观看| 成人精品一区二区三区中文字幕| 丝袜诱惑亚洲看片| 亚洲靠逼com| 国产欧美日韩在线| 精品av久久707| 欧美精品v国产精品v日韩精品| 91在线国内视频|