11. Линейки прокрутки, переключатели, окна пометки, окна списка. (1058851)
Текст из файла
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 – поиск строки в списке..
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.