Files
kompas3d-mcp/docs/Kompas3D_SDK/guides/libraryentry.md
T
mikhail e1337e4016 feat(sdk-docs): MD-база знаний SDK — в репозиторий; генератор и зеркало убраны
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>
2026-05-26 20:00:05 +03:00

194 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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"
```