Неизвестные расширенные значения стиля окна из GetWindowLong и GetWindowInfo - PullRequest
0 голосов
/ 14 января 2011

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

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

Ответы [ 3 ]

1 голос
/ 13 января 2017

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

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

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

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

0 голосов
/ 27 марта 2011

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

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

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

керо

0 голосов
/ 14 января 2011

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

Style:

  • Dialog & old (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% окна)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...