Если нужно узнать адрес, начиная с которого хранятся в памяти функции графического интерфейса, можно запросить его дескриптор при помощи вызова GetModul eHandl е( "GDI32. dl Г). При этом, скорее всего, будет получен адрес xbf f30000, так как по умолчанию системная библиотека отображается всегда на одно и то же закрепленное за ней место виртуального адресного пространства приложения. Если параметр функции равен NULL, вызов GetModul eHandl e(NULL) возвращает дескриптор текущего процесса, то есть того, поток которого сейчас выполняется.
Создание простейшего приложения
Существует ряд оконных классов, зарегистрированных операционной системой. Так, изображение кнопки в окне, выводимом функцией MessageBoxC), является окном класса Button, пункт меню является окном класса #32768, а рабочий стол - окном класса#32769. Также следует помнить, что оконный класс, зарегистрированный приложением, может использоваться для создания окон другими приложениями. Для этого при регистрации должен быть указан стиль CS_GLOBALCLASS, а соответствующая функция регистрации должна быть реализована в DLL-библиотеке.
Окно, созданное в одном приложении, доступно из других приложений, что позволяет окнам разных приложений обмениваться сообщениями.
Операционная система может возвратить программе дескриптор HWND любого открытого в текущий момент времени окна. Для этого необходимо вызвать функцию HWND FindWindow(char *lpClassName, char *lpWindowName).
Этой функции передаются имя оконного класса (или его целочисленный идентификатор) и название, выведенное в заголовке окна. Вместо текста заголовка можно передать NULL, тогда поиск будет выполняться только по классу. Если критерию отбора удовлетворяют несколько окон, то возвращается дескриптор самого верхнего окна.
Обмен сообщениями Сообщение в окно обычно посылается в результате тех или иных действий пользователя. Но и приложение может послать сообщение в окно. Прикладному программисту для этого предоставлены следующие функции:
BOOL SendMessage (HWND hWnd. UINT Msg. WPARAM wParam. LPARAM lParam); BOOL PostMessage (HWND hWnd. UINT Msg. WPARAM wParam. LPARAM lParam);