▽ウィンドウアプリケーション 基本

これまで、ずっとコンソール向けのアプリケーションを作ってきましたが、今回からはウィンドウアプリケーションの開発に入ります。

今回は、ウィンドウアプリの基本的なおさらいから基本機能の実装まで。それなりに急いでますけど、そんなに難しい内容はやってないので、普通にソースを読めば普通に理解できるかと。たぶん(´ー`)

○基本的なウィンドウアプリ

ウィンドウを1枚表示するだけのサンプルプログラムです。

gc00-01.lzh
gc00-01.lzh

MFCなどの補助的なクラスライブラリは一切使用していません。Win32 APIを直接利用した場合のサンプルプログラムです。

基本的なウィンドウアプリ
基本的なウィンドウアプリ

ウィンドウアプリケーションならExcelだろうがDoom3だろうが基本的な構成はこれと同じです。たぶん。逆に言うと、これを発展させていけば、どんなアプリでも出来るはずです。って、Win32 APIを直接使って、どこまで開発が出来るかはおもしろそうですけど時間と労力の無駄でしょう。

プログラムの基本的な構成を説明しておくと、以下のような流れになっています。

1.ウィンドウクラスの登録
ウィンドウの基本的な構成をWindowsに登録します。
2.ウィンドウの作成
1で登録した情報を元にウィンドウを作成します。
3.メッセージループ
2で作成したウィンドウに関するメッセージを処理します。

たったこれだけです。簡単ですね。

ただ、これだけなら簡単なんですけど、ツールバーやらステータスバーやら、山ほどのダイアログ管理とか、いろいろ追加していくと破綻するのは目に見えてるので、もうちょっと便利にまとめ上げてみます。

○GClass版

GClassを利用して作った、ウィンドウを1枚表示するだけのサンプルプログラムです。

gc02-00.lzh
gc02-00.lzh

GClass ver 1.0 [027]
gclass-027.lzh

プログラムはGClassを使用しています。ソースコードのコンパイルから試してみたい人は、あらかじめGClassの環境を整えておいてください。

基本的なウィンドウアプリ・GClass版
基本的なウィンドウアプリ・GClass版

微妙にツールバーやステータスバーが増えてますが、あまり気にしないでくださいw

gc02に入っているmain.cppを見てもらえればすぐにわかりますが、GClassのウィンドウアプリケーション構成は『アプリケーション→フレーム→ビュー』の3段構成になっています。

いろいろ試したけど、やっぱりこれが一番楽かな、と。フレームとビューを一体にしたときは、ビューの置き換えが面倒ですし。いちおう、構成としては『アプリケーション→いきなりダイアログ』も可能になっています。まだ、試してないですけどw

○クラス&関数解説

今回追加になったクラス・関数のものすごく簡単な解説です。

○フレームワーク関係

GApp
アプリケーション本体を表すクラスです。メインウィンドウの管理、HINSTANCE関係の処理、メッセージループ関係の処理を行います。m_program / m_companyはレジストリ関係の処理でも使われる予定。
GWin
HWNDをラップしたクラスです。多少、そうでない機能も追加してありますが、基本的には単純にラップしてあるだけです。
GWinProc
ウィンドウプロシージャ関係のクラス、かな。Win32 APIで言うところの『ウィンドウクラスの登録』から『ウィンドウの作成』、『ウィンドウプロシージャ』までをそれなりに便利にまとめてあります。
GFrame
フレームクラスです。各種ビューやツールバー・ダイアログバーまでサポートしてあります(ただし、どちらも1個だけw)。その他のコントロールバーとWM_NOTIFYの反射問題はまた今度と言うことで。
GView
ビューの基本クラスです。これを元に、いろいろ、ビューを作成する予定。
GControl
コントロールの基本クラスです。コントロールはWindows側が用意してくれる機能ですけど、これを乗っ取って自分で便利に使っちゃいます。
GControlAdmin
複数のコントロールを管理するクラスです。ついでに、サイズ可変コントロールにも対応してあります。
GDialog
ダイアログの基本クラスです。GControlAdminは標準装備です。リストボックスやコンボボックスの初期化に関してはMFC互換にしてあります。

○コントロール

GControlBar
コントロールバーの基本クラス。いちおう、将来のための準備と言うことで・・・
GStatusBar
ステータスバー。特に機能の追加は無し。
GToolBar
ツールバー。こちらも、特に機能の追加は無し。

○その他

GMenu
HMENUをラップしたクラス。将来的には検索機能を追加しなくっちゃ。
各種関数
HDC周りの処理は、関数で実現するのが増えそうな予感。

GContorlとか、かなり、将来の機能の伏線がはられてますが・・・ まぁ、あまり細かいことは気にしないでください。いつか使う日も来るでしょう。たぶん。

○今後の予定

せっかくだから、何かツールを作ってGClassの使い勝手を確認&機能追加をするのが基本方針なんだけど・・・ 予定も遅れてることだし、一気にゲーム系に走るかな? まぁ、そのあたりは気分次第と言うことで。


[GClass] Presented by See.Ku [2005/2/22]