●GetSaveFileNameのサンプルプログラム
#include <windows.h>
#include <memory.h>

#define FILENAMESIZE	512
#define IDM_LOAD	1
#define IDM_SAVE	2

BOOL FileCommonDialog(HWND hwnd,char *szFullPathName,int nMode)
{// szFullPathName	コモンダイアログより選択されたフルパスのファイル名
 // nMode		IDM_LOAD : ファイルのオープン、IDM_SAVE : ファイルの保存
	OPENFILENAME	ofn;
	BOOL		b = FALSE;

lstrcpy(szFullPathName,""); memset(&ofn,0,sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = hwnd; ofn.lpstrFilter = "テキスト(*.txt)\0*.txt\0すべて(*.*)\0*.*\0"; ofn.nFilterIndex = 1; ofn.lpstrFile = szFullPathName; ofn.nMaxFile = FILENAMESIZE; ofn.lpstrDefExt = "txt"; if ( nMode == IDM_LOAD ){ ofn.lpstrTitle = "ファイルのオープン"; ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; b = GetOpenFileName(&ofn); } else if (nMode == IDM_SAVE ) { ofn.lpstrTitle = "ファイルの保存"; ofn.Flags = OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY; b = GetSaveFileName(&ofn); } return (b); } int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) { char szMessage[1024]; char szFileName[FILENAMESIZE]; if ( OpenFileDialog(NULL,szFileName) ){ wsprintf(szMessage,"'%s'が選択されました",szFileName); } else { wsprintf(szMessage,"キャンセルされました"); } MessageBox(NULL,szMessage,"結果",MB_ICONINFORMATION | MB_OK); return (0); }