This is “ウインドウズプログラミング講座、第1回、 LCC版“
Since: 3/5/2006 11:31:01 AM
Contact
with
今回は、後の都合を考えて、モジュールを分割した、状態になっている。これは、今後の参考にもなるかもしれないね?
モジュール間の関係は、以下のとおり。
System View.c Disp.c Disp_sub .c
というわけで、きわめてシンプルである。 システムからのブートアップにより、view.c モジュールが呼ばれる。View.cモジュールの都合で、disp.cモジュールが呼ばれ、disp.cモジュールの都合で、disp_sub.c モジュールが呼ばれるという形式である。
これは、つまり、disp_subをdispが規定し、dispを、viewが規定するという、仕様の関係ともなっている。
これらの、基本的な、アプリケーション制御構造によらず、新規に作成する、ライブラリモジュールは、dispならびにdisp_subモジュールからも呼ばれる、という形式である。恩メモリで一度にファイル処理ができるサイズのファイルを対象とする場合には、もう少し、制御構造を容易にすることもできるであるが、それはこれからの講座の動きによることにしよう。
ちなみに、LCCとBCCとの互換性に関しては、いくつかのプログラムで実証済みである。例外が23あるようなので、一部の手直し(一部関数の書き直し)のみで、コンパイルならびに動作させるのが可能であると、言い切ってもいいだろう。他の言語からの移植よりも、かなり容易である。
前回までの説明を覚えているだろうか?
前回までの説明は、ウインドウズプログラムの基本、ともいう部分であり、ウインドウズのアプリケーションプログラムである以上は、ほとんど変わらない部分でもある。23の省略と付け加え以外には、変わらない部分なので、復習をお勧めする。
というわけなので、
WinMain関数、main関数と同様にアプリケーションブートアップの際に呼ばれる関数である。今回はここに、このアプリケーション独自の初期化関数を呼ぶのを付け加える。この手法も、ウインドウズアプリケーションを作成する際には、定石としたいところである。ちなみに、VBならびにVCなどの場合には…
フォームなどを軸としてプログラムを作成するスタイルも存在している。メインフォームのクローズがアプリケーションの終了を意味するタイプのプログラムなどがそうである。このタイプのプログラムにおいて、アプリケーションの立ち上げすぐの段階で初期化関数を呼ぶにふさわしいイベントが、実は3種類以上存在している。
という、訳で、MSの提唱しているアプリケーションの初期化としては、本講座で用いるこの形式ではなく、イベント処理として、初期化を行ってほしいのでは?という思惑が、マニュアル、フリーで提供されているIDE環境[1]などから、におっている。各自研究されんことを。
アプリケーションの初期化、といったが、今回のtextview.exeに関しても、実は、アプリケーションの制御構造とは別の制御構造に基いた、というよりも、アプリケーションの制御とは別のコントロールによる、制御構造を持ったエンジン、描画管理エンジンを設けて、WM_PAINT イベントをその接合部として用いようという、設計上の思想が、背後にはある。これは、ゲームなどのAIエンジン、その他のアプリケーションなどでのエンジン(複数のエンジンが同時に動いている、という状態も考えうる、のではあるが? )を実装することを考えると、有効な手段である。
後はイベント処理である。
イベント処理としては、OPENイベントに対応する。メニュからのOPENイベントに対して、
ファイルダイアログを開き、ファイル名(パス含む)を取得する。
取得した、ファイル名を基にしてファイルを開き、
hwndMainのコンテンツリージョンに、表示してやる。
という実装を行う。
以上は、描画エンジンの変数群、構造体に基いた処理となる。
モジュール訳の理由であるが、
Disp.cはアプリケーションシステム、独自描画エンジンである、offbit処理を行う関数群である。ちなみには、これからの拡張でも、いじくらない予定のモジュールである。[2]
MSの下っ端の妨害により、中断。
メール等による通告連絡話である。
ちなみに、おなじみのエロダイレクトメール、ならびに、インターネットホームページ等での、脅迫と意やらがらせと考えてもいいだろうおなじみの図式は続いている状態である。 なぁ、STV。
大体、ここまで説明すると、残りはAPIの具体的な仕様、入力と出力、並びに処理内容の問題となるといえるだろう。つまりは、マニュアルの勉強の問題である。
という訳で、後は、それぞれの、プログラムの勉強用の本、又は、関数に関する情報元をあたってみてほしい。
LCC付属の、API関連ヘルプなどは、格好のデータベースではあるが、いかんせん、構造を持たない羅列であることから、大変な苦労を伴いそうであるが、…。
定数一覧 今回は省く。
以下にソースコードを掲載する。
viewer.zip LCCでのフォルダーの内容そのままである。ショートファイルネームでアクセスできるフォルダー[3]に展開するとコンパイル可能になる。
MS-OFFICE :word, 初めとしたお馴染みのツールである。著作権等は、自明であるから省く。
EPTREE.exe: C言語の解析に使用。 出力には、編集を加えている。著作権等は、添付されたreadme.txt ファイルから抜粋。
*******************************************************************************
発 行:エケセテネPON
作 者:ふたばわに
連絡先:バグや追加してほしい機能がありましたらメールまたはHPの掲示板にカキコ
:してください。
メール:aab87010@pop13.odn.ne.jp
HP :http://hp.vector.co.jp/authors/VA019049/
*******************************************************************************
End of contents.
[1] IDE環境、VC、VCなどのプログラムの紹介画面で登場しているのが、IDE環境、一般に統合開発環境といわれているプログラム作成用環境である。一般人に言わせると、エディターにチョコチョコ就いているだけではないか? と言われそうであるが、なかなかの、ツールに仕上がりつつある。とはいえ、「TCはえらかった」などと、一言言いたいのも事実である。このようない以下の背後には、VC、VCなどの言語の実態は、コマンドライン方のコンパイラとリンカーならびに関連プログラム群の方で、IDEは単なる、GUI、ユーザーインターフェースであるという事実がある。 近藤敏郎
[2] ちょっとびっくりする、筈、べきというモジュール構造である、というのが正直なところであろう。 近藤敏郎
[3] LCC で作業をしているなら、通常のプログラム・プロジェクトを置いてあるフォルダー又は、その隣など。 近藤敏郎