Add-in для подключения MSDN .NET к Visual C++ПрологПредлагаемый add-in есть не что иное, как макрос Игоря Соловьёва, самым тупым образом перенесённый на C++. В своё время, после прочтения статьи, установки макроса в VC++ и испробования его в деле, мне пришла в голову мысль оформить этот код в виде add-in"а. Формальным поводом послужили отсутствие автоматического встраивания в IDE и некоторая неспешность отклика. На самом деле, конечно основным мотивом было желание "побаловаться" с add-in"остроеним. Написать тривиальный add-in для обработки горячей клавиши в Visual C++ 6 не составляет особого труда, ибо писать ничего и не придётся (кроме непосредственно кода обработчика, естественно). Ниже представлено пошаговое описание процесса создания такого ad-in"а на примере add-in"а для подключения MSDN .NET к Visual C++ 6. ОписаниеВизардПервым делом надо создать новый проект, выбрав тип проекта "DevStudio Add-in Wizard". Заполнить единственную форму визарда (для таких простых случаев, как рассматриваемый, можно снять флаги "Provides a toolbar" и "Responds to Developer Studio events"). Нажать кнопку "Finish", и всё - add-in готов. Осталось только добавить функциональность. Обработчик командыВизард сгенерировал класс CCommands, поддерживающий интерфейс ICommands с единственным методом DotNetMsdnCommandMethod (в случае проекта с именем DotNetMsdn). Впрочем, имя метода можно изменить вручную, что я и сделал. Теперь это ShowDotNetHelp. Теперь достаточно открыть Commands.cpp найти реализацию метода и вставить туда нужный Вам код. Смеха для можете сравнить этот код с оригинальным кодом макроса. #import - это сила. ;)
Назначение быстрой клавиши
Я не нашёл ничего умнее, чем вставить этот вызов в CDSAddIn::OnConnection - метод кокласса add-in"а (не перепутайте с коклассом команд CCommands) - что, конечно, далеко не самое удачное решение, так как в этом случае назначение "Ctrl+F1" происходит при каждом старте Visual Studio, невзирая на то, что пользователь, возможно, уже переназначил выполнение команды на другую, более удобную для себя клавишу. Если кто-нибудь найдёт изящное решение этой проблемы, пожалуйста, поделитесь со мной. Добавление кода для саморегистрацииВ файле DotNetMsdn.cpp (в случае проекта с именем DotNetMsdn) находится небезызвестная функция DllRegisterServer. Она идеально подходит для добавления кода, необходимого для регистрации add-in"а.
Конечно, отсутствие в DllUnregisterServer удаления ключа реестра, отвечающего за регистрацию add-in"а, есть следствие непростительного раздолбайства (каюсь, грешен), но ведь и исходники доступны - исправляйте, я потом с удовольствием скачаю обезглюченную версию. ;) Инструкция по установкеПрограмма установки сделана с помощью популярного NSIS от NullSoft"а. Для инсталляции add-in"а достаточно её запустить и несколько раз нажать ENTER. |