MFCからWTLへ(2) ウィザードの罠(ダイアログ編)
公開日| 2009年05月05日 | コメントはまだありません。
カテゴリー:WTL |
概要 : WTLの基本的な特徴について、下記の関連記事で書きました。それでは、次にWTLを使って簡単なダイアログ画面を作成してみたいと思います。
表題に書かれていますが、ここでは、MFCとの違いを記載したいので、MFCとのウィザードでの違いについて記載したいと思います。
利用した環境は、以下の記事で作成した環境を使います。
WTLのウィザードを使ってダイアログを作ってみましょう
新規のプロジェクトを作成
[ ファイル ] - [ 新規作成 ] - [ プロジェクト ] で以下の画面が表示されます。
"プロジェクト名"に適当な名前(ここでは、例として"dlgtest"とします。)を設定し、"OK"ボタンをクリックします。
プロジェクト詳細を設定

"次へ"ボタンをクリックします。

ここで、
画面左の"アプリケーションの種類"で "ダイアログベース"を選択します。
"モーダルダイアログ"にチェック入れます。
画面右の"プロジェクトのオプション"で ".CPPファイル"にチェック入れます。(MFCのウィザードで吐き出されるCPPと比較するためにCPPファイルを作成します)
"完了"ボタンをクリックします。
例として"dlgtest"のプロジェクト名であれば、以下のファイルが作成されたはずです。
| WTL | MFC |
|
res/dlgtest.ico dlgtest.cpp dlgtest.h dlgtest.rc MainDlg.cpp MainDlg.h resource.h stdafx.cpp stdafx.h |
res/dlgtest.ico res/dlgtest.manifest res/dlgtest.rc2 dlgtest.cpp dlgtest.h dlgtest.rc dlgtestDlg.cpp dlgtestDlg.h Resource.h stdafx.cpp stdafx.h |
多少のリソース用のファイルの持ち方は異なりますが、ほぼ、1対1の対応したファイルが作成されます。
ウィザードの罠(1)
(罠というほどのものでもありませんが、とりあえずタイトルに従いまして・・・)
ここに至る前に、ウィザードの最後に、"完了"ボタンをクリックした時、以下のエラーが出力され、 自動的にプロジェクトを読み込めないことがあります。
WTLのウィザードセットアップのスクリプトファイル(setupxx.js)を以下のように1行追加します。 ※スクリプトファイルは、
setupxx.js の xx には、
90 : VC++90用 は、正式には、まだないようです。個別には、色々なサイトで提供されています。 このサイトでも提供しています。
setup90.jsの124行目あたりの以下の行に1行追加します。
上記を変更し、保存した後、ダブルクリックで、再度、セットアップします。
その後のウィザードでは、上記のエラーはでないと思います。
(罠というほどのものでもありませんが、とりあえずタイトルに従いまして・・・)
ここに至る前に、ウィザードの最後に、"完了"ボタンをクリックした時、以下のエラーが出力され、 自動的にプロジェクトを読み込めないことがあります。
クラスはオートメーションをサポートしていません。
これは、このウィザードスクリプトが、Expressでのウィザードであることを正しく認識していないために
発生します。WTLのウィザードセットアップのスクリプトファイル(setupxx.js)を以下のように1行追加します。 ※スクリプトファイルは、
-
%WTLインストールディレクトリ%\AppWiz\setupxx.js
setupxx.js の xx には、
-
70:VC++70用
71:VC++71用
80:VC++80用
90 : VC++90用 は、正式には、まだないようです。個別には、色々なサイトで提供されています。 このサイトでも提供しています。
setup90.jsの124行目あたりの以下の行に1行追加します。
1 2 3 | fileDest.WriteLine("Param=\"NO_RESOURCE_EDITOR = 1\""); // 以下の行を追加します。 fileDest.WriteLine("Param=\"VC_EXPRESS = 1\""); |
その後のウィザードでは、上記のエラーはでないと思います。
これをコンパイルして実行してみると、以下のような単純な画面が表示されます。


