Aoi #20 ファイル読み込み&文字コード変換&エディットボックスにテキストをセット

ファイル読み込みから、文字コード変換、テキストのセットまで一気に・・・。

BinaryFile.hは、

ReadとGetFileSizeを追加・・・。

BinaryFile.cppは、

ReadでAPIのReadFileを呼び、

GetFileSizeでAPIのGetFileSize呼ぶ・・・。

TextFile.hは、

ReadとDecodeを追加・・・。

TextFile.cppで、Readは、

Decodeは、

こんな感じで、サイズ取得、バッファ作成、読み込み、文字コード変換・・・。

EditBox.hは、

SetWindowTextを用意・・・。

APIのSetWindowTextでエディットボックスにセット.

MainMenuBar.cppは、

pTextFile->Readで、pMainWindow->m_pEditBox->m_ptszTextに読み込んだテキストが格納される・・・。
これはpMainWindow->m_pEditBox->SetWindowTextを呼ぶことで、エディットボックスに反映される・・・。

f:id:BG1:20170220172725p:plain

この状態で、

f:id:BG1:20170220172801p:plain

開いたら、

f:id:BG1:20170220172840p:plain

こうで、test2.binを選択・・・。

f:id:BG1:20170220172933p:plain

文字が読み込めた・・・。

・ファイル読み込み · bg1bgst333/Aoi@8c647df · GitHub

Aoi #19 "開く"ファイルダイアログの表示

今度は、"開く"ファイルダイアログを表示する・・・。
まずは、このファイルダイアログで選択したファイル名を取得し、メッセージボックスに表示する・・・。

BinaryFile.hは、

GetOpenFileNameを追加・・・。

BinaryFile.cppは、

GetSaveFileNameと同様にGetOpenFileNameを実装・・・。
OFN_FILEMUSTEXISTを指定することで、ファイルが存在しないと決定できないように・・・。

MainMenuBar.hは、

OnFileOpenを追加・・・。

MainMenuBar.cppは、

pTextFile->GetOpenFileNameでpTextFile->m_tszFileNameに格納されたファイル名をMessageBoxで表示・・・。

f:id:BG1:20170220162054p:plain

で、

f:id:BG1:20170220162102p:plain

test2.binを選択・・・。

f:id:BG1:20170220162116p:plain

パスが表示される・・・。

・"開く"ファイルダイアログの表示 · bg1bgst333/Aoi@aaddcb7 · GitHub

ObjeqtNote #19 "名前を付けて保存"ファイルダイアログの表示

こちらも、ファイルダイアログを実装した・・・。

"名前を付けて保存"をクリックすると、

f:id:BG1:20170220152226p:plain

ファイルダイアログが出たので、test2.binとして保存・・・。

f:id:BG1:20170220152306p:plain

保存されてる・・・。

・"名前を付けて保存"ファイルダイアログの表示 · bg1bgst333/ObjeqtNote@e5a3092 · GitHub

Aoi #18 "名前を付けて保存"ファイルダイアログの表示

"名前を付けて保存"を押したら、ファイルダイアログが出てくるようにする・・・。

BinaryFile.hは、

GetSaveFileNameを追加・・・。
フィルタ文字列はマクロにした・・・。(なんかもっといい方法ありそうだが・・・。)

BinaryFile.cppは、

ここで各種設定してAPIのGetSaveFileNameを呼んで表示・・・。
フィルタは引数では区切り文字を'|'で指定し、ofn.lpstrFilterに指定する前に、'\0'に置き換えている・・・。
でないと、最初から'\0'だと文字列が切れてしまって、引数で渡せないので・・・。

MainMenuBar.cppは、

フィルタ文字列を作成して、GetSaveFileNameでダイアログを出し、選択したファイル名がpTextFile->m_tszFileNameに格納されるので、それでファイルを開いて、保存する・・・。

f:id:BG1:20170220131415p:plain

で、

f:id:BG1:20170220131451p:plain

名前を付けて保存・・・。

f:id:BG1:20170220131723p:plain

"test1.bin"で、

f:id:BG1:20170220131810p:plain

作成されて、

f:id:BG1:20170220131851p:plain

TeraPadとかで開いてみたら、保存されてる・・・。

・"名前を付けて保存"ファイルダイアログの表示 · bg1bgst333/Aoi@ae02e81 · GitHub

Aoi #17 文字コード変換関数の切り出し

文字コード変換の部分をメンバ関数Encodeに切り出す・・・。

TextFile.hは、

Encodeを追加し、TextFile.cppで、

CTextFile::Writeのところが、EncodeしてからWriteするみたいな形になってすっきり・・・。

f:id:BG1:20170220110218p:plain

こうして、

f:id:BG1:20170220110251p:plain

こうなる・・・。

・文字コード変換関数の切り出し · bg1bgst333/Aoi@a488f4f · GitHub