Создание элементов управления на диалоговой форме, страница 2

Если же текст списка динамический – то заполнение списка производится в программе (см.ниже)

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:

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

//Инициализация радиокнопок. Все первые кнопки групп сделаем включенными