FileOpened 関数

 の今まで何も説明していませんでしたが、 最初に出てきたButtonPushed 関数や、これから紹介する FileOpened 関数は、 今までずっとC言語だけをやってきた方にとって、違和感無く受け入れられる関数なのでしょうか。 もし違和感がないならそれでいいのです。でもこれらは、C言語の考え方では変な関数なのです。 ここから先は、読むと混乱するかもしれないので、 このページだけは飛ばして次へ進んでも構いません。

 通、C言語でのプログラミングだと、 ユーザーが値を入力する必要があったときには、ソフトに
値は?(1〜100で入力) >
などと表示させますね。だからそれに合わせて、ここにも Gettext などの関数を用意しています。
 そしてC言語のプログラムだと、値を入力し終えたら計算が始まって、 多くの場合は何らかの結果をprintfで表示します。これは、ここではPrintf 関数で実現しています。
 でも、Windowsのソフトをさわっていることを考えて下さい。普通、 何かのアプリケーションを起動しても、いきなり 値は? > などと聞いてくることはありません。 ほとんどの場合、ユーザからなにかのアクションを起こさないと、 ソフト側から何も言ってきません。それどころか、ユーザは、頼みもしないのに勝手に 好きなときにメニューバーの[ファイル]-[開く] を選び、ファイルを開こうとさえしようとします。 C言語の流れからでは考えにくいプログラムです。

(余談:C言語でプログラミング、って書きましたが、ようするに、 DOSコンソールアプリケーションや、UNIXのテキストベースのソフト(実行ファイル) という意味です。「C言語というと変だ!」って突っ込まないように。)

のように、 ユーザのアクションによって何らかのイベントが発生し、そのイベントによって関数 (オブジェクト指向言語ではメソッド)が実行されるプログラムのことを、 イベントドリブンプログラム(イベント駆動型プログラム)と言います。今回の場合、 FileOpened 関数と、ButtonPushed 関数は、頼みもしないのにユーザの気まぐれによって 呼び出される、イベント駆動型の典型的な関数ということになります。 もちろん、イベントはこれだけではありません。メニューバーをさわったり、 マウスをウィンドウ上で動かしたり、文字を入力したり・・・。 それこそ何百というイベントがあり、そのうちのどれが起こったときに、 どの関数を実行させるかを考えてプログラミングしていくのが、Windowsプログラミングなのです。 今回は、そのたくさんのイベントのうち、FileOpened(ファイルを開く) と ButtonPushed(ボタンを押す)に限定して使用しているに過ぎないのです。

 ァイル main.cを開いて、ButtonPushed の文字を検索してみて下さい。switch文の中に見つかりましたね。この上の方に、 マウスの左クリック、右クリックのイベントが発生したときの関数が書かれていません。 ここに、ButtonPushed 関数と同じ要領で書くと、マウスのクリックに対して 何かの処理をさせることが出来るようになります。

 うですか?  今回は少しWindowsプログラミングというものに触れてみましたが、混乱していませんか。 まあ、大丈夫だと思います。もし今分からなくても、やってれば分かります。

 、メインテーマのFileOpened 関数について書きませんでしたね。まあ簡単なので、書式のみ書いておきます。

FileOpened 関数(ファイルを開く)
引数1 char * コモンダイアログやドラッグ&ドロップで得たファイル名
引数2 int ファイル名をどこから得たか
(ドラッグ&ドロップ:FROMDRAGDROP, コモンダイアログ:FROMCOMMON)
関数内部の書き換え例

    if(filefrom == FROMDRAGDROP)
        Printf(STATUS1, "ドラッグ&ドロップだね。\r\n");

    else if(filefrom == FROMCOMMON)
        Printf(STATUS1, "コモンダイアログからだね。\r\n");

これは分かりますね。

今回はWindowsプログラミングに触れてみました。 次は、残っているところ、変数名や、定義などについて説明します。

△TOP△   BACK       NEXT