Blog. Just Blog

Получение информации о заголовке окна

12.06.2020 | Категория: Образ мышления: Assembler | Автор: ManHunter
Манипулировать кнопками в заголовке окна мы уже научились. А как узнать, какие кнопки отображаются в заголовке окна и в каком они состоянии? Конечно, можно пройтись по стилям, по меню, но правильнее будет воспользоваться следующей информацией. Мне кажется, она станет хорошим дополнением к статье об управлении кнопками в заголовке окна.

Для получения подробной информации о заголовке окна ему отправляется сообщение WM_GETTITLEBARINFOEX. Если все прошло успешно, на выходе получается заполненная структура TITLEBARINFOEX, в которой содержится информация о позициях и состоянии кнопок в заголовке окна, а также о размере самого заголовка.

Сперва надо описать структуру TITLEBARINFOEX и несколько констант, так как FASM в базовой комплектации о них не знает. Скорее всего это потому, что сообщение WM_GETTITLEBARINFOEX поддерживается только в Windows Vista и выше.
  1. struct TITLEBARINFOEX
  2.         cbSize        dd ?
  3.         rcTitleBar    RECT
  4.         stateTitleBar dd ?
  5.         sReserved1    dd ?
  6.         stateMinimize dd ?
  7.         stateMaximize dd ?
  8.         stateHelp     dd ?
  9.         stateClose    dd ?
  10.         rReserved0    RECT
  11.         rReserved1    RECT
  12.         rectMinimize  RECT
  13.         rectMaximize  RECT
  14.         rectHelp      RECT
  15.         rectClose     RECT
  16. ends
  17.  
  18. WM_GETTITLEBARINFOEX     = 0x033F
  19.  
  20. STATE_SYSTEM_FOCUSABLE   = 0x00100000
  21. STATE_SYSTEM_INVISIBLE   = 0x00008000
  22. STATE_SYSTEM_OFFSCREEN   = 0x00010000
  23. STATE_SYSTEM_UNAVAILABLE = 0x00000001
  24. STATE_SYSTEM_PRESSED     = 0x00000008
При описании TITLEBARINFOEX я немного отошел от MSDN'овского описания, там состояния и координаты описаны шестиэлементными массивами, а я для удобства работы дал им осмысленные имена вместо числовых индексов. Сути это не меняет, размера структуры тоже.

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

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