

MAYA内においてMFCで作成されたウィンドウコントロールを作成する方法
基本的には以下の流れ
・コマンドプラグイン -> MFC DLLの呼び出し -> MFCコントロールの使用
1.MFC DLLの作成
[ファイル] -> [新規作成] -> [プロジェクト] -> [MFC DLL]を選択
(※ここでMFC拡張DLLを選ばないこと)
プロジェクト設定:[プロセッサの定義]:NT_PLUGINを追加しないとダメかも?
2.MFC メンバの記述
通常のdllを作成するのと同じように記述。
AFX_MANAGE_STATE(AfxGetStaticModuleState());を必ず入れること
__declspec(dllexport) void func(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
}
(※ダイアログを作成する場合は
CDialogクラスをサブクラス化。
newで初期化後Createする。
デコンストラクタ上でDestroyWindow()をするとプラグインアンロード時にエラー
PostNcDestroyメッセージを受けた後にdelete thisするのがいい。(Auto CleanUp))
作成したDLLは(mayaフォルダ)\binにおく
3.コマンドプラグインの作成
[ファイル] -> [新規作成] -> [プロジェクト] -> [Maya Plugin]
プロジェクトの設定で2.で作った.libを読み込んでおくこと。
2.で作成した関数を__declspec(dllimport)で読み込んで、doIt内で使用。
●MFCライブラリをmll内で使用できないか?
上記の方法だと別個にdllを作らねばならないので、mll単体で何とかならないのか模索中
Blue MEL Studioで実現しているようなので出来ることは出来るようだ。
afxwin.hを読み込むことは出来るが、コントローラを使用できない。
実体を作成(theApp)しないとダメ?
Win32APIだとインスタンスをどのように得るのか謎。
read comments (0)