- •4 Створення прикладних mfc-програм в середовищі Windows
- •4.1 Структура мінімальної прикладної mfc-програми
- •4.2 Обробка повідомлень в mfc-програмах
- •4.3 Розробка меню в mfc-програмах
- •4.3.1 Перший спосіб підключення меню в mfc-програмах
- •4.3.2 Другий спосіб підключення меню в mfc-програмах
- •4.3.3 Обробка повідомлень від команд меню
- •4.4 Підключення панелі інструментів і рядка стану
- •4.4.1 Створення панелі інструментів
- •4.4.2 Створення рядка стану
- •4.4.3 Приклад програми
- •4.5.1 Контексти пристроїв в mfc-програмах
- •4.5.2 Використання пера та пензля в mfc-програмах
- •Таблиця 4.3 - Класи графічних об’єктів
- •4.5.4 Рисування стандартних геометричних фігур
- •4.5.5 Приклад програми з векторною графікою
- •4.6 Растрова графіка в mfc-програмах
- •4.7 Програмування діалогу в mfc-програмах
- •4.7.1 Основні етапи створення діалогу в mfc-програмах
- •Таблиця 4.4 - ddx-макроси для найбільш поширених ек
- •4.7.2 Організацію обміну даними з полем введення Edit
- •4.7.3 Організація обміну даними зі списком ListBox
- •4.8 Використання dll-бібліотек в mfc-програмах
- •4.8.1 Призначення бібліотек dll
- •4.8.2 Створення власної бібліотеки dll
- •4.8.3 Підключення функцій бібліотеки dll до виконувального файлу
4.8.3 Підключення функцій бібліотеки dll до виконувального файлу
Перед викликом експортованої функції необхідно завантажити бібліотекуDLLабо за допомогоюAPI-функціїLoadLibrary(), або за допомогою методуAfxLoadLibrary() для MFC-програм. Після успішного завантаження така функція повертає дескриптори об’єктівDLL, за допомогою яких можуть бути викликані експортовані функції динамічної бібліотеки. Для виклику експортованої функції із бібліотекиDLLвикористовуєтьсяAPI-функціяGetProcAddress():
GetProcAddress(HMODULE hModule, LPCSTR lpProcName); .
Підключити функцію із бібліотекиDLLдо виконувального файлу без використання файлу визначень можна, якщо в основному файлі (типу*.cpp) оголосити цю функцію як глобальну імпортовану:
extern “C” _declspec(dllimport); .
Після закінчення роботи з бібліотекою DLL, її необхідно вивантажити за допомогоюAPI-функціїFreeLibrary().
Повністю фрагмент програми основного файлу (типу *.cpp) матиме такий вигляд.
HINSTANCE hDll;
hDll = ::LoadLibrary("MyDll");
if (hDll == NULL)
MessageBox("file MyDll.dll was not find...");
else
{
typedef int (*FUN)(int *,int);
FUN func;
func = (FUN)::GetProcAddress(hDll,"Calculate");
res = (*func)(matrix[m],n);
wsprintf(s,"%d",res);
MessageBox(s,"Result after DLL");
}
::FreeLibrary(hDll); .