Добавить библиотеку на панель инструментов

Автор koprus77, 04.04.16, 14:01:03

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

koprus77

Сейчас, чтобы добавить библиотеку на панель инструментов мне нужно создать ее через меню Компаса и "перетянуть" туда все команды моей библиотеки. Как сделать, чтобы библиотека сама создавала себе панель инструментов?

Sabahs

Смотрим пример c:\Program Files\ASCON\KOMPAS-3D V16\SDK\Pascal\Delphi\step12\

koprus77

Чего-то не могу собрать проект, компилятор не может найти DIID_ksPropertyManagerNotify в файле cPropMen.cpp. Что я делаю не так?

Sabahs


koprus77

У меня тот же проект, что и у вас. Когда я пытаюсь его собрать, компилятор не узнает переменную DIID_ksPropertyManagerNotify в файле cPropMen.cpp, которую я нашел только в step12.cpp. Я пытался ее extern-ить в cPropMen.cpp, но это тоже не помогло. Вот я и спрашиваю, с этим примером все в порядке? Если да, то в чем может быть моя ошибка?

Sabahs

Я пишу на Delphi и проблем нет, извиняйте, но на Си я не пишу, нюансов не знаю. Вы и не показываете, что Вы делаете, в картинках покажите, что Вы делаете по шагам и народ Вам поможет.

Дмитрий22

На Си писал раньше. Главное правильно заполнить *.rc файл. Что-то типа такого:

1 BITMAP "acroread11.bmp"
2 BITMAP "acroreadall11.bmp"
3 BITMAP "nastroiki2.bmp"

   1000 MENU 
{
    MENUITEM "Экспорт в PDF текущий документ", 1
   MENUITEM "Экспорт в PDF всех активных документов", 2
   MENUITEM "Настройки", 3

}
STRINGTABLE
{
    1000 "Экспорт в PDF"
}
  1000 RCDATA 
  {
170
160
  }
   1000 ICON "bar1.ico"

STRINGTABLE
{
  3001 "Экспорт в PDF"
}

3001 RCDATA
{
  1
  2
  3
   0xffff
}
  1001 BITMAP "acroread11.bmp"
  1002 BITMAP "acroreadall11.bmp"
  1003 BITMAP "nastroiki2.bmp"
3001 ICON DISCARDABLE "pdfi.ico"


Затем  в cpp файле прописать:

//-------------------------------------------------------------------------------
// Получить идентификаторы инструментальных и компактных панелей
// ---
extern "C" int __export __stdcall LibToolBarId( int barType, // Тип запрашиваемой панелей ( 0 - компактная панель, 1 - простая инструментальная панель )
                                               int index )  // Индекс панели
{
if ( !barType )
return !index ? 2001 : -1;
else
{
        switch (index)
         {
          case 0 : return 3001;
         }
        }
return -1;
}


Библиотека при подключении сама создает панель. Если создать AddIn библиотеку, вообще сама будет загружаться при запуске Компаса.




Сделаем Компас лучше!

Sabahs

DIID_ksPropertyManagerNotify описан в ksAPI7.h, судя по картинке в проект должен быть добавлен.