---
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"
```
