- •"Combobox"
- •Void winapi InitCommonControls(void)
- •Idd_controlsdlg dialog 260, 200, 180, 120
- •Int apientry WinMain (hinstance hinstance, hinstance hPrevInstance,
- •Idd_controlsdlg dialog 260, 200, 180, 120
- •Idd_controlsdlg dialog 260, 200, 180, 120
- •Int apientry WinMain (hinstance hinstance, hinstance hPrevInstance, lpstr lpCmdLine, int nCmdShow)
Idd_controlsdlg dialog 260, 200, 180, 120
СТИЛЬ DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
Подписью "Элементы управления Windows"
FONT 8, "MS Shell Dlg"
НАЧАТЬ
DEFPUSHBUTTON "Закрыть", IDCANCEL, 120, 100, 50, 14
COMBOBOX IDD_SIZE_CBO, 40, 8, 90, 60, WS_TABSTOP | CBS_DROPDOWN
КОНЕЦ
Тестирование приложения
Закройте ее и вернуться к вашей среде программирования
Операции на выпадающие списки
Создание Сообщения, относящиеся
При создании поля со списком выше, мы определили их расположение через х и у с последующим их через размеров ширины и высоты. Если списком уже создан, и вы хотите, чтобы получить свои координаты, вы можете отправить сообщение CB_GETDROPPEDCONTROLRECT в функции SendMessage (). Третий аргумент, WPARAM, не используется. Четвертый аргумент, LPARAM, несет указатель RECT, которая будет возвращать координаты в поле со списком.
Добавление элементов в список
После создания списком, первая операция, которая, вероятно, происходит в виду, чтобы заполнить его элементов пользователь выбрать из. По этому вопросу существует два типа списков, используемые на комбо коробки: обычный или владелец ничья.
Стабильный список со списком отображается обычное список строк. Это простейший. Чтобы создать строку для добавления в список, вы можете вызвать функцию SendMessage (), передав второй аргумент как CB_ADDSTRING. Синтаксис является:
LRESULT = SendMessage ((HWND) hWndControl,
(UINT) CB_ADDSTRING,
(WPARAM) WPARAM,
(LPARAM) LPARAM);
Третий аргумент не используется. Четвертый аргумент это строка, которая будет добавлена к контролю. Вот примеры:
// ------------------------------------------------ ---------------------------
LRESULT CALLBACK DlgProc (HWND hWndDlg, UINT Msg, WPARAM WPARAM, LPARAM LPARAM)
{
строительства символ * ComboBoxItems [] = {"Шри-Ланка", "Сальвадор", "Ботсвана",
"Франция", "Куба"};
Переключатель (MSG)
{
Дело WM_INITDIALOG:
hWndComboBox = CreateWindow ("COMBOBOX",
НОЛЬ,
WS_CHILD | WS_VISIBLE,
60, 62, 136, 60,
hWndDlg,
НОЛЬ,
hInst,
НОЛЬ);
если (! hWndComboBox)
{
MessageBox (hWndDlg,
"Не удалось создать поле со списком",
"Не удалось Создание управления",
MB_OK);
вернуться false;
}
SendMessage (hWndComboBox,
CB_ADDSTRING,
0,
reinterpret_cast <LPARAM> ((LPCTSTR) ComboBoxItems [0]));
SendMessage (hWndComboBox,
CB_ADDSTRING,
0,
reinterpret_cast <LPARAM> ((LPCTSTR) ComboBoxItems [1]));
SendMessage (hWndComboBox,
CB_ADDSTRING,
0,
reinterpret_cast <LPARAM> ((LPCTSTR) ComboBoxItems [2]));
SendMessage (hWndComboBox,
CB_ADDSTRING,
0,
reinterpret_cast <LPARAM> ((LPCTSTR) ComboBoxItems [3]));
SendMessage (hWndComboBox,
CB_ADDSTRING,
0,
reinterpret_cast <LPARAM> ((LPCTSTR) ComboBoxItems [4]));
вернуться TRUE;
Дело WM_COMMAND:
переключатель (WPARAM)
{
Дело IDCANCEL:
EndDialog (hWndDlg, 0);
вернуться TRUE;
}
перерыв;
}
вернуться false;
}
// ------------------------------------------------ ---------------------------
Если операция добавления успешно, функция SendMessage () возвращает индекс элемента, который был добавлен. Если это не удается, он возвращает ошибку CB_ERR.
Когда список был создан, если он содержит больше пунктов, чем выделенного пространства может отображать, вы должны обеспечить способ для пользователя, чтобы перейти полностью в списке. Это обычно делается с вертикальной полосой прокрутки. Для оснащения списком с вертикальной полосой прокрутки, добавить значение WS_VSCROLL в список стилей. Если добавить этот стиль, но список не слишком длинный, полоса прокрутки не будет отображать. Если вы настаиваете на отображение вертикальной прокрутки, даже если список не слишком длинный, добавить стиль CBS_DISABLENOSCROLL. Если вы сделаете это, и если список короткий, он появится с инвалидом вертикальной прокрутки:
Сообщение CB_ADDSTRING мы используем выше позволяет добавить строку в списке. Вы можете использовать то же самое сообщение, чтобы позволить пользователю либо создать список или добавить элемент к нему.
Практическая LearningPractical обучения: Создание списка
Измените файл заголовка Resource.h следующим образом:
#define IDD_CONTROLSDLG 101
#define IDD_COUNTRIES_CBO 102
Чтобы добавить вертикальную полосу прокрутки первом поле, Добавить WS_VSCROLL в список стиле в сценарии ресурсов следующим образом:
#include "resource.h"
