Win32 API. Глобальные функции Windows
Страница 10.



LoadLibrary
HMODULE LoadLibrary(LPCTSTR lpFileName);
Возвращаемое значение
В случае успешного завершения работы возвращает дескриптор модуля. В противном случае возвращает нулевое значение. Для получения дополнительной информации по ошибке вызовите функцию GetLastError. В Windows 95 ошибки при вызове данной функции возникают в следующих случаях:
при попытке использовать данную функцию для загрузки модуля, содержащего ресурсы с идентификаторами, значения которых превышают 0x7FFF; при попытке непосредственной загрузки 16-разрядных библиотек динамической компоновки в 32-разрядные приложения; при загрузке библиотек динамической компоновки с версией подсистемы большей, чем 4.0. при попытке вызывать в функции DllMain версии Unicode для функции Win32.
Аргументы
lpFileName - указатель на заканчивающуюся нулем строку, содержащую имя исполняемого модуля (файла .dll или .exe). Указанное имя является исключительно именем файла и не имеет никакого отношения к имени, указанном в файле определения модуля (.def) в выражении LIBRARY.
Описание
Данная функция помещает указанный исполняемый модуль в адресное пространство вызывающего процесса. Если указанный модуль еще не располагается в адресном пространстве вызывающего процесса, система вызывает функцию DllMain данной библиотеки динамической компоновки с аргументом DLL_PROCESS_ATTACH. Если эта функция не возвращает значения TRUE, функция LoadLibrary аварийно завершает свою работу и возвращает нулевое значение. В этом случае система немедленно вызывает ту же самую функцию с аргументом DLL_PROCESS_DETACH для удаления модуля. Поэтому функцию LoadLibrary не рекомендуется вызывать в функции DllMain. Возвращаемый данной функцией дескриптор модуля не является глобальным и не наследуется. Поэтому этот дескриптор не может использоваться другим процессом. Если файл отсутствует в указанном каталоге, функция аварийно завершает свою работу. При задании каталога следует использовать символ \, а не символ /. Если в файле не указано расширение, по умолчанию к его имени добавляется расширение .dll. Для указания того, что данный файл не имеет расширения необходимо закончить его имя точкой. Если файл указан без пути, то при его поиске используется стандартная стратегия поиска файлов:
текущий каталог; системный каталог Windows, путь в который может быть получен с использованием функции GetSystemDirectory; каталог Windows, путь в который может быть получен с использованием функции GetWindowsDirectory; каталоги, перечисленные в переменной PATH.
В Windows NT/ 2000 после поиска в системном каталоге 32-разрядной Windows, путь в который может быть получен с использованием функции GetSystemDirectory и имеющий имя SYSTEM32, производится поиск в системном директории 16-разрядной Windows, путь в который не может быть получен с использованием какой-либо функции, и имеющий имя SYSTEM.
MessageBox
int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
Возвращаемое значение
Нулевое, если в системе недостаточно оперативной памяти для создания окна сообщения. В случае успешного завершения функции возвращаемая величина может принимать одно из перечисленных ниже значений:
IDABORT - была нажата кнопка Abort (Прекращение);
IDCANCEL - была нажата кнопка Cancel (Отмена);
IDIGNORE - была нажата кнопка Ignore (Пропуск);
IDNO - была нажата кнопка No (Нет);
IDOK - была нажата кнопка OK;
IDRETRY - была нажата кнопка Retry (Повторение);
IDYES - была нажата кнопка Yes (Да).
Если окно сообщения имеет кнопку Cancel (Отмена), функция возвращает значение IDCANCEL независимо от того, была ли нажата кнопка Cancel (Отмена) или клавиша . Если окно сообщения не имеет кнопки Cancel (Отмена), то нажатие клавиши не приводит ни к каким результатам.
Аргументы
hWnd - определяет окно, являющееся собственником создаваемого окна сообщения. Если этот аргумент имеет значение NULL, то создаваемое окно сообщения не имеет собственника.
lpText - указатель на текстовую строку, завершающуюся нулевым символом, содержащую выводимое сообщение.
lpCaption - указатель на текстовую строку, завершающуюся нулевым символом, используемую в качестве заголовка диалогового окна. Если этот аргумент имеет значение NULL, то создаваемое окно содержит стандартный заголовок Error (Ошибка).
uType - определяет комбинацию битовых флагов, определяющих содержимое и поведение диалогового окна. Этот аргумент может представлять собой комбинацию флагов из приведенных ниже групп (не более одного из каждой группы).
Флаги, определяющие состав кнопок окна сообщения:
      MB_ABORTRETRYIGNORE - окно сообщения содержит три кнопки: Abort (Прекращение), Retry (Повторение) и Ignore (Пропуск);
      MB_OK - окно сообщения содержит одну кнопку OK. Это установка по умолчанию;
      MB_OKCANCEL - окно сообщения содержит две кнопки: OK и Cancel (Отмена).
      MB_RETRYCANCEL - окно сообщения содержит две кнопки: Retry (Повторение) и Cancel (Отмена);
      MB_YESNO - окно сообщения содержит две кнопки: Yes (Да) и No (Нет);
      MB_YESNOCANCEL - окно сообщения содержит три кнопки: Yes (Да), No (Нет) и Cancel (Отмена).
Флаги, определяющие значок, выводимый в окне сообщения:
      MB_ICONEXCLAMATION, MB_ICONWARNING - в окне сообщения появляется восклицательный знак;
      MB_ICONINFORMATION, MB_ICONASTERISK - в окне сообщения появляется прописная буква i, помещенная в кружок;
      MB_ICONQUESTION - в окне сообщения появляется вопросительный знак;
      MB_ICONSTOP, MB_ICONERROR, MB_ICONHAND - в окне сообщения появляется сигнал остановки.
Флаги, задающие кнопку, используемую по умолчанию.
      MB_DEFBUTTON1 - по умолчанию используется первая кнопка. Если в данном аргументе не установлен флаг этой группы, то кнопкой по умолчанию является первая кнопка;
      MB_DEFBUTTON2 - по умолчанию используется вторая кнопка;
      MB_DEFBUTTON3 - по умолчанию используется третья кнопка;
      MB_DEFBUTTON4 - по умолчанию используется четвертая кнопка.
Флаги, определяющие модальность диалогового окна.
      MB_APPLMODAL - указывает на то, что пользователь должен закончить работу с окном сообщения прежде, чем он получит возможность продолжить работу с окном, определенным в аргументе hWnd. В зависимости от иерархии окон в приложении пользователь может иметь возможность продолжить работу с другими окнами данного потока. Все дочерние окна, принадлежащие родительскому окну, становятся недоступными, но может быть продолжена работа со вспомогательными окнами. Этот режим устанавливается в том случае, если в данном аргументе не установлен флаг этой группы.
      MB_SYSTEMMODAL - действует аналогично флагу MB_APPLMODAL за тем исключением, что окно сообщения получает стиль WS_EX_TOPMOST. Данный флаг используется для извещения пользователя о серьезных ошибках, требующих его немедленной реакции (например, выход за границы памяти). Этот флаг не оказывает никакого влияния на возможности пользователя по работе с окнами, не связанными с окном, определенным в аргументе hWnd.
      MB_TASKMODAL - действует аналогично флагу MB_APPLMODAL за тем исключением, что в том случае, если аргумент hWnd имеет нулевое значение, то пользователь теряет возможность доступа ко всем основным и дочерним окнам, принадлежащим данному потоку. Данный флаг используется в том случае, когда приложение или библиотека не имеют дескриптора окна, но должны прекратить доступ ко всем окнам данного потока, не препятствуя работе других потоков.
Кроме перечисленных выше флагов, объединенных в группы, пользователь может использовать следующие флаги:
      MB_DEFAULT_DESKTOP_ONLY - рабочий стол, получивший фокус ввода должен быть рабочим столом, выбираемым по умолчанию. В противном случае функция завершается с ошибкой. Под рабочим столом, выбираемым по умолчанию, понимается рабочий стол, появляющийся после загрузки системы;
      MB_HELP - добавляет в окно сообщения кнопку Help (Справка). Нажатие кнопки Help (Справка) или клавиши отмечает соответствующее событие;
      MB_RIGHT - текст в окне сообщения выравнивается по правому краю;
      MB_RTLREADING - выводит текст сообщения и заголовка справа налево, как это принято в еврейском и арабском языках;
      MB_SETFOREGROUND - делает активным поток, создающий окно сообщения, и устанавливает в него фокус ввода. Для этого система вызывает для окна сообщения функцию SetForegroundWindow;
      MB_TOPMOST - окно сообщения создается с флагом WS_EX_TOPMOST;
      MB_SERVICE_NOTIFICATION - специфический флаг для Windows NT, означающий, что данное окно вызывает служба, извещая пользователя о событии. Данная функция отображает окно сообщения на текущем активном рабочем столе даже в том случае, если на данном компьютере не зарегистрирован ни один пользователь. Если установлен данный флаг, то аргумент hWnd должен иметь нулевое значение. Это означает, что окно сообщения может появиться на другом рабочем столе, а не на том, которому принадлежит окно, определяемое аргументом hWnd.
В Windows NT версии 4.0 значение MB_SERVICE_NOTIFICATION изменено. Новые и старые значения описаны в файле WinUser.h. Операционная система Windows NT 4.0 обеспечивает совместимость снизу вверх для существующих служб, преобразуя старые значения в новые, при работе с функциями MessageBox и MessageBoxEx. Это преобразование производится только для тех исполнительных файлов, которые имеют номер версии, установленный компоновщиком, меньший, чем 4.0.
MB_SERVICE_NOTIFICATION_NT3X - специфический флаг для Windows NT, означающий значение MB_SERVICE_NOTIFICATION, используемое в Windows NT версии 3.51.
Описание
Функция MessageBox создает, отображает и осуществляет интерфейс с окном сообщения. Окно сообщения состоит из определяемого приложением текста, заголовка, предопределенного значка и набора кнопок. При использовании модального системного окна сообщения для вывода информации о том, что в системе не хватает памяти, значения аргументов lpText и lpCaption нельзя загружать из файла ресурсов (что разрушает всю концепцию использования строковых ресурсов), поскольку в данном случае попытка загрузить ресурс может закончиться безрезультатно. Если приложение вызывает функцию MessageBox и указывает в аргументе uType комбинацию флагов MB_ICONHAND и MB_SYSTEMMODAL, операционная система отображает окно сообщения вне зависимости от того, имеется ли в системе свободная память. При данной комбинации флагов операционная система ограничивает размер сообщения тремя строками. Система не производит автоматического разбиения текста на строки. Для этого необходимо использовать управляющие символы перевода строки. Если окно сообщения создается в классе диалогового окна, то в качестве аргумента hWnd следует использовать дескриптор диалогового окна. В качестве данного аргумента нельзя использовать дескриптор дочернего окна, например дескриптор окна элемента управления. В Windows 95 максимальное число дескрипторов окон составляет 16 384.
 
« Предыдущая статья   Следующая статья »