Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915

Закрепить часть области окна при скроллинге

15.09.2020, 00:09. Показов 888. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,

Пытаюсь Закрепить часть области окна при скроллинге, ну то есть, знаете, как в екселе верхняя строка закрепляется, чтобы она была фиксированная и чтобы при прокрутке данных всегда оставалась видимо, а не прокручивалсь вместе с остальными данными:

И вроде бы получается, но получается, как то не совсем правильно:

Сколллинг осуществляю при помощи функции: ScrollWindowEx, в структуре RECT_ - как раз указывается та область окна, которая должна прокрутчиватся, остальная часть соответственно не прокручивается:
C++
1
2
3
4
5
6
RECT_k.left = 0;
RECT_right = 800;
RECT_.top = 200;
RECT_.bottom = 2000;
 
ScrollWindowEx(hWnd, 0, Y_offset, &RECT_, NULL, NULL, NULL, SW_ERASE | SW_INVALIDATE | SW_SCROLLCHILDREN);
Есть обычное стандартно созданное окно:


Далее я делаю скроллинг вниз: как видно кнопки 0,1,2 ушли, как бы за отсеченную область, причем кнопки Add и My_button остались на месте...


И все бы было классно, но, когда я делаю скролл обратно вверх, то получается вот это:


И когда полностью разворачиваю окно, то оказывается 0,1 - куда то пропали, а между кнопками 2 и 3 появилось вообще какое то пространство.
Миниатюры
Закрепить часть области окна при скроллинге  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.09.2020, 00:09
Ответы с готовыми решениями:

Зафиксировать меню в одном положении в области формы при ее скроллинге
Здравствуйте, появился такой вопрос, у меня на форме AutoScroll, а также стоит MenuStrip мне надо чтобы когда я перемещаюсь по форме с...

Постоянный отступ от окна браузера при скроллинге странички
Столкнулся с такой идеей: необходимо, чтобы при пролистывании страницы (вверх или вниз) верхняя часть сайта(там расположен логотип сайта и...

Закрепить страницу, чтобы не смещялось все, при уменьшении окна браузера
Подскажите пожалуйста, как это сделать...

6
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
15.09.2020, 00:16  [ТС]
Но куда деваются кнопки и почему дочернее окно в виде кнопки вообще меняет свои координаты расположения - что то не могу понять.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
15.09.2020, 11:31
Цитата Сообщение от Optimus11 Посмотреть сообщение
Но куда деваются кнопки и почему дочернее окно в виде кнопки вообще меняет свои координаты расположения - что то не могу понять.
Использовать ScrollWindowEx для прокрутки дочерних окон, это не самая лучшая идея
If the SW_SCROLLCHILDREN flag is specified, the system does not properly update the screen if part of a child window is scrolled. The part of the scrolled child window that lies outside the source rectangle is not erased and is not properly redrawn in its new destination. To move child windows that do not lie completely within the rectangle specified by prcScroll, use the DeferWindowPos function. The cursor is repositioned if the SW_SCROLLCHILDREN flag is set and the caret rectangle intersects the scroll rectangle.
https://docs.microsoft.com/en-... llwindowex

Добавлено через 4 минуты
И, лучше прокручивать окно полностью, а не отдельный квадрат внутри
И ещё -
ScrollWindowEx(hWnd, 0, Y_offset, &RECT_, &RECT_, NULL, NULL, SW_ERASE | SW_INVALIDATE | SW_SCROLLCHILDREN)
1
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
15.09.2020, 11:39  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Добавлено через 4 минуты
И, лучше прокручивать окно полностью, а не отдельный квадрат внутри
Так если прокручивать окно полностью, то кнопка Add - тоже будет прокручиваться, а мне бы хотелось, чтобы она занимала всегда одно и тоже положение в не зависимости от прокрутки.


Цитата Сообщение от oleg-m1973 Посмотреть сообщение
ScrollWindowEx(hWnd, 0, Y_offset, &RECT_, &RECT_, NULL, NULL, SW_ERASE | SW_INVALIDATE | SW_SCROLLCHILDREN)
Так я пробывал, результат тот же.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
15.09.2020, 11:42
Цитата Сообщение от Optimus11 Посмотреть сообщение
Так если прокручивать окно полностью, то кнопка Add - тоже будет прокручиваться, а мне бы хотелось, чтобы она занимала всегда одно и тоже положение в не зависимости от прокрутки.
Ну так сделай их в отдельном окне, зачем ты всё в одно запихал?
Цитата Сообщение от Optimus11 Посмотреть сообщение
Так я пробывал, результат тот же.
Ну да, в случае с контролами тот же. Я тебе показал цитату насчёт SW_SCROLLCHILDREN. А так, надо выставлять (во всяком случае, у меня везде выставлено, не помню уже зачем).
1
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
15.09.2020, 12:46  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Ну так сделай их в отдельном окне, зачем ты всё в одно запихал?

Ну да, в случае с контролами тот же. Я тебе показал цитату насчёт SW_SCROLLCHILDREN. А так, надо выставлять (во всяком случае, у меня везде выставлено, не помню уже зачем).
Спасибо, понял, будут тогда делать в отдельном окне.

Добавлено через 36 минут
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Ну так сделай их в отдельном окне, зачем ты всё в одно запихал?
.
А отдельное окно - это дочернее окно имеется ввиду ?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
15.09.2020, 13:13
Цитата Сообщение от Optimus11 Посмотреть сообщение
А отдельное окно - это дочернее окно имеется ввиду ?
Да, помести эти кнопочки в дочернее окно и прокручивай его целиком
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.09.2020, 13:13
Помогаю со студенческими работами здесь

Закрепить области
Надо закрепить области, Ввожу ActiveWindow.SplitRow = 1 Но области не закрепляются, а разделяется окно... Как надо правильно...

Как закрепить области
доброго дня. У меня такой вопрос по офису 2013. Офис лицензионный активированный. Есть документ, в котором надо для удобства заполнения...

Закрепить картинку в области
Добрый день уважаемые форумчане. Возможно ли закрепить картинку в области данных, что бы не изменить ни сдвинуть ее нельзя было?

Закрытие модального окна при нажатии вне области
Как сделать, чтобы окно закрывалось при нажатии на крестик и при нажатии вне области. <li class="nav-item"> <a...

Закрытие всплывающего окна, при нажатии в любой области экрана
Добрый день. У меня есть два блока, при нажатии на которые появляется скрытый текст, но нужно чтобы он скрывался если будет произведен клик...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru