Программирование для Windows NT (том 2)


Функция WndProc_OnCommand


Эта функция обрабатывает сообщение WM_COMMAND, которое приходит от главного меню приложения.

Когда пользователь выбирает из меню File строку Find App Window, с помощью функции DialogBox на экран выводится диалоговая панель, предназначенная для ввода заголовка окна, которое нужно найти.

Если пользователь ввел заголовок и нажал в диалоговой панели кнопку OK, функция WndProc_OnCommand выполняет поиск окна, вызывая соответствующую функцию из DLL-библиотеки DLLDemo.DLL, исходные тексты которой мы только что рассмотрели.

В листинге мы подготовили два способа подключения DLL-библиотеки - прямой с использованием библиотеки экспорта и динамический.

Первый способ достаточно прост, однако предполагает, что в проект приложения DLLCALL будет включен файл библиотеки экспорта DLLDemo.LIB. Этот файл создается автоматически системой Microsoft Visual C++ при сборке проекта DLL-библиотеки.

Фрагмент кода, использующий прямое подключение, закрыт в листинге 3.4 символами комментария:

if(FindApplicationWindow(szWindowTitle) != NULL)

  MessageBox(NULL, "Application window was found",

    szAppTitle, MB_OK | MB_ICONINFORMATION);

else

  MessageBox(NULL, "Application window was not found",

    szAppTitle, MB_OK | MB_ICONINFORMATION);

В этом фрагменте мы выполняем простой вызов функции FindApplicationWindow, определенной в DLL-библиотеке DLLDemo.DLL. Прототип функции FindApplicationWindow мы поместили в файл dllcall.h.

Второй фрагмент загружает DLL-библиотеку при помощи функции LoadLibrary, а в случае успеха затем получает указатель на функцию FindApplicationWindow. Для получения указателя здесь применяется функция GetProcAddress:

hDLL = LoadLibrary("DLLDEMO.DLL");

if(hDLL != NULL)

{

  GetAppWindow =

   (MYDLLPROC)GetProcAddress(hDLL, "FindApplicationWindow");

  if(GetAppWindow != NULL)

  {

    if(GetAppWindow(szWindowTitle) != NULL)

      MessageBox(NULL, "Application window was found",

        szAppTitle, MB_OK | MB_ICONINFORMATION);




- Начало -  - Назад -  - Вперед -



Книжный магазин