GetSaveFileName

WindowsAPI(Win32API) Advent Calendar 2015 4日目
WindowsAPI(Win32API) Advent Calendar 2015 - Adventar

GetSaveFileNameは、"ファイル名を付けて保存"というタイプのファイル選択ダイアログを表示するWindowsAPI・・・。

GetSaveFileName 関数

パラメータは、GetOpenFileNameと同様に、OPENFILENAME構造体変数を渡す・・・。

エディットボックスにセットされているテキストを"test2.txt"というファイル名で保存する・・・。

resource.hは、

GetSaveFileName.rcは、

というように、メニュー項目Save As(ID_FILE_SAVEAS)を追加・・・。

ID_FILE_SAVEASの時、このようにofnをセットする・・・。
OFN_OVERWRITEPROMPTは、指定したファイル名のファイルが既に存在するときに、上書きするかどうかのメッセージボックスを表示するフラグ・・・。

あとは、GetSaveFileNameにofnを渡して呼ぶと、ofn.lpstrFileにポインタを渡したtszFilePathに保存先のパスが格納されるので、エディットボックスの内容をそこに書き込む・・・。

test.txtは、

f:id:BG1:20151204111215p:plain

で、

f:id:BG1:20151204111259p:plain

最初はこう・・・。

f:id:BG1:20151204111320p:plain

Openを選択・・・。

f:id:BG1:20151204111434p:plain

test.txtを開く・・・。

f:id:BG1:20151204111448p:plain

test.txtがエディットボックスに表示された・・・。
これをこのままtest2.txtに保存してみる・・・。

f:id:BG1:20151204111526p:plain

Save Asを選択・・・。

f:id:BG1:20151204111544p:plain

test2.txtとして保存・・・。

f:id:BG1:20151204111602p:plain

そうすると、test2.txtが生成されていて、さきほどのテキストが保存されている・・・。

Sample/GetSaveFileName.cpp at master · bg1bgst333/Sample · GitHub
Sample/resource.h at master · bg1bgst333/Sample · GitHub
Sample/GetSaveFileName.rc at master · bg1bgst333/Sample · GitHub