Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции -Процедурное программирование в Windows.doc
Скачиваний:
13
Добавлен:
13.09.2019
Размер:
742.91 Кб
Скачать

Комбинированный список

Комбинированный список («combobox») – это объединения окна–списка и строки редактирования. Эти два объекта работают в паре: в строке редактирования может быть введен новый элемент или помещен один из существующих.

Описания стандартных типов этого объекта:

CBS_SIMPEL

Простейший тип комбинированного списка: список отображается всё время, и текущее выделение отслеживается среди элементов списка.

CBS_DROPDOWN

То же, что и CBS_SIMPEL, но список не отображается до тех пор, пока пользователь не нажмет на левую кнопку мыши на стрелке вниз, расположенный справа от строки редактирования. При этом окно–список как бы «выпадает» из строки редактирования.

CBS_DROPDOWNLIST

То же, что и CBS_DROPDOWN, но строка редактирования заменяется на статическую текстовую строку: в ней отображается текущий выбор из списка, но отредактировать его (если это текст) нельзя.

CBS_HASSTRING

Этот тип комбинированных списков является пользовательским: функция родительского окна отвечает за наполнение списка, однако на них накладывается ограничение: элементы, которые вы помещаете в список, должны быть текстовыми строками. Управление низкого уровня, тем не менее, осуществляется стандартной функцией комбинированного окна; пользователь лишь помещает в окно элементы и извлекает текущий выбор (сообщение LB_GETTEXT).

CBS_OWNERDRAWFIXED

Элементы списка отрисовываются пользователем; их высота, тем не менее, одинакова.

CBS_OWNERDRAWVARIABLE

Элементы списка отрисовываются пользователем; их высота может быть различной.

CBS_OEMCONVERT

Вводимый в окно текст сначала преобразуется из таблицы ANSI в таблицу OEM, а затем обратно, после чего отображается на экране. Это гарантирует правильный перевод из одной таблицы в другую, например, при указании в строке редактирования имени файла DOS. Этот стиль, как правило, используются только совместно с или .

CBS_AUTOSCROLL

Если длина строки текста в строке редактирования превышает размеры окна, то осуществляется автоматическая горизонтальная прокрутка окна вправо и влево. Если этот флаг не установлен, ввести текст, превышающий размеры окна, невозможно.

Меню и назначение клавиш

Работа с меню в Windows – одно из самых простых и понятных мест. Для создания меню вам просто нужно:

  1. Задать структуру меню в файле ресурсов, последовательно определив пункты меню в виде текстовых строк.

  2. Каждому пункту меню поставить в соответствие уникальный идентификатор.

  3. Указать имя меню в структуре класса окна.

Как вы уже понимаете, для функции окна неважно, каким образом пользователь выбрал команду – при помощи последовательно нажатий клавиш (Alt, стрелка вправо, ... , Enter, стрелка вниз, ... , Enter), мышью или просто нажатием назначенных на пункт меню комбинацией клавиш (например, копируете текст в «почтовый ящик» – Clipboard – нажатием Ctrl / Ins ).

Когда пользователь выбирает пункт меню, Windows передает приложению сообщение WM_COMMAND, содержащее идентификатор выбранного пункта, так что после определения структуры меню в файле ресурсов нужно оформить собственно текст программы – вывести обработку сообщения WM_COMMAND.

Меню главного окна размещается непосредственно под заголовком окна; это старший уровень меню приложения, поэтому его иногда называют главным меню. Пункты главных меню могут является заголовками «падающих» меню, которые, в свою очередь, могут быть заголовками «всплывающих» меню. Пункты меню верхнего уровня могут быть активные, неактивные, отмеченными или отображается серым цветом.

Отображение серым цветом и неактивность меню – разные вещи; пункт может отображаться нормально, но быть неактивным (DESABLED). Однако, если пункт отображается серым цветом (GRAYED), то он всегда неактивен; мы рекомендуем вам пользоваться именно этим состоянием, поскольку иначе пользователь не может определить активен пункт или нет.

Меню может быть создано двумя различными способами: описанием в файле ресурсов и функциями динамической работы с меню, т.е. непосредственно из самой программы, в процессе её работы. Чаще всего используются оба способа: при создании программы в файле ресурсов определяется одно или несколько меню, а в процессе работы по мере необходимости одно меню может быть заменено другим или изменены некоторые свойства текущего меню (пункты могут быть динамически добавлены, убраны, отмечены, выделены серым цветом и т.п.).