MAYA API

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

Comment Form

About this blog

Computer Programming, Computer Graphics, Python, Cooking, my family and Vim Editor.

mail: info at redms dot com

Photostream

    InuitBarMomizi
  • あきを: フリーズなんて一回もしたことないね〜 safariは結構速いよ [...]
  • hossy: お~。箱白いんだね~。 速さはどーなんだろ。 こっちはちょいちょ [...]
  • 妻より: 今思い出してもあれは拷問でした。 一度でも「元から無痛分娩か帝王切 [...]
  • あきを: S式支援は普通に使ってます とかとかとか あとはコピペは使うようにな [...]
  • mynz: 自分も Scheme でコードを書くときは emacs を使用しているけど、元々素の状 [...]

TumblrRSS

tumblr

カテゴリー

アーカイブ