- ウィンドウのあるプログラム作成 ~ 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 のユーザーインターフェイスを構成する基本的な要素が含まれています。
- エディットコントロールにテキストファイルを開く
それではいよいよテキストファイルを開きましょう!
大まかな流れは、次のようになります。