Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.114.38] |
|
Сообщ.
#1
,
|
|
|
Делаю шаблонный проект с базовым классом CScrollView, в функцию ::OnInitialUpdate() добавляю инициализацию размера области по ширине(х) = 100`000
void CMFCApplication6View::OnInitialUpdate() { CScrollView::OnInitialUpdate(); CSize sizeTotal; CSize sizeTotal_1; CSize sizeTotal_2; sizeTotal.cx = 100000; sizeTotal.cy = 0; sizeTotal_1.cx = 50; sizeTotal_1.cy = 50; sizeTotal_2.cx = 10; sizeTotal_2.cy = 10; SetScrollSizes(MM_TEXT, sizeTotal, sizeTotal_1, sizeTotal_2); } создается полоса именно на 100000 позиций, стрелкой в право можно дойти до тех самых 100000, через SetScrollPos(SB_HORZ, 100000, 1); позиция ползунка так же переходит на 100000 , однако если перетаскивать ползунок в ручную по скроллбару перемещение ограничивается 32767 т.е. short ... как так ? функция поддерживает же int. помогите плиз разобраться. |
Сообщ.
#2
,
|
|
|
При прокрутке вручную посылаются сообщения WM_HSCROLL/VSCROLL, в котором позиция передаётся через HIWORD(wParam). CScrollView обрабатывает именно это значение позиции.
|
Сообщ.
#3
,
|
|
|
хм... а как тогда обойти этот пережиток прошлого 16бит ? ON_WM_MOUSEMOVE() ON_WM_LBUTTONUP() и пр. не обрабатываются нажатием на скролбаре
|
Сообщ.
#4
,
|
|
|
Цитата gugoshenka @ хм... а как тогда обойти этот пережиток прошлого 16бит ? Обработать сообщения WM_VSCROLL, получить текущую позицию при помощи GetScrollInfo и, наверное, вызвать CScrollView::OnScroll. |
Сообщ.
#5
,
|
|
|
спс ! получилось
Добавлено хотя получается это недоработка приходится преобразовывать стандартную функцию.. которая заложена MFC что бы получить расширение... ладно бы какое так важное, а тут битности переменной |
Сообщ.
#6
,
|
|
|
Цитата gugoshenka @ хотя получается это недоработка приходится преобразовывать стандартную функцию.. которая заложена MFC что бы получить расширение... Это косяк в MFC, там их много. Ты не преобразоваваешь стандартную функцию, а просто обрабатывешь сообщение, что вполне нормально. |