0

我有一个 VS2012 扩展包,它使用DynamicItemStart命令标志向菜单添加命令,如 MSDN 中所述。这些命令的工作方式有点像内置的外部工具工具,所以确切的集合是由插件用户配置的,而不是由我定义的。一个DynamicItemStart命令似乎最适合这个。

根据示例,我添加了一堆项目,隐藏它们,然后使用BeforeQueryStatus回调控制可见性。这一切似乎都在工作:菜单项完全按照我的预期出现,您可以通过用鼠标单击它们来调用它们。我的包也有一个固定的命令,这也有效。

我的非动态命令也出现在工具|选项,键盘部分的命令列表中,因此您可以为其创建键盘快捷键。(您也可以从立即窗口中调用它,它似乎使用相同的列表。)但是我的动态命令没有出现!我期待它们以某种自动生成的列表的形式出现,例如Tools.ExternalCommand.

DynamicItemStart命令不能以这种方式调用吗?

4

1 回答 1

1

如果遇到此问题的其他人发现此问题...

DynamicItemStart据我所知,命令似乎没有名称。文档说它们用于 MRU 或窗口列表,所以也许没有人认为有人需要命名它们。

因此,出于我的目的,我刚刚创建了 100 个占位符命令 ( Command00... Command99),并为每个命令设置了DynamicVisibilityTextChanges命令标志。(我现在有一个 1,237 行的 VSCT 文件。)

然后在运行时我使用BeforeQueryStatus回调来隐藏未使用的项目,显示使用的项目,并为菜单设置它们的(用户分配的)标题。我的 UI 会小心地显示哪个命令对应于每个分配的操作,并保持映射完整,因此用户在为每个操作分配键盘快捷键时知道要使用 100 个命令名称中的哪一个。

这并不理想,并且在 Visual Studio 中有点令人讨厌的限制。但看起来它会充分发挥作用。

于 2013-03-21T00:57:43.460 回答