Неизвестные расширенные значения стиля окна из GetWindowLong и GetWindowInfo
Я вызываю запрос к расширенным стилям окна, используя свойство GetWindowLog, и оно возвращает значения во многих случаях, которые не описаны в msdn.
В частности, 0x00000800L и 0x00000100L или их комбинация. У кого-нибудь есть информация об этих значениях или более полный список, чем то, что задокументировано на сайте msdn?
3 ответа
Я наткнулся на эту тему, ища ответ, почему это значение изменяется, когда Microsoft Word "исчезает" в окне. Я поддерживаю приложение, которое отслеживает значения HWND для совместного использования приложений. Это хорошо работает, но приложения Microsoft Office часто обрабатывают их необычными способами. В этом конкретном случае я обнаружил, что если вы делаете следующее в Microsoft Word 2013:
- Откройте два новых документа в отдельных окнах.
- Сохраните значения HWND для обоих окон.
- Закройте одно из двух окон.
Оба значения 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% совместим с окнами)