出力ファイルを選択する

VC++ の GetSaveFileName() でファイルを選択して TEXT DATA を保存します。
多くのプログラムで使われているファイル一覧から出力ファイルを選択する DialogBox を使用します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの設定

  1. テンプレートまたは、空のプロジェクトから作成して下さい。
  2. szFile[] は GetSaveFileName() で選択されたファイル名を格納する領域です。
    buf[] は終了時にファイルに保存する TEXT DATA です。
        char        szFile[MAX_PATH];           //ファイル名(パス付き)
        char        buf[1000]=
            "0123456789 0123456789\r\n"
            "abcdefghijklmnopqrstuvwxyz\r\n"
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n"
            "IIIIIIIIIIIIIIIIII 11111111111 lllllllllllll\r\n"
            "WWWWWWWWWWWWWWWWWW MMMMMMMMMMMMM ZZZZZZZZ";
        
  3. GetSaveFileName() を使ってファイル名を選択する関数です。
    選択されたファイルのフルパスが szFile[] に格納されます。
        //★ OPENFILENAME 構造体で出力ファイルを設定する
        LRESULT GetSaveFile()
        {   OPENFILENAME    ofn;
    
            szFile[0]= '\0';
            memset(&ofn, 0, sizeof(OPENFILENAME));
            ofn.lStructSize = sizeof(OPENFILENAME);
            ofn.hwndOwner = NULL;
            ofn.lpstrFilter = "text(*.txt)\0*.txt\0All files(*.*)\0*.*\0\0";
            ofn.lpstrFile = szFile;
            ofn.lpstrFileTitle = NULL;
            ofn.nFilterIndex = 1;
            ofn.nMaxFile = MAX_PATH;
            ofn.Flags = OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY;
            ofn.lpstrDefExt = "txt";
            ofn.lpstrTitle = "名前を付けて保存する!";
    
            if (GetSaveFileName(&ofn)!=TRUE)
            {   MessageBox(NULL,"Open Save Name Error","GetSaveFile",MB_OK);
                return FALSE;
            }
            return TRUE;
        }
        
  4. szFile に buf のデータを保存する関数です。
    buf[] の最後には、データの終わりを示す '\0' が格納されています。
    ファイル出力の詳細は EditControl からタイプしたデータをファイルに書き出す を参照して下さい。
        //★ szFile に buf[] のデータを書き出す
        DWORD   WriteData()
        {   HANDLE      hFile;
                :
        }
        
  5. WM_CLOSE でファイルを出力してプログラムを終了します。
            case WM_CLOSE:
                if (GetSaveFile()==TRUE)    WriteData();
                PostQuitMessage(0);
                break;
        
  6. C# でも同様のプログラムを作成しています。
    超初心者のプログラム入門(C#)から Save File Dialog を参照して下さい。
    リンクがエラーになるときは「前田稔の超初心者のプログラム入門」から辿って下さい。

超初心者の方のために全ソースコードを掲載します。 (^_^;)
全ソースコード

超初心者のプログラム入門(Win32API C++)