
- •Основные компоненты windows – программы (.Cpp, .H, .Res, .Rc, .Def), компиляция.
- •Файл определения модуля.
- •Структура windows – программы.
- •Структура программы в Windows:
- •Сообщения. Источники сообщений
- •Формирование сообщений, примеры. Очереди.
- •Сообщения. Цикл сообщений, основные компоненты.
- •Сообщения. Структура сообщений на примере wm_command
- •Структура msg. Обработка сообщений.
- •Средства обработки сообщений в приложении и windows.
- •Окна, классы и типы окон.
- •Регистрация класса окна, основные элементы класса.
- •Int cbClsExtra; // 3. Доп. Память для окон, созд-мых на базе данного класса
- •Int cbWndExtra; // 4. Доп. Память для создания окна (3, 4 – в байтах)
- •Линейки прокрутки, переключатели, окна пометки, окна списка.
- •1. Кнопки, переключатели (переключатели – кнопки с 3-мя состояниями (вкл, выкл и неактивен)
- •2. Полосы прокрутки.
- •3. Окна списка
- •Комбинированные списки, окна редактирования и статические текстовые объекты.
- •1. Комбинированные списки
- •2. Окна редактирования
- •3. Статический орган управления (статический текстовый объект)
- •Способы создания меню
- •Создание меню в файле ресурсов
- •С помощью функций в теле программы
- •Создание меню редактором ресурсов
- •Определение диалоговой панели, взаимодействие пользователя с панелью.
- •1. Создание шаблона.
- •2. Создание функции диалога.
- •3. Вызов одной из функций создания диалога
- •Диалоговые панели, модальные панели.
- •Немодальные панели. Отличие циклов сообщений.
- •Ресурсы. Файл ресурсов, текстовый, бинарный. Создание.
- •Файл определения модуля. Назначение, основные директивы (относящиеся к коду и данным).
- •Графический приборный интерфейс gdi. Состав, назначение.
- •Контекст, содержание контекста.
- •Общий контекст, родительский, личный, для класса окна, физический.
- •1. Общий контекст отображения.
- •2. Контекст отображения для класса окна
- •3. Личный контекст отображения
- •4. Родительский контекст отображения
- •5. Контекст физического устройства
- •Последовательность действий приложения при формировании рисунка
- •Преобразование логических координат в физические и наоборот, единицы измерений, масштабирование.
- •Назначение и состав структуры paintstruct. Сообщение wm_paint.
- •Int right; х-коор-та нижнего правого угла
- •Int bottom; y-коор-та
- •Дополнительные темы.
- •Аппаратная независимость
- •Основные компоненты windows – программы (.Cpp, .H, .Res, .Rc, .Def), компиляция
2. Создание функции диалога.
Функция диалога, предназначенная для обработки сообщений от диалоговой панели:
BOOL CALLBACK _export DlgProc (HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam); - можно выбрать любое имя. (HWND hdlg – идентификатор диалоговой панели)
Как правило, функция диалога всегда обрабатывает сообщения WM_INITDIALOG (при инициализации диалога) и WM_COMMAND, не обрабатывает WM_CREATE, WM_PAINT, WM_DESTROY. Не может вызвать функцию обработки сообщений по умолчанию DefWindowProc.
а) Сообщение WM_INITDIALOG использует параметры wParam (идентификатор ОУ, который первым получит фокус ввода, первый, описанный в шаблоне WM_TABSTOP) и lParam (содержит значение, передаваемое приложением при создании диалоговой панели).
б) Сообщение WM_COMMAND, поступающее в функцию диалога, передает сообщения или извещения от органов управления, расположенных в диалоговой панели. Крое этого, функция диалога может получить это сообщение с параметром wParam, равным константам IDOK и IDCANCEL (если нажата кнопка с данным идентификатором или закрытие с помощью системного меню или клавиши <Esc>), описанным в файле windows.h.
Сообщение с параметром IDOK поступает в том случае, если нажат <Enter> в момент, когда ни одна из кнопок, расположенных в диалоговой панели, не имеет фокус ввода, и ни одна из кнопок не имеет стиль WS_DEFPUSHBUTTON. Если в диалоговой панели есть кнопка со стилем WS_DEFPUSHBUTTON, в описанной ситуации в функцию диалога поступает сообщение WM_COMMAND с параметром wParam, равным идентификатору этой кнопки.
3. Вызов одной из функций создания диалога
Диалоговые панели бывают трех типов: модальные, системные модальные и немодальные.
Модальная: главное окно приложения и его дочерние окна блокируются, перестают получать сообщения от мыши и клавиатуры. Но есть возможность работать с другими приложениями. Чтобы и это запретить – системные модальные диалоговые панели.
Немодальная диалоговая панель не блокирует работу основного окна приложения и его дочерних окон. Вы можете работать как с диалоговой панелью, так и с окном приложения.
В зависимости от создаваемой диалоговой панели (модальной или немодальной) будут использованы различие функции создания (DialogBox (+ прочие) или CreateDialog (+ прочие)), уничтожения (EndDialog или DestroyWindow), также будут различия в цикле обработки сообщения (см. вопросы 15, 16).
___________________________________________________________________________
Сообщения для органов управления
Органы управления посылают в функцию диалога сообщение WM_COMMAND. В свою очередь, приложение может посылать различные сообщения ОУ, вызывая функцию SendMessage.
Для посылки сообщения также удобно использовать функцию SendDlgItemMessage (не требуется указывать идентификаторы окна органов управления):
LRESULT WINAPI SendDlgItemMessage(HWND hdlg, int idDlgItem, UINT uMsg, WPARAM wParam, LPARAM lParam);
hdlg – идентификатор диалоговой панели, idDlgItem – идентификатор органа управления, uMsg – номер сообщения, wParam, lParam – параметры сообщения.
Для выполнения некоторых часто использующихся операций с органами управления в программном интерфейсе Windows определены специальные функции (свои для конкретного органа управления)