次のページ->自由曲面をダイアログに描画してみました。Step-1!

Visual StudioからMFCを使えるプロジェクトを作成してみましょう!

ウイザードから作ってみるとShadeのSDKで何が必要とされているかよくわかります。

1.ウイザードの起動

Visual Studioでファイル->新規作成->プロジェクト->MFC AppWizard(dll) でプロジェクト名
フォルダーはplugin_projectの下をお勧め。MFCはスタティックリンク


2.ファイルの追加

3.プロジェクトの設定

プロジェクト->プロジェクトの設定で
"全ての構成"を選択、設定の対象を一番上のプロジェクト全体


4.ソースファイルの変更

PluginIDや名前を適宜変更

コンパイルして立ち上がるはずです。

5.ダイアログボックスとダイアログクラスの追加


次にダイアログボックスをつくってクラスウイザードを使用し、新しいダイアログクラスを作成して
下記インクルードファイルと
#include "MyDialog.h"

MyDialog dlg;  //ダイアログの作成


dlg.DoModal(); //モーダルダイアログを立ち上げ

これでダイアログが立ち上がります。
ここで難問が発生する場合があります。リンクする段階で"DllMainが重複していると"エラーになる場合があります。
(どのような場合なのか不明)

nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 はすでに LIBCMTD.lib(dllmain.obj) で定義されています
nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) はすでに libcpmtd.lib(delop.obj) で定義されています

これらはどうやらリンクする順番に問題があるようです。
もともとどこにも記述していないDllMainを複数のライブラリーで拾ってしまうのです。
対策としてリンクオブジェクトにStdAfx.objを記述してしまいます。
または、以下のライブラリー明記します。

MFCスタティックリンクデバッグリリース
オブジェクト/ライブラリーNAFXCWD.LIB LIBCMTD.LIBNAFXCW.LIB LIBCMT.LIB
無視するオブジェクトライブラリーLIBCMTD.LIB,LIBCPMTD.LIBLIBCMT.LIB,LIBCPMT.LIB

これらはafx.h内でリンカーコマンドとして記述されているものを強制します。

サンプルコード一式

以上
5/22 Tak Okada
2001 6/7 R5用.dsp変更
#