単純な Windows プログラムの作成編 (ウィンドウ有り)
- ウィンドウのあるプログラム作成 ~ Hello, world 以前
いよいよウィンドウのあるプログラムを作りましょう! ここで作るプログラムの外観はこのようなものです。
- ウィンドウのあるプログラム作成 ~ Hello, world
それではいよいよ、Hello, world! プログラムを作りましょう。 出来上がりのスクリーンショットは次のようになります。 前回のプログラムから変ったところは、画面中央に "Hello, world!" という文字が書いてあるところだけです。
- メニュー、アイコン、バージョン情報の設定 ~ リソースファイルの作成
特定のファイルで使用するメニュー、アイコン、バージョン情報、ダイアログボックス等の情報は、 リソースファイル にそれを定義することができます。 後述のようにリソースファイルは、リソース・スクリプト (*.rc) と呼ばれるテキストファイルから作成されます。アイコンやビットマップなど、バイナリファイルをリソースファイルとは別に用意する必要がある場合もありますが、メニュー、ダイアログボックス、ストリングテーブルなどは、リソース・スクリプトというテキストファイルを用意し、それをリソースコンパイラによってコンパイルすることによって作成できます。
- メニューのイベント処理
メニューを選択したときには、WM_COMMAND メッセージが発生します。ですから、WindowProc に、WM_COMMAND メッセージに対するハンドラを追加することで、メニューを選択したときの処理を行うことが出来ます。
- プログラムの終了 ~ WM_CLOSE メッセージと DestroyWindow 関数
ファイルメニューの「終了」を選んだ時のイベントハンドラにて、SendMessage 関数でメインウィンドウに WM_CLOSE メッセージを送信します。
- メッセージクラッカによるコードの書き換え
全ての処理がウィンドウプロシージャ内に記載されています。このままコードを書き足していくと、異常に巨大な switch 文ができてしまい収集がつきません。 この問題に対処すべく、Windows SDK には メッセージクラッカ と呼ばれるマクロ群が用意されています。 メッセージクラッカは Windows SDK に付属する windowx.h に定義されています。
- STRINGTABLE リソースと LoadString を使った文字列テーブルリソースの利用
リソーススクリプト (*.rc) で定義できるリソースタイプには、MENU (メニュー) や ICON (アイコン) の他に、STRINGTABLE (文字列テーブル)というのもあります。 STRINGTABLE リソースには、文字列を格納します。 STRINGTABLE リソースは下図のように書きます。STRINGTABLE というリソース名に続き、一行ごとに ID と文字列を書きます。プログラムからはこの ID を使ってそれぞれの文字列にアクセスできます。
- エディットコントロールの利用
Windows には組み込みのコントロールライブラリがあります。そのライブラリには、「ボタン」コントロール、「エディット」コントロール、「リストボックス」コントロールなど、 Windows のユーザーインターフェイスを構成する基本的な要素が含まれています。
- エディットコントロールにテキストファイルを開く
それではいよいよテキストファイルを開きましょう! 大まかな流れは、次のようになります。