Blog. Just Blog

Тюнингуем контрол msctls_trackbar32

28.04.2024 | Категория: Образ мышления: Assembler | Автор: ManHunter
За время существования этого сайта тут было доработано уже несколько различных стандартных элементов управления, настало время провести тюнинг контрола msctls_trackbar32. Создается он обычным образом, например, через прописывание в ресурсах. Обязательно надо добавить в импорт библиотеку comctl32.dll и вызвать функцию InitCommonControls. Ну а поскольку мы будем добавлять к контролу различные нестандартные функции, то и делать это будем в специально отведенной процедуре-обработчике. Для этого воспользуемся субклассированием. Действия стандартные, примеров субклассирования на этом сайте предостаточно.
  1.         ; Настройки ползунка
  2.         invoke  GetDlgItem,[hwnddlg],IDC_PROGRESS
  3.         mov     [track],eax
  4.  
  5.         ; Установить наш собственный обработчик
  6.         invoke  SetWindowLong,[track],GWL_WNDPROC,TrackProc
  7.         ; Сохранить хэндл предыдущего обработчика
  8.         invoke  SetWindowLong,[track],GWL_USERDATA,eax
Теперь немного расскажу о расширенном функционале, который будет добавлен к ползунку. Во-первых, мне не нравится рамка, которая появляется при получении фокуса контролом. Конечно, это вроде как стандартное поведение, вроде так и должно быть, но мне все равно не нравится. Во-вторых, мне не нравится поведение ползунка при прокрутке контрола колесиком мыши. Лично я считаю, что поворот колесика мыши вперед должно увеличивать прогресс чего-либо, а поворот назад, соответственно, уменьшать. Стандартное же поведение ползунка ровно противоположное. Ну и третье, главное, что клик на полоске не переносит ползунок точно в эту позицию, а только сдвигает его на установленный шаг в указанном направлении.

Читать статью целиком »
Просмотров: 358 | Комментариев: 0

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2025
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.08 сек. / MySQL: 1 (0.0163 сек.) / Память: 4.5 Mb
Наверх