カテゴリー

アーカイブ






MAYA API

Posted by あきを in 日記
04 4th, 2006

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だとインスタンスをどのように得るのか謎。