2014年6月20日金曜日

Visual Studio 2013 SDK で拡張機能を作りたい その3

前回のウィザードで作ったプロジェクトは、まったく取っ掛かりがないので、今度はメニューコマンドにチェックを入れて、プロジェクトを作ってみた。プロジェクト名は、VSPackage2だ。

実行すると、メニュー~ツールに「My Command name」というメニューが増えている。

メニューを選択すると、こんなダイアログが出た。

ダイアログのメッセージを参考に、ソースを検索してみると、VSPackage2Package.csの、MenuItemCallbackが呼ばれている。
今度は、MenuItemCallbackで検索すると、VSPackage2PackageクラスのInitializeメソッド内で、メニューを登録しているようだ。

VSPackage2PackageクラスのVSPackage2Package, Initialize, MenuItemCallbackの3箇所にブレークポイントを張ってみると、メニューをクリックしてから、VSPackage2Packageのインスタンス生成がはじまる。つまり、メニュー登録の処理は、メニューをクリックしてから始まっている??

どうやら、VSPackage2.vsctのXAMLっぽい書式で、メニューに表示する内容とか、メニューに紐付けられたパッケージが記述されているようだ。

要するに、

  1. Visual Studioの起動時にパッケージが読み込まれ、VSPackage2.vsctで定義された内容を、メインメニューに追加する。
  2. メニューをクリックしたら、(まだ無ければ)Packageのインスタンスを生成し、Initializeメソッドを呼ぶ。
  3. Initializeメソッドは、コマンド機能テーブルに、コマンド番号とコールバックを登録する。
  4. コールバックが呼ばれて、ダイアログが出る。

こんな感じだな。

0 件のコメント:

コメントを投稿