【Colum】


Windowsアプリケーションの構造


 Windowsの最大の特徴は、同時に複数のアプリケーション を起動できる点にあります。(マルチタスクOS)
従来のMS-DOSでは、たった1つのものしか起動できませんでした。 (シングルタスクOS)

 複数のアプリケーションを起動できるといっても、実際ユーザーの指示を 直接受けることのできるものは、基本的に1つです。 その状態にあるアプリケーションを、「アクティブ」状態といいます。
 「アクティブ」状態のアプリケーションは、Windowsから送られて くる「メッセージ」を受け取れるようになります。
「メッセージ」とは、ユーザーが「マウスを移動した」とか「右クリ ックをした」など、様々です。
 そして、このような「メッセージ」に対してそれに応じた動作をすることを、 イベントドリブン方式といいます。

 一見、こういった「メッセージ」は、アプリケーション自体が直接受け取 っているように見えますが、実際は、Windowsを介しています。
 Windowsがその「メッセージ」を受け取った後、「アクティブ」状 態のアプリケーションに対して、再び「メッセージ」を送っています。
「メッセージ」を受け取ったアプリケーションは、プログラマーが組み立てた 処理を実行します。
 Windowsからアプリケーションへの「メッセージ」の渡し方は、 コールバック関数を使用しています。コールバック関数とは、アプリケーション側の 「メッセージ」を受け取り必要な処理をする関数のことで、ユーザーの操作の 度に、「メッセージ」を引数にしてWindowsが呼び出しています。
(正確に言うと、Windowsからの「メッセージ」を、アプリケーションの GetMessage関数が受け取り、DispatchMessage関数が もう一度Windowsにこの「メッセージ」を返します。その後、Windowsが コールバック関数を、「メッセージ」を引数にして呼び出します。)
 Windowsから送られてくる「メッセージ」 を受け取り、必要な処理をしたら、また「メッセージ」を待つ。これを 「メッセージループ」といいます。

 このように、Windowsアプリケーションは、ユーザーからの操作 を「メッセージ」という形で、常に、Windowsを介して行います。 そして、「メッセージ」は、コールバック関数によってアプリケーションに 渡されます。下にその略図を示しました。



 「なんのこっちゃ。意味わからん!?」と思われるかもしれません(説明の仕方 が下手ですみません)が、こういった内部的なことは、Windowsプログ ラム制作上、非常に重要な概念の1つで、知っていて損は、ない、と思います??
 というのも、これらのことをちゃんと理解していると、Visual Basicにおける関数,プロシージャ,イベント プロシージャの違いが、くっきり見えてくる。→ (プロシージャとイベントプロシージャ


(参考書)
・「C++とWindowsプログラミングがわかる基礎のC」
  長谷川裕行 著
  ソシム株式会社 発行