Если же текст списка динамический – то заполнение списка производится в программе (см.ниже)
Type |
|
Owner draw |
|
Sort |
Сортировка строк по алфавиту |
Vertical scroll |
Наличие вертикальной прокрутки |
No integral height |
|
OEM convert |
Вводимые символы из одного набора преобразуются в символы из другого набора |
AutoHScroll |
Появление горизонтальной линейки прокрутки при необходимости |
Disable no scroll |
Запретить убирать линейки прокрутки |
Uppercase |
Вводимые символы приводятся к верхнему регистру |
Lowercase |
Вводимые символы приводятся к нижнему регистру |
ВАЖНО:
Для того, чтобы при раскрытии списка видеть его элементы, следует растянуть поле раскрывающегося списка на требуемую величину. Это можно сделать, если щелкнуть мышью по кнопке списка и потянуть вниз за маркеры изменения размера раскрывающегося списка.
4. Теперь следует добавить в код программы строки управления раскрывающимся списком:
#include <windows.h>
//добавим дополнительные файлы описаний
#include <stdlib.h>
#include <stdio.h>
#include "resource.h"
#define TEST_WM_001 102
HINSTANCE ghInstance;
//новые переменные типа указателей на окна
HWND hList1, hCombo1;
//еще один текстовый буфер для передачи данных
char cBuffer[12];
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
// Это добавлено в начале оконной процедуры
char szListText[256];
INT ListIndex; //текущий индекс строки в списке
INT InstanceIndex; //вспомогательный индекс
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
// Сообщение о инициализации диалогового окна
case WM_INITDIALOG:
//Инициализация раскрывающегося списка
//получаем указатель на окно раскрывающегося списка
hCombo1 = GetDlgItem (hWnd, IDC_COMBO1);
// Пример внесения в список одной строки
//для чего – ввести строку в список
ListIndex = SendMessage (hCombo1, CB_ADDSTRING, 0, (DWORD)TEXT(
"СТРОКА-001"));
// присвоить ей внутренний числовой идентификатор 0
//(это необязательная операция)
SendMessage (hCombo1, CB_SETITEMDATA, ListIndex, 0);
// Пример занесения в снисок нескольких строк
for (InstanceIndex=1; InstanceIndex<4;InstanceIndex++)
{
sprintf(szListText,"СТРОКА-%d",InstanceIndex);
ListIndex = SendMessage (hCombo1, CB_ADDSTRING, 0, szListText);
SendMessage (hCombo1, CB_SETITEMDATA, ListIndex, InstanceIndex);
//А таким сообщением можно было проверить была ли ошибка при заполнении списка
//err = SendMessage (hList1, LB_SETITEMDATA, ListIndex, InstanceIndex);
}
// Перерисовываем список
SendMessage (hCombo1, WM_SETREDRAW, TRUE, 0);
// и выводим в его поле нулевой элемент списка
SendMessage (hCombo1, CB_SETCURSEL, 0, 0);
break;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
После трансляции и запуска программы имеем на экране следующее изображение:
CHECK (ФЛАЖОК)
4. Создадим на форме два флажка:
5. Управление флажком осуществляется следующим программным кодом:
// Сообщение от элементов диалогового окна
case WM_COMMAND:
switch (LOWORD (wParam))
{
. . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
//Работа с переключателем
case IDC_CHECK1:
MessageBox(hWnd, "Нажат флажок!", "ЗАГОЛОВОК", MB_OK );
// и тут же выключаем этот переключатель
SendMessage((HWND)lParam,BM_SETCHECK,0,0);
break;
. . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
GROUPBOX (рамка группировки)
RADIO BUTTON (Радиокнопка)
6. Создадим сначала область группировки элементов:
При создании группирующей рамки следует сразу установить в ее свойствах флажок “Group”
7. Теперь в зону групповой рамки разместим радиокнопки:
8. Повторим создание групп радиокнопок еще два раза
9. Ведем программный код, управляющий этими радиокнопками:
switch (wMsg)
{
// Сообщение об инициализации диалогового окна
case WM_INITDIALOG:
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
//Инициализация радиокнопок. Все первые кнопки групп сделаем включенными
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.