掲示板一覧 - トピック一覧 EA API
EA_GetMenuItemsのC++実装方法について |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | トピック |
|---|---|
| 未登録ゲスト | 投稿日時: 2010-2-23 17:58 |
EA_GetMenuItemsのC++実装方法についてお世話になっております。
題名のとおり、EA_GetMenuItemsをC++で実装する方法について教えていただきたく、質問いたします。 VisualStudio2003にて、C++を用いて、アドインを作成しております。 サンプルを参考に、EA_Connectなどの実装方法は把握できたのですが、object EA_GetMenuItems(EA.Repository Repository, string MenuLocation, string MenuName)をC++で実装するにはどのように引数型を解釈するといいのでしょうか。 現在、DLL作成までは出来たのですが、ダイアログ上で右クリックをすると、『EA_GetMenuItems:パラメータが不正です』とエラーがでる状態です。 string EA_Connect(EA.Repository Repository)の場合、BSTR EA_Connect(IDispatch* Repository)のようですが、EA.RepositoryとIDispatch*の対応はどの資料を参照すると良いでしょうか。 |
|
| tkouno | 投稿日時: 2010-2-24 9:24 |
EA Administrator ![]() ![]() 投稿: 3939 |
Re: EA_GetMenuItemsのC++実装方法についてEnterprise ArchitectのAPIのオブジェクトは、ActiveX COMのオブジェクトですので、IDispatchインターフェースを持っています。
このあたりの詳細は、MicrosoftのサイトやMSDNなどで情報が見つかるのではないかと思います。Googleの検索でも、役に立つ情報が見つかるかもしれません。 ご参考になりましたら幸いです。 |
| 未登録ゲスト | 投稿日時: 2010-2-24 10:02 |
Re: EA_GetMenuItemsのC++実装方法についてすでにMSDNもGoogleも活用してみましたが、残念ながら私が求めるものを適切に表現されたものは無かったので質問いたしております。
もう少し自習したいと思います。 |
|
| tkouno | 投稿日時: 2010-2-24 10:18 |
EA Administrator ![]() ![]() 投稿: 3939 |
Re: EA_GetMenuItemsのC++実装方法についてご返信ありがとうございました。配慮が足らず、申し訳ございませんでした。
Enterprise ArchitectのAPIのCOMオブジェクトは、特別なことは行っていませんので、 通常のCOMオブジェクトと同様の方法で対処可能です。 お力になれず申し訳ございませんでした。 |
| umesan | 投稿日時: 2010-2-24 13:34 |
EA Administrator ![]() ![]() 投稿: 1551 |
Re: EA_GetMenuItemsのC++実装方法についてどこを参照して、下記のようにしたかは思い出せないのですが、
手元の VC6 ソースのEAアドインでは、以下で動作しているようです。 ●idl の記述の抜き出し ●クラスの記述の抜き出し 参考になりましたら幸いです。 |
| 未登録ゲスト | 投稿日時: 2010-2-24 13:56 |
Re: EA_GetMenuItemsのC++実装方法について自己解決しました。
こちらのドキュメントを参照しました。 http://msdn.microsoft.com/ja-jp/library/95357zak.aspx VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord); の場合、DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS) と記述例があり、それに習い 今回の場合 object EA_GetMenuItems(EA.Repository Repository, string MenuLocation, string MenuName) ですので、 関数定義は 『BSTR EA_GetMenuItems(IDispatch* pDisp,BSTR MenuLocation,BSTR MenuName)』 として 『DISP_FUNCTION_ID(HelloWorld, "EA_GetMenuItems", dispidEA_GetMenuItems, EA_GetMenuItems,VT_BSTR, VTS_DISPATCH VTS_BSTR VTS_BSTR)』 と直したところ右クリックしたときに、自分で作成したメニューアイテムを出せるようになりました。 どうやって、公開されているI/Fと作成した関数を関連付けているのかが分からないままでしたので、丁度そのあたりをすっきりすることが出来ました。 これから、MenuClickイベントを使って、渡さたリポジトリからダイアグラムの図などを使用しようと思います。 多分EA.RepositryがIDispatch*型になってしまっているので、またそこでつまずくだろうなと思いますがよろしくお願いいたします。 |
|
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |





