пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Смуги прокручування та обробка їх повідомлень.

В общем, в операционной системе Windows существует два типа полос прокрутки. Элементы первого типа является частью окна (включая диалоговым окном). Их называют стандартными или оконными полосами прокрутки. Элементы второго типа существуют независимо и поэтому называются независимыми полосами прокрутки. Первые описываются в классе CWnd, вторые - с помощью класса CScrollBar. Для того, чтобы окно содержало стандартные полосы прокрутки необходимо вы-значить соответствующие стили.

CMainWin :: CMainWin ()

[Create (NULL, "Простая MFC-программа",

  WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL, rectDefault, NULL, MAKEINTRESOURCE (IDR_MENU1));]

Для диалоговых окон ситуация значительно проще: в свойствах сабля-на диалогового окна следует лишь отметить "Horizontal scroll", "Vertical Scroll".

Каждая макрокоманда имеет свой обработчик:

void CWnd :: OnVScroll (UINT nSBCode, UINT nPos, CScrollBar * pScrollBar);

void CWnd :: OnHScroll (UINT nSBCode, UINT nPos, CScrollBar * pScrollBar);

где nSBCode - код действия с полосой прокрутки, nPos - определяет позицию полосы прокрутки (если не направлены коды SB_THUMBPOSITION или SB_THUMBTRACK), pScrollBar - указатель на объект полосы прокрутки (имеет значение NULL, если сообщение пришло от стандартной полосы прокрутки).

void CMainWin :: OnVScroll (UINT SBCode, INT Pos, CScrollBar * SB)

[char str [255];

   switch (SBCode)

  [case SB_LINEDOWN: vspos ++; break;

   case SB_LINEUP: vspos -; break;

   case SB_PAGEDOWN: vspos + = 5; break;

   case SB_PAGEUP: vspos- = 5; break;

   case SB_THUMBTRACK: vspos = Pos; break;

   case SB_THUMBPOSITION: vspos = Pos; break;

  ]

  InvalidateRect (NULL); // Обновление всего окна

  SetScrollPos (SB_VERT, vspos); ]


22.06.2015; 09:38
хиты: 227
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь