前回のウィザードで作ったプロジェクトは、まったく取っ掛かりがないので、今度はメニューコマンドにチェックを入れて、プロジェクトを作ってみた。プロジェクト名は、VSPackage2だ。
実行すると、メニュー~ツールに「My Command name」というメニューが増えている。
メニューを選択すると、こんなダイアログが出た。
ダイアログのメッセージを参考に、ソースを検索してみると、VSPackage2Package.csの、MenuItemCallbackが呼ばれている。
今度は、MenuItemCallbackで検索すると、VSPackage2PackageクラスのInitializeメソッド内で、メニューを登録しているようだ。
VSPackage2PackageクラスのVSPackage2Package, Initialize, MenuItemCallbackの3箇所にブレークポイントを張ってみると、メニューをクリックしてから、VSPackage2Packageのインスタンス生成がはじまる。つまり、メニュー登録の処理は、メニューをクリックしてから始まっている??
どうやら、VSPackage2.vsctのXAMLっぽい書式で、メニューに表示する内容とか、メニューに紐付けられたパッケージが記述されているようだ。
要するに、
- Visual Studioの起動時にパッケージが読み込まれ、VSPackage2.vsctで定義された内容を、メインメニューに追加する。
- メニューをクリックしたら、(まだ無ければ)Packageのインスタンスを生成し、Initializeメソッドを呼ぶ。
- Initializeメソッドは、コマンド機能テーブルに、コマンド番号とコールバックを登録する。
- コールバックが呼ばれて、ダイアログが出る。
こんな感じだな。
0 件のコメント:
コメントを投稿