ファイル処理

 ァイルの入出力は、fopen、fclose 関数を使えば問題なく実行できますが、せっかくWindowsプログラミングをしているのだから、 メニューバーで[ファイル]-[開く] とすると必ず出てくるあの例のコモンダイアログ ってのを使ってみたいと思いませんか。思うでしょう。いや思ったはずだ。・・・。 お願い、思って。(^^;
コモンダイアログというのは、こういうやつです。



これらは見覚えあるでしょう。このうち、一番上のコモンダイアログを使います。 Open 関数、Save 関数の中で、このコモンダイアログを表示させ、 ファイルの入出力の仲介役にします。

(余談:本当は、関数名を Open に対して Close、あるいは、Save に対して Load のどちらかの反対語同士で統一しようと思ったんだけど、コモンダイアログが「開く:open」 と「保存:save」となっているので、これに合わせました。)

 ァイル入出力関数のOpen、Save 関数の書式と使い方を以下に書きます。

Open 関数(コモンダイアログを出し、ファイル名の文字列を得る)
引数1 char * デフォルトで開くフォルダのパスの文字列の配列
引数2 const char * ファイル名を受け取る文字列の配列
戻り値 int エラーおよびキャンセル:ERR(1)、正常終了:NOERR(0)
使用例

    char gotfilename[MAX_PATH];
    FILE *fp;

    Open("C:\\windows\\", gotfilename);

    fp = fopen(gotfilename, "r");    // ファイルを開く
    fclose(fp);    // ファイルを閉じる

Save 関数(コモンダイアログを出し、ファイルにバッファの文字を書き出す)
引数1 char * デフォルトで開くフォルダのパスの文字列の配列
引数2 const char * バッファ(の配列)
引数3 const char * バッファの文字数(容量)(大きくても1MB程度まで)
戻り値 int エラーおよびキャンセル:ERR(1)、正常終了:NOERR(0)
使用例

    char moji[50];

    strcpy(moji, "この文字がファイルに書き出されます。\0");
    Save("C:\\windows\\", moji, strlen(moji));


Open 関数と、Save 関数 の決定的に違う所は、Open 関数の方は 実際にはファイルを開いていないということです。 単にファイル名を受け取っているだけです。後は、このファイル名をfopen 関数に 引き渡すなり、煮るなり焼くなりすればいいわけです。
Save 関数はファイル名を引き渡しません。なぜなら、保存するファイル名が決まっているなら、 コモンダイアログを使う理由がないからです。保存のコモンダイアログは、 保存するファイル名をソフトの使用者に決めさせるためのものですから。 その代わり、保存する内容の配列を引き渡します。(要するに、バッファのポインタを渡します。) そうすると、その内容をSave 関数は、fopen、fclose を使って書き出します。

(余談:ああ、ついにポインタって書いてしまった。拒絶反応はないですか? (^^; )

これで、ほぼ説明は終了です。あとは、C言語の知識を総動員すれば、VisualBasicに負けない (別に対抗意識を燃やしてるわけではありませんが、)Windowsアプリケーションソフト となることでしょう。

次は、メニューバーの[ファイル]-[開く]を選んだとき、 およびファイルをドラッグ&ドロップしたときに呼ばれる FileOpened 関数についてです。

△TOP△   BACK       NEXT