Неизвестные расширенные значения стиля окна из GetWindowLong и GetWindowInfo

Я вызываю запрос к расширенным стилям окна, используя свойство GetWindowLog, и оно возвращает значения во многих случаях, которые не описаны в msdn.

В частности, 0x00000800L и 0x00000100L или их комбинация. У кого-нибудь есть информация об этих значениях или более полный список, чем то, что задокументировано на сайте msdn?

3 ответа

Я наткнулся на эту тему, ища ответ, почему это значение изменяется, когда Microsoft Word "исчезает" в окне. Я поддерживаю приложение, которое отслеживает значения HWND для совместного использования приложений. Это хорошо работает, но приложения Microsoft Office часто обрабатывают их необычными способами. В этом конкретном случае я обнаружил, что если вы делаете следующее в Microsoft Word 2013:

  1. Откройте два новых документа в отдельных окнах.
  2. Сохраните значения HWND для обоих окон.
  3. Закройте одно из двух окон.

Оба значения HWND будут при опросе с функциями Windows IsWindow, IsVisible и т. Д. Казаться нормальными, все еще видимыми и т. Д. Я не могу найти, чтобы сказать, что одно из окон было закрыто - кроме этого недокументированного значения dwExStyle, 0x800 будет "включен" в окне, которое все еще видно, и "выключен" в окне, которое больше не видно.

(Кстати, я знаю, что вы не "должны" сохранять значения HWND таким способом - но попробуйте отслеживать окна для совместного использования без сохранения этого значения - не так просто!)

Джереми, это всего лишь ошибка GetWindowInfo (для любой ОС после Win98: 2k, XP, Vista, Win7).

см. http://rsdn.ru/forum/winapi/3362548.all.aspx ("ошибка WINDOWINFO.dwExStyle")

попробуйте маленький тестер оттуда: http://files.rsdn.ru/42164/wi_exstyle.zip

керосиновой

Поскольку 0x00000100L указан прямо на странице " Расширенные стили окон", мне немного неясно, имеете ли вы в виду нормальный или расширенный стиль, поэтому я опишу оба.

Стиль:

  • Диалог & старые (user32) элементы управления
    • 0xFFFF для стилей управления / диалога
  • Общий контроль:
    • 0x00FF обычно используется общими общими стилями управления (CCS_NORESIZE, CCS_TOP и т. Д.)
    • 0xFF00 для управления определенными стилями, для панели инструментов вы должны иметь TBSTYLE_LIST, TBSTYLE_TRANSPARENT и т. Д.

ExStyle:

  • 0x00000100L = WS_EX_WINDOWEDGE
  • 0x00000800L = Не знаю, возможно, недокументированный флаг (Изменить: ReactOS имеет / имел 0x00000800 как WS_EX_MAKEVISIBLEWHENUNGHOSTED, это не означает, что он имеет то же значение для окон, так как ReactOS не на 100% совместим с окнами)
Другие вопросы по тегам