Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ヘッダのインクルード
- // 独自のヘッダ
- #include "BinaryFile.h" // バイナリファイルクラス
- // コンストラクタCBinaryFile()
- CBinaryFile::CBinaryFile(){
- // メンバ変数の初期化
- m_hFile = NULL; // m_hFileをNULLで初期化.
- m_pByte = NULL; // m_pByteをNULLで初期化.
- ZeroMemory(m_tszFileName, sizeof(TCHAR) * 1024); // ZeroMemoryでm_tszFileNameを0で埋める.
- }
- // デストラクタ~CBinaryFile()
- CBinaryFile::~CBinaryFile(){
- // メンバ変数の終了処理
- ZeroMemory(m_tszFileName, sizeof(TCHAR) * 1024); // ZeroMemoryでm_tszFileNameを0で埋める.
- if (m_pByte != NULL) { // NULLでなければ.
- delete[] m_pByte; // deleteでm_pByteを解放.
- m_pByte = NULL; // m_pByteにNULLをセット.
- }
- if (m_hFile != NULL) { // NULLでなければ.
- Close(); // 閉じる.
- m_hFile = NULL; // m_hFileにNULLをセット.
- }
- }
- // ファイルの作成およびファイルを開く操作を行うメンバ関数Open.
- BOOL CBinaryFile::Open(LPCTSTR lpctszFileName, DWORD dwDesiredAccess, DWORD dwCreationDisposition){
- // ファイル名をメンバにセット.
- _tcscpy_s(m_tszFileName, 1024, lpctszFileName); // _tcscpy_sで引数をメンバにコピー.(第2引数はWORD単位でのサイズ.)
- // ファイルを開く.
- m_hFile = CreateFile(m_tszFileName, dwDesiredAccess, 0, NULL, dwCreationDisposition, FILE_ATTRIBUTE_NORMAL, NULL); // CreateFileでファイルm_tszFileNameを開く.
- if (m_hFile == INVALID_HANDLE_VALUE) { // 失敗.
- return FALSE; // FALSEを返す.
- }
- // 成功
- return TRUE; // TRUEを返す.
- }
- // ファイルを閉じるメンバ関数Close.
- void CBinaryFile::Close(){
- // ファイルを閉じる.
- CloseHandle(m_hFile); // CloseHandleでm_hFileを閉じる.
- m_hFile = NULL; // NULLをセット.
- }
- // ファイルを書き込むメンバ関数Write.(pBytesは外部でバッファを持っている場合の書き込み対象バイト列.)
- BOOL CBinaryFile::Write(BYTE * pBytes, UINT nCount){
- // 変数の初期化
- DWORD dwBytes = 0; // DWORD型dwBytesを0で初期化.
- // pBytesを書き込む.
- return WriteFile(m_hFile, pBytes, nCount, &dwBytes, NULL); // WriteileでpBytesの内容を書き込む.
- }
- // "名前を付けて保存"のファイルダイアログを表示し, 選択されたファイル名を取得するメンバ関数GetSaveFileName.
- BOOL CBinaryFile::GetSaveFileName(LPTSTR lptszFileName, int nMax, LPCTSTR lpctszFilter, HWND hWnd){
- // 変数の初期化
- OPENFILENAME ofn = { 0 }; // OPENFILENAME構造体変数ofnを0で初期化.
- TCHAR tszFilter[1024] = { 0 }; // tszFilterを0で初期化.
- // ofnの設定
- ofn.lStructSize = sizeof(OPENFILENAME); // OPENFILENAME構造体のサイズをセット.
- ofn.hwndOwner = hWnd; // 指定されたhWndをセット.
- int len = _tcslen(lpctszFilter); // lpctszFilterの長さを取得.
- _tcscpy_s(tszFilter, 1024, lpctszFilter); // lpctszFilterをtszFilterにコピー.
- for (int i = len - 1; i >= 0; i--) { // 後ろから'|'を'\0'に置き換える.
- if (tszFilter[i] == FITLER_DELIMITER_CHAR) { // '|'だった場合.
- tszFilter[i] = _T('\0'); // tszFilter[i]に'|'を代入.
- }
- }
- ofn.lpstrFilter = tszFilter; // tszFilterをセット.
- ofn.lpstrFile = lptszFileName; // 指定されたlpctszFileNameをセット.
- ofn.nMaxFile = nMax; // 指定されたnMaxをセット.
- ofn.Flags = OFN_OVERWRITEPROMPT; // 上書き時のメッセージボックス表示.
- // "名前を付けて保存"ファイルダイアログの表示.
- if (!::GetSaveFileName(&ofn)) { // GetSaveFileNameで"名前を付けて保存"ファイルダイアログを表示.
- // 選択肢なかった場合.
- return FALSE; // FALSEを返す.
- }
- // 選択した場合.
- return TRUE; // TRUEを返す.
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement