Как удлинить бегунок полосы прокрутки?

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Как удлинить бегунок полосы прокрутки?
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Ширина бегунка зависит от диапазона, который задан для контрола scrollbar. Чем больше диапазон, тем меньше бегунок. Диапазон задаётся с помощью функции SetScrollRange, но этот способ хорош только в том случае, если ты полностью самостоятельно обрабатываешь все сообщения от скролбара. Если же скролбар у тебя какого-нибудь RichEdit'а, то изменив диапазон ты полностью поломаешь его работу, так как RichEdit выставляет диапазон, полагаясь на собственные расчёты о количестве строк/символов в строке в тексте. Так что в случае готового контрола могу лишь посоветовать сабклассинг, да и то лишь в том случае, если скролбар у этого контрола отдельный, а не отрисованный муляж (если он был через стиль окна указан).
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Если бы. В том то и дело, что длина одна при диапазоне от 0 до 1 и от 0 до >600, а не как в билдере.
но этот способ хорош только в том случае, если ты полностью самостоятельно обрабатываешь все сообщения от скролбара.
А что, можно ещё не самостоятельно? Не смешно.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Сионист писал(а):Если бы. В том то и дело, что длина одна при диапазоне от 0 до 1 и от 0 до >600, а не как в билдере.
Покажи, как создаёшь скролбар. Может что-то неправильно делаешь.
Сионист писал(а):А что, можно ещё не самостоятельно? Не смешно.
Ты мог разместить на форме какой-нибудь RichEdit. У этого контрола есть свой скролбар и он сам управляет им.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

на форме
Кто то критиковал моё умение гуглить, а сам не может даже прочитать то, что уже написано в теме:
а не как в билдере
.
Покажи, как создаёшь скролбар.

Код: Выделить всё

SetScrollRange(Window, SB_HORZ, 0, MaxPosition, TRUE);
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Сионист писал(а):Кто то критиковал моё умение гуглить, а сам не может даже прочитать то, что уже написано в теме
Вот этого наезда я вообще не понял. Что тебя именно смущает в моих словах? Слово "форма" или что? К чему на этот раз ты прицепился и решил съязвить? Вот всегда так... пытаешься помочь человеку, а он не с того ни с всего начинает желчью истекать.
Сионист писал(а):

Код: Выделить всё

SetScrollRange(Window, SB_HORZ, 0, MaxPosition, TRUE);
А если вызвать GetScrollInfo, то в какую величину выставлена nPage в структуре? Случайно не ноль? Причём желательно эту функцию вызывать уже после инициализации диалога (или создания окна, если это не диалог).
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Вот этого наезда я вообще не понял. Что тебя именно смущает в моих словах? Слово "форма" или что?
Ну если
не как на билдере
, значит и не на билдере. А Вы после этого поминаете билдеровские формы и валяющиеся на них ричэдиты. Кстати, кто то в соседней теме пугал меня сложностью самостоятельного регулирования размеров скрола, но формы берут его на себя, а вот чтоб добраться до хендла VCL-ловых форточек, чтоб создать скролл как часть другой форточки, надо очень постараться.
А если вызвать GetScrollInfo, то в какую величину выставлена nPage в структуре?
Как её вообще юзать?
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Сионист писал(а): А Вы после этого поминаете билдеровские формы и валяющиеся на них ричэдиты.
Господин Сионист, я вообще никогда не писал на билдере. Термин "форма" я использовал исключительно как обобщающее название для всех окон, на которых можно размещать контролы. А RichEdit, да будет вам известно, является частью стандартных контролов Windows, а не билдеровской библиотеки VCL. Надеюсь, теперь вам понятно, моё недоумение, а также последующий ироничный тон в ответ на ваше эмоциональное фонтанирование, вызванное недостатком вашего образования?
Сионист писал(а):Как её вообще юзать??
Господи, ну ведь на MSDN в статье об этой функции даже пример есть... Неужели сложно вбить в гугл?
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Это который (!GetScrollInfo(hwnd, SB_HORZ, &si) )?
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Так точно, он самый.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить