Полосы прокрутки являются одними из самых лучших возможностей, который дает графический интерфейс и манипулятор мышь. Они просты в использовании и обеспечивают удобный просмотр информации.
Вы можете пользоваться полосами прокрутки для вывода на экран текста, графики, электронных таблиц, записей баз данных, картинок — всего, что требует больше пространства, чем доступно в рабочей области окна. Полосы прокрутки предназначены для просмотра информации как в вертикальном (движение вверх и вниз), так и в горизонтальном (движение вправо и влево) направлениях.
Вы можете щелкнуть мышью на стрелке в любом конце полосы прокрутки или между стрелками. Бегунок («scroll box» или «thumb») перемещается по длине полосы прокрутки, индицируя положение информации на экране относительно документа в целом. Вы также можете с помощью мыши переместить бегунок в конкретное положение. На рис. 3.7 показано рекомендуемое использование вертикальной полосы прокрутки для просмотра текста.
Эксель полосы прокрутки
Программисты иногда сталкиваются с проблемой терминологии, относящейся к полосам прокрутки, поскольку их точка зрения отличается от пользовательской. Пользователь, который передвигает бегунок вниз, хочет увидеть нижнюю часть документа; однако, программа фактически перемещает документ вверх относительно окна.
Документация Windows и идентификаторы ее заголовочных файлов основываются на точке зрения пользователя: Прокрутка вверх означает движение к началу документа; прокрутка вниз означает движение к концу. Щелкните здесь для прокрутки на Щелкните здесь для одну строку вверх прокрутки на одну страницу вверх Переместите бегунок для перехода в нужное место Щелкните здесь для прокрутки на одну страницу вниз Щелкните здесь для прокрутки на одну строку вниз Рис.
3.7 Вертикальная полоса прокрутки Вставить в ваше окно приложения вертикальную или горизонтальную полосу прокрутки очень просто. Все, что вам нужно сделать, это включить идентификатор WS_VSCROLL (вертикальная прокрутка) и WS_HSCROLLW (горизонтальная прокрутка) или оба сразу в описание стиля окна в инструкции CreateWindow . Эти полосы прокрутки всегда размещаются у правого края или в нижней части окна и занимают всю высоту или ширину рабочей области.
Рабочая область не включает в себя пространство, занятое полосами прокрутки. Ширина вертикальной полосы прокрутки и высота горизонтальной постоянны для конкретного дисплейного драйвера. Если вам необходимы эти значения, вы можете получить их (как вы могли бы заметить), вызвав функцию GetSystemMetrics . Windows обеспечивает всю логику работы мыши с полосами прокрутки. Однако, у полос прокрутки нет интерфейса клавиатуры. Если вы хотите дублировать клавишами управления курсором некоторые функции полос прокрутки, вы должны точно реализовать эту логику (как это делается, можно прочесть в главе 5, целиком посвященной клавиатуре).
Диапазон и положение полос прокрутки
Каждая полоса прокрутки имеет соответствующий «диапазон» (range) (два целых, отражающих минимальное и максимальное значение) и «положение» (position) (местоположение бегунка внутри диапазона). Когда бегунок находится в крайней верхней (или крайней левой) части полосы прокрутки, положение бегунка соответствует минимальному значению диапазона.
Видимая полоса прокрутки Windows 10 (ИЛИ ГДЕ ПРЯЧЕТСЯ БЕГУНОК). Решение есть!!!
Крайнее правое (или крайнее нижнее) положение бегунка на полосе прокрутки соответствует максимальному значению диапазона. По умолчанию устанавливается следующий диапазон полосы прокрутки: 0 (сверху или слева) и 100 (снизу или справа), но диапазон легко изменить на какое-нибудь более подходящее для вашей программы значение: SetScrollRange(hwnd, iBar, iMin, iMax, bRedraw); Параметр iBar равен либо SB_VERT, либо SB_HORZ, iMin и iMax являются минимальной и максимальной границами диапазона, а bRedraw устанавливается в TRUE, если Вы хотите, чтобы Windows перерисовала полосы прокрутки на основе вновь заданного диапазона. Положение бегунка всегда дискретно. Например, полоса прокрутки с диапазоном от 0 до 4 имеет пять положений бегунка, как показано на рис. 3.8. Для установки нового положения бегунка внутри диапазона полосы прокрутки можно использовать функцию SetScrollPos : SetScrollPos(hwnd, iBar, iPos, bRedraw);
Параметр iPos — это новое положение бегунка, оно должно быть задано внутри диапазона от iMin до iMax . Для получения текущего диапазона и положения полосы прокрутки в Windows используются похожие функции ( GetScrollRange и GetScrollPos ).
57 Если в вашей программе используются полосы прокрутки, вы совместно с Windows берете на себя ответственность за поддержку полос прокрутки и обновление положения бегунка. Далее перечислены сферы ответственности Windows по поддержке полос прокрутки: • Управляет логикой работы мыши с полосой прокрутки. • Обеспечивает временную «инверсию цвета» при нажатии на кнопку мыши на полосе прокрутки. • Перемещает бегунок в соответствие с тем, как внутри полосы прокрутки его перемещает пользователь. • Отправляет сообщения полосы прокрутки в оконную процедуру для окна, содержащего полосу прокрутки. Ниже представлены сферы ответственности вашей программы: • Инициализация диапазона полосы прокрутки. • Обработка сообщений полосы прокрутки. • Обновление положения бегунка полосы прокрутки. Положение 0 Положение 1 Положение 2 Положение 3 Положение 4
Положение 0 | Положение 1 | Положение 2 | Положение 3 | Положение 4 |
Рис. 3.8 Полосы прокрутки с пятью положениями бегунков
Сообщения полос прокрутки
Windows посылает оконной процедуре асинхронные сообщения WM_VSCROLL и WM_HSCROLL, когда на полосе прокрутки щелкают мышью или перетаскивается бегунок. Каждое действие мыши на полосе прокрутки вызывает появление по крайней мере двух сообщений, одного при нажатии кнопки мыши и другого, когда ее отпускают.
Младшее слово параметра wParam , которое объединяет сообщения WM_VSCROLL и WM_HSCROLL — это число, показывающее, что мышь осуществляет какие-то действия на полосе прокрутки. Его значения соответствуют определенным идентификаторам, которые начинаются с SB_, что означает «полоса прокрутки» (scroll bar).
Хотя в некоторых из этих идентификаторов используются слова «UP» и «DOWN», они применяются и к горизонтальным и к вертикальным полосам прокрутки, как показано на рис. 3.9. Ваша оконная процедура может получить множество сообщений типа SB_LINEUP, SB_PAGEUP, SB_LINEDOWN или SB_PSGEDOWN, если кнопка мыши остается нажатой при перемещении по полосе прокрутки.
Сообщение SB_ENDSCROLL показывает, что кнопка мыши отпущена. Как правило, сообщения SB_ENDSCROLL можно игнорировать. Если младшее слово параметра wParam равно SB_THUMBTRACK или SB_THUMBPOSITION, то старшее слово wParam определяет текущее положение полосы прокрутки. Это положение находится между минимальным и максимальным значениями диапазона полосы прокрутки.
Во всех других случаях при работе с полосами прокрутки старшее слово wParam следует игнорировать. Вы также можете игнорировать параметр lParam , который обычно используется для полос прокрутки, создаваемых в окнах диалога.
Нажата: SB_LINEUP |
Отпущена: SB ENDSCROLL |
Нажата: SB_PAGEUP |
Отпущена: SB_ ENDSCROLL |
Нажата: SB_THUMBTRACK |
Отпущена: |
Нажата: SB_PAGEDOWN |
Отпущена: SB_ENDSCROLL |
Нажата: SB_LINEDOWN |
Отпущена: SB_ENDSCROLL |
Рис. 3.9 Значения идентификаторов для параметра wParam сообщений |
полосы прокрутки |
В документации по Windows указано, что младшее слово wParam может также быть равно SB_TOP или SB_BOTTOM. Оно показывает, что полоса прокрутки была переведена в свое максимальное или минимальное положение. Однако, вы никогда не получите эти значения для полосы прокрутки, созданной в окне вашего приложения. Обработка сообщений SB_THUMBTRACK и SB_THUMBPOSITION весьма проблематична.
Если вы устанавливаете большой диапазон полосы прокрутки, а пользователь быстро перемещает бегунок по полосе, то Windows отправит вашей оконной функции множество сообщений SB_THUMBTRACK. Ваша программа столкнется с проблемой обработки этих сообщений. По этой причине в большинстве приложений Windows эти сообщения игнорируются, а действия предпринимаются только при получении сообщения SB_THUMBPOSITION, которое означает, что бегунок оставлен в покое. Однако, если у вас есть возможность быстро обновлять содержимое экрана, вы можете захотеть включить в программу обработку сообщений SB_THUMBTRACK. Но знайте, что те пользователи, которые обнаружат, что ваша программа мгновенно реагирует на перемещение бегунка по полосе прокрутки, несомненно будут пытаться двигать его как можно быстрее, чтобы понаблюдать, сможет ли программа отследить это движение — и они будут несказанно удовлетворены, если этого не произойдет.
Прокрутка в программе SYSMETS
Достаточно объяснений. Самое время использовать этот материал на практике. Давайте начнем с простого. Начнем мы с вертикальной прокрутки, поскольку требуется она гораздо чаще. Горизонтальная прокрутка может подождать. SYSMETS2 представлена на рис.
3.10. Обновленный вызов функции CreateWindow добавляет вертикальную полосу прокрутки к окну, благодаря включению в описание стиля окна в CreateWindow идентификатора WS_VSCROLL: WS_OVERLAPPEDWINDOW | WS_VSCROLL SYSMETS2.MAK #———————— # SYSMETS2.MAK make file #———————— sysmets2.exe : sysmets2.obj $(LINKER) $(GUIFLAGS) -OUT:sysmets2.exe sysmets2.obj $(GUILIBS) sysmets2.obj : sysmets2.c sysmets.h $(CC) $(CFLAGS) sysmets2.c
59 SYSMETS2.C /*—————————————————- SYSMETS2.C — System Metrics Display Program No. 2 (c) Charles Petzold, 1996 —————————————————-*/ #include #include #include «sysmets.h» LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) < static char szAppName[] = «SysMets2»;
HWND | hwnd; |
MSG | msg; |
WNDCLASSEX | wndclass; |
wndclass.cbSize | = sizeof(wndclass); |
wndclass.style | = CS_HREDRAW | CS_VREDRAW; |
wndclass.lpfnWndProc | = WndProc; |
wndclass.cbClsExtra | = 0; |
wndclass.cbWndExtra | = 0; |
wndclass.hInstance | = hInstance; |
wndclass.hIcon | = LoadIcon(NULL, IDI_APPLICATION); |
wndclass.hCursor | = LoadCursor(NULL, IDC_ARROW); |
wndclass.hbrBackground | =(HBRUSH) GetStockObject(WHITE_BRUSH); |
wndclass.lpszMenuName | = NULL; |
wndclass.lpszClassName | = szAppName; |
wndclass.hIconSm | = LoadIcon(NULL, IDI_APPLICATION); |
RegisterClassEx( hwnd = CreateWindow( szAppName, «Get System Metrics No. 2», WS_OVERLAPPEDWINDOW | WS_VSCROLL, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); ShowWindow(hwnd, iCmdShow); UpdateWindow(hwnd); while(GetMessage( TranslateMessage( DispatchMessage( >return msg.wParam; > LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) <
static int | cxChar, cxCaps, cyChar, cyClient, iVscrollPos; |
char | szBuffer[10]; |
HDC | hdc; |
int | i, y; |
PAINTSTRUCT | ps; |
TEXTMETRIC | tm; |
61 sysmetrics[i].szLabel, strlen(sysmetrics[i].szLabel) ); TextOut( hdc, cxChar + 22 * cxCaps, y, sysmetrics[i].szDesc, strlen(sysmetrics[i].szDesc) ); SetTextAlign(hdc, TA_RIGHT | TA_TOP); TextOut( hdc, cxChar + 22 * cxCaps + 40 * cxChar, y, szBuffer, wsprintf( szBuffer, «%5d», GetSystemMetrics(sysmetrics[i].iIndex) ) ); SetTextAlign(hdc, TA_LEFT | TA_TOP); > EndPaint(hwnd, return 0; case WM_DESTROY : PostQuitMessage(0); return 0; > return DefWindowProc(hwnd, iMsg, wParam, lParam); > Рис. 3.10 Программа SYSMETS2 К оконной процедуре WndProc добавляются две строки для установки диапазона и положения вертикальной полосы прокрутки во время обработки сообщения WM_CREATE: SetScrollRange(hwnd, SB_VERT, 0, NUMLINES, FALSE); SetScrollPass(hwnd, SB_VERT, iVscrollPos, TRUE); Структура sysmetrics содержит NUMLINES строк текста, поэтому границы диапазона полосы прокрутки устанавливается от 0 до NUMLINES.
Каждое положение полосы прокрутки соответствует строке текста в верхней части рабочей области. Если бегунок полосы прокрутки находится в положении 0, то в окне сверху остается пустая строка. При увеличении значения, определяющего положение полосы прокрутки, путем перемещения бегунка вниз, текст будет подниматься.
Если положение бегунка полосы прокрутки находится в крайнем нижнем положении полосы, то последняя строка текста находится на самом верху рабочей области окна. Для упрощения обработки сообщений WM_VSCROLL статическая переменная с именем iVscrollPos определяется внутри оконной процедуры WndProc . Эта переменная соответствует текущему положению бегунка полосы прокрутки. Что касается сообщений SB_LINEUP и SB_LINEDOWN, то все, что нужно сделать, это изменить положение прокрутки на 1. При получении сообщений SB_PAGEUP и SB_PAGEDOWN появляется возможность перемещать текст постранично (вернее «поэкранно»), или, что то же самое, изменять положение полосы прокрутки на величину, равную cyClient деленную на cyChar . Для SB_THUMBPOSITION новое положение бегунка определяется старшим словом wParam . Сообщения SB_ENDSCROLL и SB_THUMBTRACK игнорируются. Затем параметр iVscrollPos устанавливается с использованием макросов min и max , чтобы гарантировать, что значение параметра будет находиться между минимальным и максимальным значениями диапазона. Если положение прокрутки изменилось, оно обновляется с помощью функции SetScrollPos и все окно делается недействительным путем вызова InvalidateRect . При вызове функции InvalidateRect вырабатывается сообщение WM_PAINT. Когда исходная программа SYSMETS1 обрабатывала сообщение WM_PAINT, координата y для каждой строки рассчитывалась следующим образом:
Источник: studfile.net
Вывод текста на экран и устройство в Windows
Полосы прокрутки широко используются в приложениях Windows для просмотра текста или изображения, не помещающегося в окне. Полосы прокрутки бывают горизонтальными и вертикальными. Горизонтальная и вертикальная полосы прокрутки посылают в функцию родительского окна сообщения WM_HSCROLL и WM_VSCROLL соответственно. Поэтому функция обработки сообщений родительского окна должна обрабатывать эти сообщения. Параметр WParam сообщений несёт информацию о действии, которое выполнялось над полосой прокрутки.
Создание полосы прокрутки
Во-первых, Вы можете создать полосу прокрутки с помощью функции CreateWindow , указав предопределённый класс окна «scrollbar» . Этот способ аналогичен способу создания кнопок или статических органов управления. Этот способ подробно рассматривается в книге [39 ]. Во-вторых, при создании окна на базе своего собственного класса Вы можете указать, что окно должно иметь горизонтальную, вертикальную или обе полосы прокрутки. Этот способ мы и рассмотрим.
Второй способ создания полос чрезвычайно прост, но с его помощью можно создать только одну горизонтальную и одну вертикальную полосы прокрутки, расположенные по краям окна. Для того чтобы эта полосы прокрутки появились в окне, при регистрации класса окна в третьем параметре функции CreateWindow необходимо указать стиль окна WS_VSCROLL , или WS_HSCROLL, или оба стиля вместе.
hwnd = CreateWindow( szClassName, szWindowTitle, // Стиль окна WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, hInstance, NULL );
Сообщения от полосы прокрутки рассматриваются в таблице 12.6.
SB_LEFT | Сдвиг влево на начало документа (горизонтальная полоса прокрутки) |
SB_TOP | Сдвиг вверх на начало документа (вертикальная полоса прокрутки) |
SB_LINELEFT | Сдвиг влево на одну строку |
SB_LINEUP | Сдвиг вверх на одну строку |
SB_PAGELEFT | Сдвиг на одну страницу влево |
SB_PAGEUP | Сдвиг на одну страницу вверх |
SB_RIGHT | Сдвиг вправо в конец документа (горизонтальная полоса прокрутки) |
SB_BOTTOM | Сдвиг вниз в конец документа (вертикальная полоса прокрутки) |
SB_LINERIGHT | Сдвиг вправо на одну строку |
SB_LINEDOWN | Сдвиг вниз на одну строку |
SB_PAGERIGHT | Сдвиг на одну страницу вправо |
SB_PAGEDOWN | Сдвиг на одну страницу вниз |
SB_THUMBPOSITION | Сдвиг в абсолютную позицию. Текущая позиция определяется младшим словом параметра lParam |
SB_ENDSCROLL | Сообщение приходит в момент, когда вы отпускаете клавишу мыши после работы с полосой просмотра. Это сообщение обычно игнорируется (передаётся функции DefWindowProc ) |
SB_THUMBTRACK | Перемещение ползунка просмотра. Текущая позиция определяется младшим словом параметра lParam |
Инициализация полосы просмотра
Для полосы прокрутки определены понятия «текущая позиция» и «диапазон изменения значений позиции». При передвижении ползунка вдоль полосы прокрутки текущая позиция принимает дискретные значения внутри диапазона изменения значений позиции. Если ползунок находится в самом левом или самом верхнем положении, текущая позиция является минимальной. Если ползунок находится в самом правом или самом нижнем положении, текущая позиция является максимальной.
После того, как Вы создали полосу прокрутки, её необходимо проинициализировать, указав диапазон изменений значений позиции. Для этого необходимо вызвать функцию: SetScrollRange , описанную ниже:
- HWND hwnd — определяет идентификатор окна, имеющего полосу прокрутки, или идентификатор полосы прокрутки, созданного как орган управления;
- int fnBar — определяет один из типов полосы прокрутки. Его значения смотри в Таблице 12.7;
- Целые (int) параметры nMin и nMax определяют соответственно минимальное и максимальное значение для диапазона позиций. Разность между nMax и nMin не должны превышать числа 32767;
- BOOL fRedraw — Определяет, нужно ли перерисовывать полосу прокрутки для отражения изменений. Если значение равно TRUE , то полоса прокрутки будет перерисована, и FALSE — полоса прокрутки остаётся без изменений;
Всегда можно узнать диапазон для полосы просмотра, вызвав функцию GetScrollRange :
- HWND hwnd — определяет идентификатор окна, имеющего полосу прокрутки, или идентификатор полосы прокрутки, созданного как орган управления;
- int fnBar — определяет один из типов полосы прокрутки. Его значения смотри в Таблице 12.7;
- В значения для дальних указателей на целые числа (int FAR*) , lpnMin и lpnMax будет записано соответственно минимальное и максимальное значение для диапазона позиций. Разность между nMax и nMin не должны превышать числа 32767;
Другие функции, управляющие режимом отображения полос прокрутки, смотри в книге [39].
SB_CTL | Установка диапазона полосы прокрутки, созданной как орган управления класса «scrollbar» . В этом случае параметр hwnd функции SetScrollRange и других должен содержать идентификатор органа управления, полученный при его создании функцией CreateWindow |
SB_HORZ | Установка диапазона горизонтальной полосы прокрутки, при создании которой был использован стиль окна WS_HSCROLL . Параметр функции hwnd должен содержать идентификатор окна, имеющий эту полосу прокрутки. |
SB_VERT | Установка диапазона вертикальной полосы прокрутки, при создании которой был использован стиль окна WS_VSCROLL . Параметр функции hwnd должен содержать идентификатор окна, имеющий эту полосу прокрутки. |
12.11. Приложение № V
Пример программы на основе библиотек WinAPI для вывода текста в рабочее окно с вертикальной полосой прокрутки.
Данная программа оптимизирована под среду разработки Borland C/C++ 3.1.
Замечания к текстам примеров
Вывод текста в рабочую область экрана осуществляется только при обработке прерывания WM_PAINT . Собственно перед выводом текста необходимо провести так называемую «инициализацию окна», вызвав функцию: PrintInitHDC_scroll без параметров. Эта функция устанавливает начальную позицию вывода в рабочей области окна при её перерисовке (отступ сверху — 1 интервал, отступ слева — 0,5 от ширины литеры указанного шрифта). Это необходимо сделать, поскольку при каждом приёме сообщения WM_PAINT окно перерисовывается заново.
Затем идут собственно функции вывода текста в окно PrintHDC_scroll и PrintLnHDC_scroll .
Первая из этих функций выводит текст в окно без перехода на другую строку. Новый вывод будет производиться в той же строке, начальная позиция которой будет равна «числу напечатанных символов» * «максимальную ширину литера шрифта». В Бейсике это эквивалентно командам:
TAB(«позиция»); PRINT «строка»;
Вторая функция после вывода строки переносит новую позицию вывода в начало следующей строки таблицы — вертикальный сдвиг в 1 интервал и начальная горизонтальная позиция — половина ширины символа от рамки окна. Обе функции в качестве параметров воспринимают контекст устройства и выводимую на экран строку текста.
Обработка нажатия клавиш на клавиатуре и изменение позиции вертикальной полосы просмотра происходит отдельно от вывода текста. При этом изменяются только специальные переменные, содержащие дополнительную информацию для вывода текста. После этого происходит вызов сообщения: «WM_PAINT» , и текст выводится в рабочую область окна. Остальные функции и параметры претерпели мало изменений относительно тех функций, описанных в приложениях №№ III — VI «Ввод-вывод с использованием WinAPI» данного курса.
Источник: intuit.ru
Создание полос прокрутки
При создании перекрывающегося, всплывающего или дочернего окна можно добавить стандартные полосы прокрутки с помощью функции CreateWindowEx и указать WS_HSCROLL, WS_VSCROLL или оба стиля.
Это важно знать
Технологии
Предварительные требования
- C/C++
- Программирование пользовательского интерфейса Windows
Инструкции
Создание полосы прокрутки
В следующем примере создается окно со стандартными горизонтальными и вертикальными полосами прокрутки.
hwnd = CreateWindowEx( 0, // no extended styles g_szWindowClass, // global string containing name of window class g_szTitle, // global string containing title bar text WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL, // window styles CW_USEDEFAULT, // default horizontal position CW_USEDEFAULT, // default vertical position CW_USEDEFAULT, // default width CW_USEDEFAULT, // default height (HWND) NULL, // no parent for overlapped windows (HMENU) NULL, // use the window class menu g_hInst, // global instance handle (PVOID) NULL // pointer not needed );
Чтобы обработать сообщения полосы прокрутки для этих полос прокрутки, необходимо включить соответствующий код в процедуру окна main.
Для создания полосы прокрутки можно использовать функцию CreateWindowEx , указав класс окна SCROLLBAR. При этом создается горизонтальная или вертикальная полоса прокрутки в зависимости от того, указан ли SBS_HORZ или SBS_VERT в качестве стиля окна. Также можно указать размер полосы прокрутки и ее положение относительно родительского окна.
В следующем примере создается горизонтальная полоса прокрутки, расположенная в нижней части клиентской области родительского окна.
// Description: // Creates a horizontal scroll bar along the bottom of the parent // window’s area. // Parameters: // hwndParent — handle to the parent window. // sbHeight — height, in pixels, of the scroll bar. // Returns: // The handle to the scroll bar. HWND CreateAHorizontalScrollBar(HWND hwndParent, int sbHeight) < RECT rect; // Get the dimensions of the parent window’s client area; if (!GetClientRect(hwndParent, // Create the scroll bar. return (CreateWindowEx( 0, // no extended styles L»SCROLLBAR», // scroll bar control class (PTSTR) NULL, // no window text WS_CHILD | WS_VISIBLE // window styles | SBS_HORZ, // horizontal scroll bar style rect.left, // horizontal position rect.bottom — sbHeight, // vertical position rect.right, // width of the scroll bar sbHeight, // height of the scroll bar hwndParent, // handle to main window (HMENU) NULL, // no menu g_hInst, // instance owning this window (PVOID) NULL // pointer not needed )); >
Источник: learn.microsoft.com