Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Подсказки (tooltips) в диалоговых окнах

16.09.2009 | Категория: Образ мышления: Assembler | Автор: ManHunter
Еще один способ придать вашим программам профессиональный вид - использование всплывающих подсказок (tooltips), которые появляются при наведении курсора мыши на какой-нибудь элемент диалогового окна. Готовые примеры на FASM или слишком громоздкие, или недостаточно гибкие, поэтому пришлось придумывать что-то свое. Причем с самого начала поставил себе задачу сделать функции работы с подсказками как можно более универсальными, чтобы в дальнейшем их можно было легко использовать в других проектах.

В сегменте данных определим все необходимые константы, переменные и структуры. Большая часть этих данных в FASM по умолчанию отсутствует, так что пришлось штудировать MSDN и другие источники и описывать их самостоятельно.
  1. ; Сегмент данных
  2. section '.data' data readable writeable  
  3.  
  4. hwndTip         dd ?    ; Хэндл окна подсказки
  5. TTipFlag        dd ?    ; Флаг активности подсказки
  6.  
  7. ; Структура TRACKMOUSEEVENT не определена, сделаем это сами
  8. struct TRACKMOUSEEVENT
  9.   cbSize        dd ?
  10.   dwFlags       dd ?
  11.   hwndTrack     dd ?
  12.   dwHoverTime   dd ?
  13. ends
  14.  
  15. ; Определяем нужные структуры
  16. tme     TRACKMOUSEEVENT
  17. pt      POINT
  18. ttip    TOOLINFO
  19. trect   RECT
  20.  
  21. oldX    dd ?    ; Сохраненные координаты мыши
  22. oldY    dd ?
  23.  
  24. ; Определяем нужные константы
  25. TTM_TRACKACTIVATE  = WM_USER + 17
  26. TTM_TRACKPOSITION  = WM_USER + 18
  27. TTM_SETMAXTIPWIDTH = WM_USER + 24
  28.  
  29. ; Сообщения окну подсказки
  30. TTF_SUBCLASS       = 0x0010
  31. TTF_TRACK          = 0x0020
  32. TTF_ABSOLUTE       = 0x0080
  33. TTF_TRANSPARENT    = 0x0100
  34.  
  35. ; Сообщение обработчика мыши
  36. TME_LEAVE          = 0x00000002
  37.  
  38. ; Максимальная ширина всплывающей подсказки
  39. TOOLTIP_WIDTH      = 200
  40.  
  41. ; Предустановленное количество элементов в массиве подсказок
  42. TOOLTIPS_COUNT     = 5
  43.  
  44. ; Массив данных для всплывающих подсказок
  45. ; Формат массива:
  46. ;   1 DWORD - сохраненный адрес обработчика
  47. ;   2 DWORD - адрес подсказки
  48. tt_data rd  (TOOLTIPS_COUNT*2)
Для добавления подсказок к элементам диалогового окна я написал отдельную процедуру, использующую субклассирование. Она же является процедурой, создающей исходное окно подсказки, если оно до этого не было создано. Окну подсказки присваивается максимальная ширина, определяемая константой TOOLTIP_WIDTH, и для большей изящности добавляется эффект тени.

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

Поздравляю с Днем программиста!

13.09.2009 | Категория: Всякая всячина | Автор: ManHunter

Поздравляю с Днем программиста!

Наступил 256-й день года, значит программисты всего мира празднуют свой профессиональный праздник. Программист - это не тот, кто пишет программы, а тот, чьи программы работают. Я хочу пожелать всем коллегам работающего кода, поменьше багов, достойной оплаты труда, успехов в личной жизни, настоящих друзей в реале, а также остальных материальных и духовных благ :) С праздником!

Просмотров: 8192 | Комментариев: 6

Готовим дагестанские чуду

10.09.2009 | Категория: А еще я туда ем! | Автор: ManHunter

Дагестанские чуду

Чуду (ударение на втором слоге) - национальное блюдо народностей Дагестана. Когда я там был, чуду стали моим любимым блюдом, причем в разных районах республики и чуть ли не в каждой кафешке их готовили по-разному. Перед вами один из самых простых рецептов этой кавказской вкуснятины.

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

Выставка "Орудия пыток средневековья"

07.09.2009 | Категория: Жизнь в оффлайне | Автор: ManHunter

Выставка "Орудия пыток средневековья"

В отпуске снова съездил в Питер отдохнуть. Гуляя по городу, завернул в Петропавловскую крепость на выставку "Орудия пыток средневековья". Я был тут два года назад, с тех пор экспозиция очень изменилась, и не вся в лучшую сторону. Поэтому я собрал фотографии с обеих посещений, они как раз очень удачно дополняют друг друга. Не рекомендуется к просмотру впечатлительным людям и людям со слабой психикой.

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

Фестиваль "Dark Forest"

05.09.2009 | Категория: Жизнь в оффлайне | Автор: ManHunter

Фестиваль "Dark Forest"

Сегодня вроде как День города, но всякие массовые мероприятия вызывают у меня стойкое отвращение, поэтому я отправился на концерт. Тем более клуб "Релакс" сегодня открылся после ремонта, и это первый концерт в обновленном зале. Клуб действительно стал лучше, концертный зал расширился, в нем появились работающие кондиционеры, столики, барные стойки, наконец-то отремонтировали туалеты, и вообще теперь клуб поднялся на качественно новый уровень.

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

01 ... 390 391 392 393 394 395 396 ... 426
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2025
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.1 сек. / MySQL: 2 (0.0312 сек.) / Память: 4.5 Mb
Наверх