11. Линейки прокрутки, переключатели, окна пометки, окна списка. (Ответы на вопросы билетов)
Описание файла
Файл "11. Линейки прокрутки, переключатели, окна пометки, окна списка." внутри архива находится в следующих папках: Ответы на вопросы билетов, WinAPI - Ответы на вопросы билетов. PDF-файл из архива "Ответы на вопросы билетов", который расположен в категории "". Всё это находится в предмете "api windows" из 6 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "к экзамену/зачёту", в предмете "api windows" в общих файлах.
Просмотр PDF-файла онлайн
Текст из PDF
1.Линейки прокрутки, переключатели, окна пометки, окна списка.Кнопки, переключатели, полосы просмотра, редакторы текста и др. относятся к органамуправления. Они создаются как дочерние окна на базе предопределенных классов.1. Кнопки, переключатели (переключатели – кнопки с 3-мя состояниями (вкл, выкл инеактивен)Для создания кнопки нужно создать дочернее окно на базе предопределенного класса "button".После этого родительское окно будет получать от кнопки сообщение с кодом WM_COMMAND. Этимсообщением кнопка информирует родительское окно о том, что с ней что - то сделали, например,нажали.А) Создание кнопки:HWND CreateWindow (LPCSTR lpszClassName, LPCSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth,int nHeight, HWND hwndParent, HMENU hmenu, HINSTANCE hinst, void FAR* lpvParam);1 параметр – имя класса "button".2 параметр – надпись на кнопке – указатель на строку3 параметр – набор битов – стиль окна, обязательно WS_CHILD4 и 5 параметры – координаты кнопки относительно левого верхнего угла родительского окна6 и 7 параметры – ширина и высота кнопки8 параметр – идентификатор родительского окна; 9 параметр – идентификатор самой кнопки10 параметр – идентификатор приложения11 параметр – дальний указатель на область данных, для кнопки – 0.Б) Стили:BS_3STATE – переключатель может нах.
в 3 состояниях: вкл, выкл и неактив.BS_AUTO3STATE – внешний вид изменяется автоматическиBS_AUTORADIOBUTTON – в виде окружности, 2 состояния, изм-ся автоматическиBS_DEFPUSHBUTTON – стандартная кнопка с жирной рамкойBS_GROUPBOX – Прямоугольная область, внутри которой могут находиться другие кнопки. Обычноиспользуется в диалоговых панелях. Этот орган управления не воспринимает сообщения от мыши иликлавиатуры.В) Способы управления:А) Вызов специальных функций, например MoveWindow (новое расположение и размеры),EnableWindow (разрешение или запрет поступления сообщений), ShowWindow (показать или скрыть SW_HIDE и SW_SHOWNORMAL).
SetWindowText (новый текст на кнопке)Б) Отправка сообщения, в ответ на которые кнопка будет менять вид (2 способа – функцииPostMessage и SendMessage – через очередь приложения и минуя ее).Для перерисовки посылается сообщение BM_SETCHECK: SendMessage(hButton, BM_SETCHECK, 1,0L);Переключатели в поле wParam передают 0 – выкл, 1- вкл или 2 – неактив. сост-е. Параметр lParamсообщения BM_SETCHECK должен быть равен 0.Узнать состояние – посылать сообщение BM_GETCHECK:WORD nState;nState = (WORD) SendMessage(hButton, BM_GETCHECK, 0, 0L);Окна пометки: окна на базе класса “button” (кнопки) со стилем BS_CHECKBOX.2. Полосы прокрутки.Полосы просмотра (Scrollbar) широко используются в приложениях Windows для просмотра текстаили изображения, которое не помещается в окне.
«Scrollbar» - класс, на основе которого реализуетсяполоса просмотра. Бывает вертикальной и горизонтальной и посылает в родительское окноWM_HSCROLL и WM_VSCROLL. Перемещение дискретно (интервал задается при инициализации).Бывает 2 типа позиционирования: точное – нажатием на кнопки побокам от полосы и грубое –кликами выше или ниже ползунка на полосе прокрутки.А) СозданиеHWND hScroll = CreateWindow("scrollbar", NULL, WS_CHILD | WS_VISIBLE | SBS_HORZ,20, 400, 100, 50, hWnd, IDC_SCROLLBAR, hInstance, NULL);1 – класс, на базе которого создается полоса просмотра; 2 – заголовок окна, должен быть NULL3 – флаги полосы; 4-7 – расположение, размеры; 8 – идентификатор окна; 9 – идентификаторполосы просмотра (Определяет не саму полосу, а прямоугольник для полосы).Б) Стили ( флаги SBS только для полос просмотра):SBS_BOTTOMALIGN – Создается горизонтальная полоса просмотра, высота которой равна высотесистемной полосы просмотра.
Выполняется выравнивание нижнего края полосы просмотра понижнему краю прямоугольника, координаты и размер которого определен при вызове функцииCreateWindow. Этот стиль должен использоваться вместе со стилем SBS_HORZ.SBS_HORZ (SBS_VERT)– Создается горизонтальная (вертикальная) полоса просмотра. Размер ирасположение полосы просмотра определяются при вызове функции CreateWindowSBS_LEFTALIGN – аналогично 1, по левому краю.SBS_SIZEBOX – орган управления с небольшим прямоугольником серого цвета (Size Box). Если выустановите курсор мыши внутрь органа управления, нажмете левую клавишу мыши и будетеперемещать мышь, родительское окно будет получать сообщения, аналогичные сообщениям отрамки, предназначенной для изменения размера окна.В) Коды полос:SB_LEFT (SB_RIGHT), SB_TOP(SB_BOTTOM) – влево(вправо) для горизонтальных, вверх(вниз) - для вертикальныхSB_ENDSCROLL – отпускаете мышь при работе с полосойГ) Сообщения от полос:WM_HSCROLL и WM_VSCROLL содержат в wParam коды:SB_LEFT, SB_RIGHT – сдвиг до упора влево и врпавоSB_LINEUP, SB_LINELEFT,SB_LINERIGHT,SB_LINEDOWN – сдвиг на одну позицию.SB_PAGELEFT, SB_PAGEUP (и так далее) – сдвиг на одну страницуSB_ENDSCROOL – окончание работы мышьюД) Необходима инициализация:Указываем диапазон изменений значений ползунка:void WINAPI SetScrollRange(HWND hwnd, int fnBar, int nMin, int nMax, BOOL fRedraw);2 параметр – тип полосы просмотра: SB_CTL – как орган упр.
или SB_HORZ и SB_VERT.1 параметр – если SB_CTL – ID органа управления, иначе ID Окна, в котором создается полоса.3 и 4 параметры – дальние указатели на целые диапазона (Диапоазон не больше 32767)5 – нужна ли перерисовка.Е) Управление:int WINAPI SetScrollPos(HWND hwnd, int fuBar, int nPos, BOOL fRepaint);3 параметр – положение ползунка. ShowScrollBar – показать или скрыть полосу прокрутки3. Окна спискаПредназначены для выбора элемента из некоторого определенного списка.
С помощью класса"listbox" можно создавать одноколоночные и многоколоночные списки, имеющие вертикальную (дляодноколоночных списков) и горизонтальную (для многоколоночных списков) полосу просмотра.А) Создание:hListBox = CreateWindow("listbox", NULL,WS_CHILD | WS_VISIBLE | LBS_STANDARD |LBS_WANTKEYBOARDINPUT, 30,30,200,100, hwnd, (HMENU) ID_LIST, hInst, NULL);2 – имя/заголовок (должен быть NULL)8 – идентификатор родит окна, куда будет поступать сообщение WM_COMMANDБ) Стили окон списка:LBS_EXTENDEDSEL – Можно выделять несколько рядом расположенных строкLBS_MULTICOLUMN – для мультиколоночного спискаLBS_MULTIPLESEL – выделять несколько любых строкLBS_SORT – строки списка будут отсортированы и другие (LBS_NOINTEGRALHEIGHT,LBS_NOREDROW, LBS_OWNERDRAWFIXED)Список посылает в родительское окно сообщение WM_COMMAND.
wParam этого сообщениясодержит идентификатор списка, Младшее слово параметра lParam содержит идентификатор окнасписка, а старшее - код извещения.LBN_DBLCLK – Двойной щелчок левой клавишей мыши по строке спискаLBN_KILLFOCUS – потерян фокус вводаLBN_SELCHANGE – польз-ль выбрал другую строку.В) Сообщения для списка:Для управления списком приложение посылает ему сообщения, вызывая функцию SendMessage.LB_ADDSTRING – добавление строки в список LB_DELETESTRINGLB_DIR – заполнение списка именами файлов и каталогов в текущем каталогеLB_FINDSTRING – поиск строки в списке..