WINDOWINFO.dwExStyle error
От: kero Россия  
Дата: 16.04.09 02:52
Оценка:
У меня (XP-pro-sp2) нагло врет WINDOWINFO.dwExStyle
(с остальными параметрами WINDOWINFO вроде ОК).
В аттаче микротестер, просьба сообщить — как там на вашей ОС...

По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re: WINDOWINFO.dwExStyle error
От: Константин Л. Франция  
Дата: 16.04.09 13:29
Оценка: 4 (1)
Здравствуйте, kero, Вы писали:

K>У меня (XP-pro-sp2) нагло врет WINDOWINFO.dwExStyle

K>(с остальными параметрами WINDOWINFO вроде ОК).
K>В аттаче микротестер, просьба сообщить — как там на вашей ОС...

K>


---------------------------
Error
---------------------------
000100F2 "Progman"



00000080 GetWindowLong (GWL_EXSTYLE)

C0000880 WINDOWINFO.dwExStyle
---------------------------
OK
---------------------------

Re[2]: WINDOWINFO.dwExStyle error
От: kero Россия  
Дата: 16.04.09 14:28
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>

КЛ>---------------------------
КЛ>Error
КЛ>---------------------------
КЛ>000100F2 "Progman"



КЛ>00000080 GetWindowLong (GWL_EXSTYLE)

КЛ>C0000880 WINDOWINFO.dwExStyle
КЛ>---------------------------
КЛ>OK
КЛ>---------------------------

Наверное, тоже XP-pro-sp2 ?
Интересно, а как на sp3...
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[3]: WINDOWINFO.dwExStyle error
От: fuyant  
Дата: 18.04.09 18:53
Оценка: 4 (1)
Здравствуйте, kero, Вы писали:

K>Здравствуйте, Константин Л., Вы писали:


КЛ>>

КЛ>>---------------------------
КЛ>>Error
КЛ>>---------------------------
КЛ>>000100F2 "Progman"



КЛ>>00000080 GetWindowLong (GWL_EXSTYLE)

КЛ>>C0000880 WINDOWINFO.dwExStyle
КЛ>>---------------------------
КЛ>>OK
КЛ>>---------------------------

K>Наверное, тоже XP-pro-sp2 ?
K>Интересно, а как на sp3...

то же самое

---------------------------
Error
---------------------------
000100A2 "Progman"
00000080 GetWindowLong (GWL_EXSTYLE)
C0000880 WINDOWINFO.dwExStyle
---------------------------
OK
---------------------------

Re: WINDOWINFO.dwExStyle error
От: kero Россия  
Дата: 19.04.09 12:39
Оценка:
Специальный апдейт для ленивых: добавлен определитель версии виндов.
Граждане программеры, очень интересует Win98, все-таки первая с WINDOWINFO.
Ну, и остальные тоже (хотя с XP SP2/SP3 уже понятно).
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re: WINDOWINFO.dwExStyle error
От: Аноним  
Дата: 19.04.09 12:55
Оценка: 6 (1)

---------------------------
Ctrl+C
---------------------------
5.2.3790 Service Pack 1, v.1039



001B043C "Progman"



00000080 GetWindowLong (GWL_EXSTYLE)

00000880 WINDOWINFO.dwExStyle
---------------------------
OK
---------------------------




Все впрочем легко объясняется.
ULONG_PTR GetWindowData(
    PWND pwnd,
    int index,
    BOOL bAnsi)
{
....
    case GWL_EXSTYLE:
        /*
         * Apps should not mess with unused bits.  We use them privately
         */
        return pwnd->ExStyle & WS_EX_ALLVALID;
...


BOOL WINAPI
GetWindowInfo(HWND hwnd, PWINDOWINFO pwi)
{
...
        pwi->dwExStyle = pwnd->ExStyle;
...

Так что GetWindowLong просто отфильтровывает флаги какой то недокументированной константой WS_EX_ALLVALID а GetWindowInfo — нет. Зачем фильтруют — хз. Возможно прячут от любопытных глаз свои внутренние флажки а GetWindowInfo забыли добавить фильтрацию.
Re[2]: WINDOWINFO.dwExStyle error
От: Alexander G Украина  
Дата: 19.04.09 19:38
Оценка: 4 (1)
Здравствуйте, kero, Вы писали:

K>Специальный апдейт для ленивых: добавлен определитель версии виндов.

K>Граждане программеры, очень интересует Win98, все-таки первая с WINDOWINFO.

Win98 SE:

4.10.67766446 A

00000184 "Progman"

00000080 GetWindowLong (GWL_EXSTYLE)
00000080 WINDOWINFO.dwExStyle

Кстати, там Ctrl+C в MessageBox не работает, так что может добавить копирование ри нажатии ОК ?
Русский военный корабль идёт ко дну!
Re[3]: WINDOWINFO.dwExStyle error
От: kero Россия  
Дата: 22.04.09 01:01
Оценка:
Здравствуйте, Alexander G, Вы писали:

AG>Win98 SE:

AG>

AG>[...]
AG>00000080 GetWindowLong (GWL_EXSTYLE)
AG>00000080 WINDOWINFO.dwExStyle

Спасибо! И правда, невозможно было разработчикам прозевать такой ляп при первом же выпуске нового API.

AG>Кстати, там Ctrl+C в MessageBox не работает, так что может добавить копирование ри нажатии ОК ?


Так вся прелесть — в использовании готовенького. А добавить предложенное можно, только зачем, коли на 98 не только Ctrl+C, но и данный глюк не работает ?
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[2]: WINDOWINFO.dwExStyle error
От: kero Россия  
Дата: 22.04.09 01:08
Оценка:
Здравствуйте, Аноним, Вы писали:
[...]
Большущее спасибо за 2k8 сервер, но главное — за это, неведомое ни гуглу, ни мсдн: WS_EX_ALLVALID.
Признаться, прочитать подобный вашему ответ и надеялся. Ибо догадаться, что GetWindowInfo забывает кое-что замаскировать — несложно, но так хотелось опереться на первоисточник...

Кстати, возможные значения WS_EX_ALLVALID для "ремонта" WINDOWINFO.dwExStyle у меня получились такие:
0FFFF7FF — "сверху"
0A5F77FF — "снизу" (на XP-sp2).
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.