
- •43. Работа с таймером. Функции создания и удаления таймеров. Синхронные сообщения таймера.
- •Void callback TimerProc(hwnd hwnd, _uint iMsg, _uint iTimerId, dword dwTime)
- •Void winapi GetLocalTime(
- •44. Обработка сообщений от таймера в оконной процедуре приложения. Организация процедуры обратного вызова для обработки сообщений от таймера.
- •45. Кнопки pushbutton defpushbutton и их назначение. Создание кнопок в окне приложения, сообщения от кнопок.
- •46. Кнопки флажки checkbox, autocheckbox, 3state, auto3state их назначение. Создание кнопок в окне приложения, сообщения от кнопок. Управление кнопками со стороны приложения.
- •47. Кнопки-переключатели radiobutton, autoradiobutton их назначение. Создание кнопок в окне приложения, сообщения от кнопок. Управление кнопками со стороны приложения.
- •48. Работа с кнопками в окне приложений. Управление фокусом кнопок.
- •48,А. Функции для изменения состояния дочерних окон на примере кнопок.
- •48,Б. Функции, которые определяют связи между идентификатором дочернего окна, хэнделом дочернего окна и хэнделом родительского окна.
- •48,В. Функции для изменения текста в дочерних окнах на примере кнопок.
- •49. Статические дочерние окна. Их назначение и создание в окне приложения. Стили статических окон.
- •50. Использование статических окон как устройств вівода текста или картинок.
- •51. Введение новой оконной процедуры для управления фокусом дочерних окон управления и изменения функций дочерних окон.
- •52. Класс редактирования(edit). Основные стили класса, назначение и использование окон редактирования.
- •53. Создание окон редактирования в окне приложения. Основные функции окна редактирования. Сообщения окна родительскому окну и сообщения посылаемые окну редактирования.
- •54. Класс окна списка(list-box). Основные стили класса, назначение и использование окна списка диалога.
- •55.Сообщения окна списка(listbox) и сообщения, посылаемые окну списка.
- •55А.Сообщения lb_dir ,атрибуты для выбора файлов, каталогов и логических дисков.
- •56.Файл ресурсов. Описание и назначение. Компилятор ресурсов. Использование файла ресурсов в проекте приложения.
- •57.Описание в файле ресурсов иконок, курсоров и битовых образов. Имена ресурсов и стандартные типы ресурсов. Функции доступа к ресурсам.
- •58.Ресурсы-символьные строки, их назначения и описание в файле ресурсов. Функции доступа к ресурсам-строкам.
- •59.Имена ресурсов, использование макроса makeintresource().
- •60.Структура главного меню. Описание меню в файле ресурсов.
- •61. Сообщение от меню. Идентификаторы действия меню. Индексы элементов Popup menu
- •61,А. Использование символа ‘&’ в описаниях пунктов меню
- •61,Б. Действия, которые приводят к получению и потере фокуса для меню
- •61,В. Основные признаки пунктов меню, порядок изменения состояния пунктов меню
- •61,Г. Способы подключения меню в программу
- •61,Д. Основные сообщения меню, их структура и назначение.
- •61,Е. Отличия сообщения wm_command для меню и кнопок.
- •61,Ж. Отличия сообщения wm_command от сообщения wm_syscommand
- •62. Всплывающее меню. Отличия в описании всплывающего меню от описания главного меню в файле ресурсов
- •62,А Порядок обращению к всплывающему меню
- •63. Системное меню. Особенности, описание и использование системного меню
- •63,Б. Использование системного меню для построения меню пользователя
- •64. Клавиши акселератора. Назначение и описание в файле ресурсов. Обработка сообщений от клавиш акселератора в цикле обработки сообщений.
- •64,А. Отличия сообщения wm_command для меню и акселераторов
- •64,Б. Зачем нужны акселераторы, если имеются различные виды сообщений от клавиатуры?
- •64,В. Дополнения в цикле чтения сообщений при использовании акселераторов.
- •64,Г. Порядок загрузки акселераторов в приложение.
- •65. Окна диалога и их назначение. Модальные и немодальные окна. Описание окон диалога в файле ресурсов.
- •Icon „About1“
- •66. Создание модального окна диалога. Диалоговая процедура, её назначение, и применение.
- •67. Немодальное окно диалога. Функция создания окна. Обработка сообщений от немодальных окон диалога. Цикл обработки сообщений при наличии немодальных окон диалога.
- •68. Описание дочерних окон управления в окнах диалога. Инструкции сокращенного и общего описания дочерних окон управления (в составе окна диалога) в файле ресурсов.
- •69. Основные правила интерфейса клавиатуры для дочерних окон управления, описанных в диалоговом окне.
- •70. Окна Сообщений. Стили и флаги окон. Использование окон сообщений в режиме модального и немодального окна.
46. Кнопки флажки checkbox, autocheckbox, 3state, auto3state их назначение. Создание кнопок в окне приложения, сообщения от кнопок. Управление кнопками со стороны приложения.
Флажки (check boxes) представляют из себя маленькие квадратные окна с текстом. В программах флажки обычно объединяются, что дает пользователю возможность установить опции. Флажки, как
правило, действуют как двухпозиционные переключатели: один щелчок вызывает появление контрольной метки (галочки); другой щелчок приводит к исчезновению контрольной метки.
Существуют следущие стили флажков: CHECKBOX, AUTOCHECKBOX, 3STATE, AUTO3STATE.
При использовании стиля BS_CHECKBOX нужно самостоятельно устанавливать контрольную метку, посылая сообщение BM_SETCHECK. Параметр wParam устанавливается в 1 для установки контрольной метки и в 0 для ее удаления. Можно получить текущее состояние флажка, посылая управляющее сообщение BM_GETCHECK. Имеется возможность использовать следующие инструкции для переключения метки Х при обработке сообщения WM_COMMAND:
SendMessage((HWND)lParam, BM_SETCHECK,(WPARAM)
!SendMessage((HWND)lParam, BM_GETCHECK, 0, 0),0);
Следует обратить внимание на операцию ! перед вторым вызовом функции SendMessage. Значение параметра lParam является описателем дочернего окна, переданным в вашу оконную процедуру сообщением WM_COMMAND. Если позже понадобится узнать состояние кнопки, следует послать ей другое сообщение BM_GETCHECK. Можно также сохранять текущее состояние контрольной метки в статической переменной внутри своей оконной процедуры. Также можно инициализировать флажок BS_CHECKBOX меткой Х, посылая ему сообщение BM_SETCHECK:
SendMessage(hwndButton, BM_SETCHECK, 1, 0);
При стиле BS_AUTOCHECKBOX флажок сам включает или выключает контрольную метку. Наша оконная процедура может игнорировать сообщения WM_COMMAND. Если необходимо текущее состояние кнопки, следует послать сообщение BM_GETCHECK:
iCheck =(int) SendMessage(hwndButton, BM_GETCHECK, 0, 0);
Значение iCheck равно TRUE (не равно 0), если кнопка помечена, FALSE (или 0), если нет.
Теперь рассмотрим флажки BS_3STATE и BS_AUTO3STATE. Как показывают их имена, эти стили
могут отображать третье состояние — серый цвет внутри окна флажка — которое имеет место, когда посылается сообщение BM_SETCHECK с параметром wParam равным 2. Серый цвет показывает пользователю, что его выбор неопределен или не имеет отношения к делу. В этом случае флажок не может быть включен — т. е. он запрещает какой-либо выбор в данный момент. Однако, флажок продолжает посылать сообщения родительскому окну, если щелкать на нем мышью.
Окно флажка помещается в левой части и в центре относительно верхней и нижней сторон прямоугольника, который был задан при вызове функции CreateWindow. Щелчок мыши в любом месте внутри прямоугольника вызывает посылку родительскому окну сообщения WM_COMMAND. Минимальная высота флажка равна высоте символа. Минимальная ширина равна количеству символов в тексте плюс два.
47. Кнопки-переключатели radiobutton, autoradiobutton их назначение. Создание кнопок в окне приложения, сообщения от кнопок. Управление кнопками со стороны приложения.
Переключатели (radio buttons) похожи на флажки, но их форма не квадратная, а круглая. Жирная точка внутри кружка показывает, что переключатель помечен. Переключатель имеет стиль окна BS_RADIOBUTTON или BS_AUTORADIOBUTTON, но последний используется только в окнах диалога. В окнах диалога группы переключателей, как правило, используются для индикации нескольких взаимоисключающих опций. В отличие от флажков, если повторно щелкнуть на переключателе, его состояние не изменится. При получении сообщения WM_COMMAND от переключателя, необходимо отобразить его отметку, отправив сообщение BM_SETCHECK с параметром wParam, равным 1:
SendMessage(hwndButton, BM_SETCHECK, 1, 0);
Для всех остальных переключателей этой группы можно отключить контрольную метку, послав сообщение. BM_SETCHECK с параметром wParam, равным 0:
SendMessage(hwndButton, BM_SETCHECK, 0, 0);