Vew-リストCTを実装(No3)

三種類の各フォ-ムビュ-に搭載しました

プロパテイは下記の様に設定します

リストコントロールに必要な関数とは?

スタティックエリヤに確保する

たかがリストを搭載するだけでこんなに説明が必要なんです、だから非常に大変なんですまだまだこれからが非常に多くの関係を理解しなければダメなんです、高級言語とは異なり何もかにも自分で理解してやらねばならないこれがMFCのVC++なんです、貴方がいやでも絶対に必要なスキルなんです、簡単にコントロ-ルを搭載出来ても貴方が応用できなければ何も意味がないんです頑張って是非付いてきてマスタ-してください。

最低限必要な関数を搭載しています

これらの面倒くさい手順はリリ-ス・バ-ジョンへ移行する為とビュ-を切り替える為。それと例外を防止する手つずきなのです。皆さんがこれらの事をやらないから最後にどうにもならなくなり万歳するのです、この辺を理解出来ればシステムは安全に起動される様になりデバッガのサポ-とはいらないアプリケ-ションが完成するんですかね!でも難しく面倒くさいですよ!本当にね!

その他のフォ-ムビュ-にも搭載

これらの各処理機能を搭載すればどんなにフォ-ムビュ-を切り替えても何ら問題は起きないし例外も発生しない、此処のフォ-ムビュ-は単独で隔離されて安全に起動する準備が出来るのです、もう一度言いますがこれが最低限考慮されたコントロ-ルでありビュ-の切り替えを行う事が準備なのです。

これだけの面倒くさい事をお伝えしなければならない為に書籍なんかではどうにもならないのが理解できますか?HPだから貴方に御説明出来るのです、マスタ-してください、誰にも真似の出来ない素晴らしいアプリケ-ションを開発してください私は期待しています、この講座はまだ始まったばかりです着いてきて来て下さい、私は貴方を決して裏切らないです。

フォ-ムビュ-CPPファイルの内容

メインフレ-ムが知るべき事とは何か?

紙芝居は画像の裏に伝える言葉が記載してある、このフォ-ムビュ-が物語なら当然シナリオ進捗をしているのはメインフォ-ムでありシナリオの状況を把握している必要性がある。どの様にメッセ-ジを伝え又受け取るかの方法うを一番最初に十分考慮すべきだ、そこで今回は変数を準備する郵便箱の様な物だと想像すれば良い、どこに準備すれば良いのか?当然メインフレ-ムとフォ-ムビュ-との共通クラスはドクメントクラスである。もうすでにこの郵便箱からメッセ-ジを受け取る準備は完了している。

最初は単純に考えよう

1:要求したフレームはどこのクラスか何か

2」そのクラスは左窓・右窓のどちらからか?

3:フォームビュ-を作成したのなら、そのフレ-ムの更新を作成したフォ- ムビュ-に指示をする。

4:データの変更ならば新しいデ-タをフォ-ムビュ-に与える。

5:次に行なうシナリオに必要なフォ-ムビュ-は何かを判断。

簡単に考えてもこれだけの処理が必要です。これらの仕組みを仕込んで始めてビュ-の切り替えが行えるのです。

コントロ-ルリスト用変数を準備

ドキュメントクラスヘッダ-にスタティックエリヤとして確保する。

この段階ではまだ表示されません

正しく初期化は実行されています

ウインドウズからOnDrawItem()が呼ばれて始めて表示が出来ます、現在ウインドズシステムがコントロ-ルには表示する物が何もない物と判断しています、この辺から皆さんが悩み始めるのですがね!ちなみに実行すると初期化関数のブレークポイントでは正常にブレ-クが掛かり止まります。実際このOnDrawItem()関数で表示処理が行われます(この関数が呼ばれて始めて表示処理が出来ます)。関数内では現在ブレ-ク(デファルト状態では表示はされない)が掛かりません。

ウインドウズから呼ばれて来ました

やっとOnDrawItemがウインドウズから呼び出されてブレ-クが掛かりました!これで皆さんご期待の表示処理に移行できますがこれからが非常に大変だと言う事を認識して置いて下さい!

リストコントロ-ルは表示するアイテムが存在して始めて表示される物です、アイテム数が0の場合OnDrawItemをWindowsか呼び出す事は有りません、即ち表示する必要が無いと判断しているからです、これが疑似タスクの動き方です時分割でWindowsは他のアプリケ-ションを含めて均等に回ろうとしますですから呼ばれた関数は最短時間で処理を完了して権利をウインドウズに返却する必要があるんです。


表示するのに当たって注意する事

赤枠内は四角で分割されている

赤枠内の空白部分は高さは既定の高さ又幅は初期化の値で分割されているがこの枠内には通常のウインドウズに対しての描画方法と何ら変わらない。丸を書こうが塗りつぶそうが・四角形及び斜めに線を引こうが全く関係が無い、そう!自由自在に行う事が出来ます。

コントロ-ルリストであるから四角の形状情報が取得できる事だけが機能であり、データは区画管理に似た状況でデータの取得は可能ですがかなり問題がある為に一時的な比較には問題がないがそれ以外では使うべきでは無い。