У меня (XP-pro-sp2) нагло врет WINDOWINFO.dwExStyle
(с остальными параметрами WINDOWINFO вроде ОК).
В аттаче микротестер, просьба сообщить — как там на вашей ОС...
Здравствуйте, kero, Вы писали:
K>У меня (XP-pro-sp2) нагло врет WINDOWINFO.dwExStyle K>(с остальными параметрами WINDOWINFO вроде ОК). K>В аттаче микротестер, просьба сообщить — как там на вашей ОС...
K>
Специальный апдейт для ленивых: добавлен определитель версии виндов.
Граждане программеры, очень интересует Win98, все-таки первая с WINDOWINFO.
Ну, и остальные тоже (хотя с XP SP2/SP3 уже понятно).
---------------------------
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;
...
Так что GetWindowLong просто отфильтровывает флаги какой то недокументированной константой WS_EX_ALLVALID а GetWindowInfo — нет. Зачем фильтруют — хз. Возможно прячут от любопытных глаз свои внутренние флажки а GetWindowInfo забыли добавить фильтрацию.
Здравствуйте, kero, Вы писали:
K>Специальный апдейт для ленивых: добавлен определитель версии виндов. K>Граждане программеры, очень интересует Win98, все-таки первая с WINDOWINFO.
Спасибо! И правда, невозможно было разработчикам прозевать такой ляп при первом же выпуске нового API.
AG>Кстати, там Ctrl+C в MessageBox не работает, так что может добавить копирование ри нажатии ОК ?
Так вся прелесть — в использовании готовенького. А добавить предложенное можно, только зачем, коли на 98 не только Ctrl+C, но и данный глюк не работает ?
Здравствуйте, Аноним, Вы писали:
[...]
Большущее спасибо за 2k8 сервер, но главное — за это, неведомое ни гуглу, ни мсдн: WS_EX_ALLVALID.
Признаться, прочитать подобный вашему ответ и надеялся. Ибо догадаться, что GetWindowInfo забывает кое-что замаскировать — несложно, но так хотелось опереться на первоисточник...
Кстати, возможные значения WS_EX_ALLVALID для "ремонта" WINDOWINFO.dwExStyle у меня получились такие: 0FFFF7FF — "сверху" 0A5F77FF — "снизу" (на XP-sp2).