На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> полоса прокрутки CScrollView MFC , полоса прокрутки CScrollView MFC
    Делаю шаблонный проект с базовым классом CScrollView, в функцию ::OnInitialUpdate() добавляю инициализацию размера области по ширине(х) = 100`000

    ExpandedWrap disabled
      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.
    помогите плиз разобраться.
      При прокрутке вручную посылаются сообщения WM_HSCROLL/VSCROLL, в котором позиция передаётся через HIWORD(wParam). CScrollView обрабатывает именно это значение позиции.
        хм... а как тогда обойти этот пережиток прошлого 16бит ? ON_WM_MOUSEMOVE() ON_WM_LBUTTONUP() и пр. не обрабатываются нажатием на скролбаре
          Цитата gugoshenka @
          хм... а как тогда обойти этот пережиток прошлого 16бит ?


          Обработать сообщения WM_VSCROLL, получить текущую позицию при помощи GetScrollInfo и, наверное, вызвать CScrollView::OnScroll.
            спс ! получилось :)

            Добавлено
            хотя получается это недоработка :) приходится преобразовывать стандартную функцию.. которая заложена MFC что бы получить расширение... ладно бы какое так важное, а тут битности переменной :crazy: :wall:
            Сообщение отредактировано: gugoshenka -
              Цитата gugoshenka @
              хотя получается это недоработка приходится преобразовывать стандартную функцию.. которая заложена MFC что бы получить расширение...


              Это косяк в MFC, там их много.
              Ты не преобразоваваешь стандартную функцию, а просто обрабатывешь сообщение, что вполне нормально.
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0225 ]   [ 16 queries used ]   [ Generated: 25.04.24, 07:13 GMT ]