メッセージとは、我々が日常使う,「伝言」「お知らせ」という意味を持っている。 つまり誰かが他の誰かに何かの情報を伝えるための媒体のことである。 Windowsでは、WindowsOSからアプリケーションプログラム(個々のウィンドウを管理しているプログラム)に対してイベント情報を伝達する場合のしくみを、ウィンドウメッセージという。 これを利用してウィンドウとユーザのアクション(キーやマウス)による対話を行うことをGUI:Graphical User Interfaceと呼ぶ。
つまり、Win32APIにおけるウィンドウメッセージとは、WindowsOSがあるウィンドウ上で起きたイベント情報をWinMain関数経由でWindow関数に伝達するしくみのことである(下図参照)。 ここで、メッセージをWinMain関数に取り込む場合はMSG構造体、Window関数に渡される場合はUINTの型を取る。 WinMain関数では
という一連の処理(1から3まで)を反復する.これをメッセージループと言う。
一方下記で表されるWindow関数
では、それが呼び出された時点で何かメッセージが届いているので、第2引数に入っているメッセージタイプ(WM_××××)に応じてそれに対応する処理を行う。 処理の分岐は以下のように行う。
さて他方、Unixの標準であるX11プログラムで作成したGUIにおいて
このようにイベントループを回したのと対比してみよう。 X11ではイベント情報を取得した後にそのイベント処理をするまでを全て同一プログラムで行っていたのに対し、APIではイベント情報の反復取得はWinMain関数で行い、その処理はイベント発生時にのみ呼び出されるWindow関数で行うというように、上手く機能分割されている。 この方法の利点は、ユーザアプリ(Window関数)がシステムリソースに直接アクセスすることが出来ないため、システムを上手く保護できる点である。