
- •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. Окна Сообщений. Стили и флаги окон. Использование окон сообщений в режиме модального и немодального окна.
68. Описание дочерних окон управления в окнах диалога. Инструкции сокращенного и общего описания дочерних окон управления (в составе окна диалога) в файле ресурсов.
Сокращенное описание:
Каждый тип соответствует конкретному предопределенному классу окна и стилю окна. В представленной ниже таблице показаны соответствующие каждому типу дочерних окон элементов управления класс окна и стиль окна:
Тип элемента управления Класс окна Стиль окна
PUSHBUTTON button BS_PUSHBUTTON | WS_TABSTOP
DEFPUSHBUTTON button BS_DEFPUSHBUTTON | WS_TABSTOP
CHECKBOX button BS_CHECKBOX | WS_TABSTOP
RADIOBUTTON button BS_RADIOBUTTON | WS_TABSTOP
GROUPBOX button BS_GROUPBOX | WS_TABSTOP
LTEXT static SS_LEFT | WS_GROUP
CTEXT static SS_CENTER | WS_GROUP
RTEXT static SS_RIGHT | WS_GROUP
ICON static SS_ICON
EDITTEXT edit ES_LEFT | WS_BORDER | WS_TABSTOP
SCROLLBAR scrollbar SBS_HORZ
LISTBOX listbox LBS_NOTIFY | WS_BORDER | WS_VSCROLL
COMBOBOX combobox CBS_SIMPLE | WS_TABSTOP
Единственной программой, которая понимает эту краткую запись, является компилятор ресурсов (RC). Кроме показанных выше стилей окна, каждое из представленных дочерних окон элементов управления имеет стиль: WS_CHILD | WS_VISIBLE
Для всех типов дочерних окон элементов управления, за исключением EDITTEXT, SCROLLBAR, LISTBOX и COMBOBOX, используется следующий формат инструкций, описывающих элементы управления: control-type "text", id, xPos, yPos, xWidth, yHeight [, iStyle]
А для типов элементов управления EDITTEXT, SCROLLBAR, LISTBOX и COMBOBOX в формат инструкций определения не входит текстовое поле:
control-type id, xPos, yPos, xWidth, yHeight [, iStyle]
В обеих этих инструкциях поле iStyle не является обязательным.
Размеры, которые указываются в шаблонах окон диалога, всегда задаются в единицах 1/4 средней ширины символа и 1/8 его высоты.
Поле стиля (style) инструкций определения окон элементов управления не является обязательным. Оно дает возможность включить в инструкцию другие идентификаторы стиля окна. Например, если необходимо создать флажок с текстом, находящимся слева от квадратного окна флажка, то можно было бы воспользоваться такой инструкцией:
CHECKBOX "text", id, xPos, yPos, xWidth, yHeight, BS_LEFTTEXT
Хотя сокращенная запись для дочерних окон управления весьма удобна, но она не является исчерпывающей.
Полная форма:
Например, нельзя создать дочернее окно управления без рамки. По этой причине в компиляторе файла описания ресурсов также определяется и обобщенная форма инструкции окна управления, которая выглядит так: CONTROL "text", id, "class", iStyle, xPos, yPos, xWidth, yHeight
Эта инструкция, где можно задать класс окна и полностью определить стиль окна, дает возможность создать любой тип дочернего окна управления. Например, вместо инструкции:
PUSHBUTTON "OK", IDOK, 10, 20, 32, 14
можно использовать инструкцию:
CONTROL "OK", IDOK, "button", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP, 10, 20, 32, 14
При компиляции файла описания ресурсов две этих инструкции кодируются одинаково, как в файле с расширением .RES, так и в файле с расширением .EXE.
Если инструкция CONTROL используется в шаблоне окна диалога, нет необходимости включать в нее стили WS_CHILD и WS_VISIBLE. Windows включает их в стиль окна при создании дочерних окон. Кроме этого формат инструкции CONTROL облегчает понимание того, что делает менеджер окна диалога Windows, когда он создает окно диалога. Во-первых, он создает всплывающее окно, родительское окно которого определяется описателем окна, заданным в функции DialogBox. Затем для каждой инструкции элемента управления в шаблоне диалога, менеджер окна диалога создает дочернее окно. Родительским окном каждого из этих дочерних окон управления является всплывающее окно диалога. Приведенная выше инструкция CONTROL преобразуется в вызов функции CreateWindow, которая выглядит следующим образом:
CreateWindow("button", "OK",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP,
10 * cxChar / 4, 20 * cyChar / 8,
32 * cxChar / 4,14 * cyChar / 8,
hDlg, IDOK, hInstance, NULL);
где cxChar и cyChar — это ширина и высота символа системного шрифта в пикселях. Параметр hDlg является возвращаемым значением функции CreateWindow, которая создает окно диалога. Параметр hInstance получен при первом вызове функции DialogBox.