русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Инициализация программы

В файле MDIDEMO.С WinMain начинается с регистрации классов окна для главного окна и двух дочерних окон. Их оконные процедуры называются FrameWndProc, HelloWndProc и RectWndProc. Как правило, с каждым из этих трех классов связан свой значок. Для простоты в программе и для главного и для дочерних окон использован стандартный значок IDI_APPLICATION. Обратите внимание, что в поле hbrBackground структуры WNDCLASSEX для класса главного окна задан системный цвет COLOR_APPWORKSPACE. Однако, когда главное окно появляется на экране первым, одинаковый цвет смотрится несколько лучше.

В поле lpszMenuName заносится значение NULL для каждого из трех классов окна. Для классов окна дочерних окон Hello и Rect это нормально. Для главного окна это сделано для того, чтобы указать описатель меню при создании главного окна в функции CreateWindow.

Далее WinMain использует функцию LoadMenu для загрузки трех меню и сохраняет их описатели в глобальных переменных. Три вызова функции GetSubMenu позволяют получить описатели подменю Window, в которому будет добавлен список окон документов. Они также запоминаются в глобальных переменных. Функция LoadAccelerators загружает таблицу быстрых клавиш.

Вызов функции CreateWindow в WinMain создает главное окно. При обработке в FrameWndProc сообщения WM_CREATE главное окно создает окно - администратор. При этом еще раз вызывается функция CreateWindow. Класс окна задается как MDICLIENT, который представляет собой уже зарегистрированный в системе класс для окна - MDI. Последний параметр функции CreateWindow должен быть указателем на структуру типа CLIENTCREATESTRUCT. В этой структуре имеется два поля:

hWindowMenu является описателем подменю, в котором появится список документов. В программе MDIDEMO это описатель hMenuInitWindow, полученный в WinMain. Позже мы узнаем, как изменить меню.

idFirstChild является идентификатором меню , относящимся к первому окну документа в списке документов.

Он просто равен IDM_FIRSTCHILD.

Вернемся к WinMain. Программа MDIDEMO выводит на экран только что созданное главное окно и входит в цикл обработки сообщений. Этот цикл обработки сообщений немного отличается от обычного: после получения сообщения из очереди при помощи функции GetMessage программа MDI передает сообщение функции TranslateMDISysAccel (функции TranslateAccelerator, если, как и в программе MDIDEMO, в программе также имеются быстрые клавиши меню ).

Функция TranslateMDISysAccel преобразует любые комбинации клавиш, которые могут соответствовать специальным быстрым клавишам MDI (<Ctrl>+<F6>), в сообщение WM_SYSCOMMAND. Если одна из функций TranslateMDISysAccel или TranslateAccelerator возвращает TRUE (означает, что сообщение было преобразовано одной из этих функций ), то вызова функции TranslateMessage и функции DispatchMessage не происходит.

Обратите внимание на два описателя окон, передаваемые функциям TranslateMDISysAccel и TranslateAccelerator: соответственно hwndClient и hwndFrame. Функция WinMain получает описатель окна hwndClient, используя вызов функции GetWindow с параметром GW_CHILD.

Просмотров: 432


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.