はじめに
前回はフレームウィンドウとビューウィンドウを作成しました。今回はダイアログリサイズについて説明します。
なお、第1回、第2回、第3回ではサンプルプログラムをWin32 Applicationプロジェクトとしてビルドしましたが、今回からATL/WTL AppWizardを使用します。
対象読者
ATL/WTLによるWindowsプログラミングに興味があり、C++やWin32APIによるWindowsプログラミングの基本的な知識がある方。
必要な環境
サンプルはVisual C++ 6.0で作成し、Windows2000で動作確認しています。
ダイアログリサイズ
WTLのCDialogResizeは、その名のとおりダイアログウィンドウのリサイズに関連する機能をサポートします。CDialogResizeをダイアログの基底クラスに追加すると、ダイアログのサイズを変更するたびに、その子コントロールの位置やサイズも自動的に調整されるダイアログを作成することができます。
本稿ではCDialogResizeを使用したサンプルプログラムを作成します。このプログラムは、デスクトップに表示されている任意のInternet Explorerのウィンドウサイズを変更します。

[幅]および[高さ]に値を入力し、リストビューのチェックボックスにチェックを入れて[適用]ボタンを押すと、チェックを入れたIEウィンドウの幅と高さが[幅][高さ]に入力した値に変更されます。なお、このプログラムのリストビューは、デフォルトでソート機能が装備されているWTLの「ソートリストビュー(CSortListViewCtrl)」です。
このサンプルプログラムのウィンドウサイズを変更すると、次のようにコントロールのサイズや位置が自動的に調整されます。

ATL/WTL AppWizard
まず、新規プロジェクトを作成します。今回からATL/WTL AppWizardを利用するので、第1回の手順に従ってATL/WTL AppWizardをインストールし、プロジェクトの新規作成で[ATL/WTL AppWizard]を実行します。なお、本稿ではVisual C++ 6.0用のATL/WTL AppWizardを使用します。
[ATL/WTL AppWizard]を実行すると、ウィザードの1ページ目が表示されます。
ウィザードの1ページ目では以下のアプリケーション形式を選択することができます。
| [SDI Application] | SDI形式のアプリケーション |
| [Multiple Threads SDI] | マルチスレッドで新しいウィンドウを開くことのできる SDI形式のアプリケーション |
| [MDI Application] | MDI形式のアプリケーション |
| [Dialog Based] | モードレスダイアログ形式のアプリケーション ([Modal Dialog]にチェックを入れるとモーダルダイアログ) |
今回はモーダルダイアログをベースとするため、[Dialog Based]を選択して[Modal Dialog]にチェックを入れます。
さらにウィザードの1ページ目では以下のオプションを選択することができます。
| [Enable ActiveX Control Hosting] | ActiveXコントロールを使用可能にする |
| [Create as a COM Server] | COMサーバにする |
| [Generate .CPP Files] | 拡張子.cppファイルを生成する |
| [Add Common Controls Manifest] | コモンコントロールマニフェストを追加する |
[次へ]ボタンを押すとウィザードの2ページ目が表示されます。
今回は1ページ目で[Dialog Based]を選択したのでどのオプションも選択不可ですが、1ページ目で[SDI Application]などを選択すると、以下のオプションを選択することができます。
| [Toolbar] | ツールバーを追加する |
| [Rebar] | リバーを追加する |
| [Command Bar] | コマンドバー(IE風のメニューバー)を追加する |
| [Status Bar] | ステータスバーを追加する |
| [Use a view window] | ビューウィンドウを使う |
| [Host ActiveX Controls] | ActiveXコントロールを使用可能にする |
[Use a view window]を選択した場合は以下のビューウィンドウ形式が選択できます。
| [Generic window] | 通常のウィンドウ |
| [Form (Dialog based)] | フォーム(ダイアログベース) |
| [List Box] | リストボックスコントロール |
| [Edit] | エディットコントロール |
| [List View] | リストビューコントロール |
| [Tree View] | ツリービューコントロール |
| [Rich Edit] | リッチエディットコントロール |
| [HTML Page] | ウェブブラウザコントロール |
最後に[終了]ボタンを押してプロジェクトのスケルトン(雛形)を生成します。


