Алгоритмизации
Скачать 1.15 Mb.
|
СообщениеWM_DESTROYПользователь вызывает это сообщение, если щелкнет кнопку закрытия окна (выберет Close из системного меню программы, или нажмет <Alt> + <F4>). Программа на это сообщение вызывает функцию PostQuitMessage(0); которая ставит сообщение WM_QUIT в очередь. Функция GetMessage возвращает ненулевое значение при любом сообщении, полученном из очереди, кроме WM_QUIT, при котором она возвращает значение 0, что Приложение6 заставляет WinMainпрервать цикл обработки сообщений и выйти в систему, закончив программу. ПолучениеописателяконтекстаустройстваВ простейшем случае описатель контекста (контекст) может быть получен с помощью функций: HDC GetDC(HWND hwnd); HDC GetWindowDC(HWND hwnd); HDC GetDCEx(HWND hwnd, HRGN hrgnClip, DWORD dwFlags); Функции GetDC и GetDCEx возвращают контекст клиентской области окна (без заголовка, рамки и пр.). Контекст всего окна может быть получен с помощью функций GetWindowDCили GetDCExс соответствующим флагом: DCX_WINDOW– дать контекст всего окна, включая системную область; DCX_PARENTCLIP– использовать видимую часть родительского окна; DCX_CLIPCHILDREN– исключить подчиненные окна; DCX_NORESETATTRS– не сбрасывать состояние контекста при его освобождении и т.д. При этом поведение функций зависит также от некоторых установок стиля оконного класса: CS_CLASSDC– использовать единственный разделяемый контекст для всех окон данного класса; CS_OWNDC– использовать собственный контекст для каждого экземпляра окна; CS_PARENTDC– использовать контекст и регион отсечения родительского окна и т.д. Кроме получения контекста существующего окна можно создавать новые контексты, связанные с определенным устройством. Функции HDC CreateDC(LPCTSTR lpszDriver, LPCTSTR lpszDevice, LPCTSTR lpszOutput, CONST DEVMODE* lpInitData); HDC CreateCompatibleDC(HDC hPrimDC); создают новый контекст, связанный с указанным устройством (CreateDC) или совместимым с известным контекстом (CreateCompatibleDC). Во втором случае если «образцовый» контекст не задан, то создается контекст в памяти(memorycontext), совместимый с текущими установками экрана. Возвращаемое значение – описатель контекста или NULL – в случае ошибки. Параметры: lpszDriver– может быть DISPLAYдля контекстов, связанных с экраном, и NULL для всех других устройств; lpszDevice– логическое имя устройства в системе; lpszOutput– имя устройства в файловой системе (в Win32 – NULL); Приложение6 lpInitData– указатель на структуру DEVMODEс инициирующими данными для устройства, NULL– настройки по умолчанию; hPrimDC– «образцовый» контекст, с которым будет совместим вновь создаваемый, если NULL – экран с текущими настройками. По окончании работы с контекстом он должен быть освобожден (закрыт). Для контекстов, полученных с помощью функций Get..., используется функция int ReleaseDC(HWND hwnd, HDC hdc); которая освобождает «общие» и оконные контексты. Для контекстов, созданных с помощью функций Create..., используется функция int DeleteDC(HDC hdc); возвращает 1 – при успешном завершении, 0 – при ошибке. Многие характеристики действующего контекста могут быть получены с помощью функцииGetDeviceCaps(), принимающей в качестве аргумента описатель контекста и индекс (номер) интересующего параметра (описываются системными константами) и возвращающей значение этого параметра. |