e1337e4016
docs/Kompas3D_SDK/ становится каноническим источником справки КОМПАС SDK и включается в репозиторий (2491 файл, ~14 МБ). HTML-зеркало docs/KOMPAS_SDK_ru-RU/ (~1.4 ГБ, © АСКОН) и генератор tools/build_kompas3d_sdk.py больше не нужны — регенерация не предполагается. - .gitignore: MD-база разблокирована; зеркало остаётся проигнорированным (safety-net на случай повторной локальной выгрузки). - CLAUDE.md / SKILL.md: убраны упоминания регенерации и зеркала. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
194 lines
7.0 KiB
Markdown
194 lines
7.0 KiB
Markdown
---
|
||
title: "LIBRARYENTRY - Головная функция библиотеки"
|
||
type: guide
|
||
api: [api7]
|
||
tags: [guide, api7, libraryentry]
|
||
sources:
|
||
- libraryentry.html
|
||
---
|
||
|
||
*Создание прикладных библиотек > Оформление прикладных библиотек типа DLL > Пример простейшей программы в среде VC++, оформленной в виде библиотеки КОМПАС > Функции *
|
||
|
||
|
||
## LIBRARYENTRY - Головная функция библиотеки
|
||
|
||
Пример...
|
||
Синтаксис:
|
||
```
|
||
extern "C" void far_export pascal LIBRARYENTRY(UINT Comm)
|
||
Входной параметр:
|
||
Сomm - идентификатор выбранной команды.
|
||
```
|
||
Примечание:
|
||
1. При вызове команды библиотеки из меню, панели инструментов или при редактировании библиотечного элемента по двойному нажатию кнопки мыши управление передается этой функции с номером выбранной команды.
|
||
2. Библиотека должна обязательно содержать предопределенную функцию LIBRARYENTRY, которая определяет точку входа в приложение или LibInterfaceNotifyEntry. При обращении к библиотеке именно ей передается управление. Кроме того, ее наличие позволяет системе КОМПАС идентифицировать произвольный DLL-файл как собственное приложение.
|
||
|
||
|
||
## Пример использования функций оформления библиотеки
|
||
|
||
Пример:
|
||
```vb
|
||
#define LIB_ID 1000
|
||
// Определить имя библиотеки /* LIBRARYNAME */
|
||
char* WINAPI LIBRARYNAME()
|
||
return "Простая библиотека";
|
||
}
|
||
// Задать идентификатор ресурсов
|
||
/* LibraryID */
|
||
int WINAPI LIBRARYID()
|
||
{
|
||
return LIB_ID; /*Идентификатор библиотеки равен 1000*/
|
||
}
|
||
// Задать размер окна вывода BITMAP-слайда
|
||
/* LibraryBmpSize */
|
||
long WINAPI LIBRARYBMPSIZE()
|
||
{
|
||
return MAKELONG( 170, 160 );
|
||
}
|
||
// Определить имя файла справочной системы
|
||
/* LibraryHelpFile */
|
||
char WINAPI LIBRARYHELPFILE()
|
||
{
|
||
return "Konstr.hlp";
|
||
}
|
||
// Головная функция библиотеки
|
||
void WINAPI LIBRARYENTRY( UINT Comm )
|
||
{
|
||
switch ( Comm )
|
||
{
|
||
case 1:
|
||
DrawBolt7798;
|
||
break;
|
||
case 2:
|
||
DrawShayba18123;
|
||
break;
|
||
case 3:
|
||
DrawGayka6393;
|
||
break;
|
||
case 4:
|
||
DrawGayka5915;
|
||
break;
|
||
case 5:
|
||
DrawGayka15521;
|
||
break;
|
||
case 6:
|
||
DrawShtift10774;
|
||
break;
|
||
}
|
||
};
|
||
/* LibraryEntry*/
|
||
// Получить идентификаторы панелей
|
||
int WINAPI LibToolBarId (int barType, int index)
|
||
{
|
||
// Компактные панели
|
||
if(!barType)
|
||
{
|
||
return !index ? COMPACT_BAR1 : -1;
|
||
}
|
||
// Инструментальные панели
|
||
else
|
||
{
|
||
switch (index)
|
||
{
|
||
case 0 : return BAR_1;
|
||
case 1 : return BAR_2;
|
||
case 2 : return BAR_3;
|
||
}
|
||
}
|
||
return -1;
|
||
}
|
||
/*LibToolBarId*/
|
||
/*
|
||
// Пример файла ресурсов (rc):
|
||
// С каждой строкой меню будет выводиться соответствующий по номеру команды BITMAP - слайд, иллюстрирующий выбранную операцию.
|
||
//Размер слайда может быть произвольным. Он определяется функцией LIBRARYBMPSIZE.
|
||
//битмапы для отображения в менеджере библиотек (идентификатор равен номеру команды)
|
||
// Определение BITMAP-слайдов для библиотечных функций:
|
||
1 BITMAP "B7798.bmp"
|
||
2 BITMAP "Sh18123.bmp"
|
||
3 BITMAP "G6393.bmp"
|
||
4 BITMAP "G5915.bmp"
|
||
5 BITMAP "G15521.bmp"
|
||
6 BITMAP "Sh10774.bmp"
|
||
// Определение в файле ресурсов меню операций.
|
||
// Примечание: Идентификаторы команд меню должны быть в интервале от 1 до 900.
|
||
// Команда выбранной строчки меню будет передана в функцию LibraryEntry.
|
||
KONSTR_1 MENU
|
||
{
|
||
MENUITEM "Болт ГОСТ 7798-70", 1
|
||
MENUITEM "Шайба ГОСТ 18123-72", 2
|
||
POPUP "ГАЙКИ"
|
||
{
|
||
MENUITEM "Гайка ГОСТ 6393-73", 3
|
||
POPUP "ГАЙКИ ШЕСТИГРАННЫЕ"
|
||
{
|
||
MENUITEM "Гайка ГОСТ 5915-70", 4
|
||
MENUITEM "Гайка ГОСТ 15521-50", 5
|
||
}
|
||
}
|
||
MENUITEM "Штифт ГОСТ 10774-80", 6
|
||
}
|
||
// Определение размеров окна вывода BITMAP-слайда.
|
||
// Примечание: Идентично вызову ф-ии LIBRARYBMPSIZE, но приоритет вызова функции выше.
|
||
KONSTR_1 RCDATA
|
||
{
|
||
170 // Размер по горизонтали
|
||
160 // Размер по вертикали
|
||
}
|
||
// Определение имени библиотеки:
|
||
// Примечание: Идентично вызову ф-ии LIBRARYNAME, но приоритет вызова функции выше.
|
||
STRINGTABLE
|
||
{
|
||
KONSTR_1 "Конструкторская библиотека"
|
||
}
|
||
// Определение имени иконки для минимизированного окна библиотеки:
|
||
KONSTR_1 ICON "konstr.ico"
|
||
// При подключении библиотеки будет создана компактная панель "Конструкторская библиотека", в которую входят
|
||
// инструментальные панели "Болты" и "Шайбы". Также отдельно будет создана инструментальная панель "Гайки".
|
||
// Команда "Штифт ГОСТ 10774-80" не входит ни в одну из панелей.
|
||
// Определение имени панелей:
|
||
STRINGTABLE {
|
||
BAR_1 "Болты"
|
||
BAR_2 "Шайбы"
|
||
BAR_3 "Гайки"
|
||
COMPACT_BAR1 "Конструкторская библиотека"
|
||
}
|
||
#define END_OF_RESOURCE_TABLE 0xffff
|
||
// Определение состава панелей:
|
||
COMPACT_BAR1 RCDATA
|
||
{
|
||
BAR_1
|
||
BAR_2
|
||
END_OF_RESOURCE_TABLE
|
||
}
|
||
BAR_1 RCDATA
|
||
{
|
||
1 // Болт ГОСТ 7798-70
|
||
END_OF_RESOURCE_TABLE
|
||
}
|
||
BAR_2 RCDATA
|
||
{
|
||
2 // Шайба ГОСТ 18123-72
|
||
END_OF_RESOURCE_TABLE
|
||
}
|
||
BAR_3 RCDATA
|
||
{
|
||
3 // Гайка ГОСТ 6393-73
|
||
4 // Гайка ГОСТ 5915-70
|
||
5 // Гайка ГОСТ 15521-50
|
||
END_OF_RESOURCE_TABLE
|
||
}
|
||
// Определение иконок инструментальных панелей:
|
||
BAR_1 ICON DISCARDABLE "bar1.ico"
|
||
BAR_2 ICON DISCARDABLE "bar2.ico"
|
||
BAR_3 ICON DISCARDABLE "bar3.ico"
|
||
*/
|
||
//битмапы для отображения в панелях и в настройках интерфейса ( идентификатор равен номеру команды + 1000 ) размер битмапа должен быть 22х22 пиксела
|
||
1001 BITMAP "B7798.bmp"
|
||
1002 BITMAP "Sh18123.bmp"
|
||
1003 BITMAP "G6393.bmp"
|
||
1004 BITMAP "G5915.bmp"
|
||
1005 BITMAP "G15521.bmp"
|
||
1006 BITMAP "Sh10774.bmp"
|
||
```
|