![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Если у программы активно модальное окно, то при активизации тем
Alexander © (2002-09-12 16:32:00)Windows XP программа не перерисовывает свой интерфейс в соответствии с темой. Если модального окна нет, то всё перерисовывается нормально.
Vit@l (2002-09-25 22:34:00) [1]
> После format c: исправилось? Или что за формат такой? :)
Ага, именно после него.
> Возможно, по замыслу архитекторов, сообщение посылается
> не всем окнам, а только тому, которое с точки их зрения
> является главным
Тогда мож вручную его всем отсылать? :)
Кладов (2002-09-25 21:47:00) [2]Такое ощущение, что раз все делается само (мы ведь не обращаемся нигде к Open/CloseThemeData), то и обработку WM_THEMECHANGED должен выполнить DefWindowProc. А если он этого не делает, то это действительно баг самого ХР. Почему проявляется только при наличии модального окна: подозреваю, что связано с тем, что в это время все прочие окна приложения находятся в состоянии disabled, т.е. Enabled = false. Возможно, по замыслу архитекторов, сообщение посылается не всем окнам, а только тому, которое с точки их зрения является главным. Возможно, только тем, которые имеют в расширенном стиле (ExStyle) WM_EX_APPWINDOW. Проверить можно так: добавить такой стиль к модальному окну. На панели задач появится еще одна кнопка, но для проверки это несущественно. После чего еще раз повторить переключение тем.
Gandalf (2002-09-23 19:46:00) [3]>У меня в msdn (jule,2001) нет WM_THEMECHANGED. Код какой? И >топик бы привести. А то не совсем понятно, как на него >реагировать-то. Может, реакцию лучше присоединить в комоненте >MhXP ?
Но тогда, он из MCK перейдет в KOLnMCK, при этом он все равно не сможет добавлять ресурс XP в чистый KOL проект. Думаю лучше так не деалть - тем более, что все-таки как нибуть сделаю KOLProjectAdv=KOLProject+XP+VersionInfo.
Мой MSDN не новее, но вот из Инета:
WM_THEMECHANGED Notification
--------------------------------------------------------------------------------
The WM_THEMECHANGED message is broadcast to every window following a theme change event. Examples of theme change events are the activation of a theme, the deactivation of a theme, or a transition from one theme to another.
A window receives this message through its WindowProc function.
Syntax
WM_THEMECHANGED
WPARAM wParam
LPARAM lParam;
Parameters
wParam
Reserved.
lParam
Reserved
Return Value
If an application processes this message, it should return zero.
Remarks
Themes are specifications for the appearance of controls, so that the visual element of a control is treated separately from its functionality.
To release an existing theme handle, call CloseThemeData. To acquire a new theme handle, use OpenThemeData.
Following the WM_THEMECHANGED broadcast, any existing theme handles are invalid. A theme-aware window should release any pre-existing theme handles when it receives the WM_THEMECHANGED message. It may optionally open a new theme handle if the IsThemeActive function returns TRUE.
Notification Requirements
Minimum DLL Version None
Header Declared in Winuser.h, include Windows.h
Minimum operating systems Included in Windows XP
Vladimir Kladov (2002-09-23 17:08:00) [4]У меня в msdn (jule,2001) нет WM_THEMECHANGED. Код какой? И топик бы привести. А то не совсем понятно, как на него реагировать-то. Может, реакцию лучше присоединить в комоненте MhXP ?
После format c: исправилось? Или что за формат такой? :)
Vit@l (2002-09-22 11:01:00) [5]Да действительно... У меня какое-то время, когда было звпущено несколько программ(кстати преимущественно несколько експлореров) вдруг резко изчезала моя тема и появлялась классическая - без спросу. Потом все резко глючило итд. И так случалось каждый раз. После формата вроде все пока ок, тьфу, тьфу, тьфу
Alexander (2002-09-22 08:53:00) [6]А вы попробуйте у самого проводника вывести About и те-же манипуляции (то есть отключить и включить темы) :-))).
Результат не заставит себя ждать. Поможет только логаут.
Раз уж сам проводник с этим не справляется, то ...
У кого есть SP1 - проверьте, если не сложно, может там исправили?
Vit@l (2002-09-21 19:11:00) [7]Народ, при смене тем всем приложениям отсылается сообщение WM_THEMECHANGED. Видимо на него и надо реагировать
Gandalf (2002-09-21 12:52:00) [8]>Подождите. А что у проводника-то не так?
С ним как раз все нормально. На нем баг не виден.
Vladimir Kladov (2002-09-21 11:09:00) [9]Подождите. А что у проводника-то не так?
Alexander (2002-09-20 16:15:00) [10]Да, всё-таки это баг XP. Проверял и с другими программами, даже от MS. Приятно самому найти баг в Windows :-)))
Gandalf (2002-09-20 15:56:00) [11]Все, понял. А проводник ты зря запустил - ты бы лучше сапер открыл с таблицей чемпионов. Друзья это великий момент - мы нашли WinXP баг! (Я так понимаю, поскольку даже у M$ это работает неправильно, то значит баг.)
Alexander (2002-09-20 11:47:00) [12]Ладно, похоже мы не совсем понимаем друг друга. Я скомпилировал программу совсем без ресурса поддержки XP. Запустил под XP с модальным окном, вот как это выглядит:
<A href=" http://usefulsoft.com/download/img1.jpg"> http://usefulsoft.com/download/img1.jpg</a>
А вот как стало выглядеть после отключения и обратного включения тем:
<A href=" http://usefulsoft.com/download/img2.jpg"> http://usefulsoft.com/download/img2.jpg</a>
Я там специально на фоне проводник запустил, чтобы почувствовать разницу для img2.
Vladimir Kladov (2002-09-20 11:29:00) [13]Alexander © (19.09.02 15:25)
> так я тоже без компонентов, но и не вручную - просто добавляю
> в проект программы файл *.rc (Project -> Add to project...)
А какая разница - вручную или нет. директива {$R все равно добавляется в dpr. Может, сам ресурс неверно оформлен? В VCL он работает?
Alexander (2002-09-20 09:02:00) [14]to Vladimir Kladov
>У меня П2. Но под ним 95-я еле живая, а уж ХР ...
Ну у меня на ноутбуке тоже Р2 и 64 метра памяти, так я на нём под Win2000 нормально работаю, да ещё и VMWare запускаю. Правда P4 на работе - это поприятнее будет, без вопросов.
to Gandalf
>Без включения (в проект ) поддержки XP тем, не будет и XP
>отрисовки. А как проявляется нежелание, неподключения - не
>подкомпиливает xml или как?
Ладно, сейчас не будем затрагивать тему поддержки XP. Я ведь с самого начала что написал (может и не очень понятно): не перерисовывается заголовок онна при переключении тем! То есть при отключении тем и включении обратно моё приложение выглядит не синеньким и округлым, а остаётся с обычным, старым видом, каким было до этого. То есть, когда отключили темы XP, то оно стало нормальным (да и куда оно денется :)) ), а вот когда включаю темы обратно, то ... оно остаётся "нормальным", а не таким, как все.
>Да тут еще идейка вдруг пришла, я когда компонент делал -
>получалось то работает, то нет. Так вот если уж вы все
>ручками делаете, не забываете InitCommonControls; в код
>добавлять?
Добавлять действительно забывал, и действительно то работало, то нет, но, как я описал выше, сейчас не об этом.
SPeller (2002-09-19 19:47:00) [15]
> Так вот если уж вы все ручками делаете, не забываете InitCommonControls;
> в код добавлять?
Без инита этого не пробовал - всегда с ним делаю, даже не зная что он делает. Просто прочитал в хелпе что надо :-))
Gandalf (2002-09-19 18:45:00) [16]Просьба прочитать конец сообщения!
To Alex:
>выслал.
Пока не дошло.
>Что важно, запускать программу нужно при активных темах.
Я и не отключаю.
>Вызвать модальное окно, а потом отключьть и снова включить >темы.
Лихо закручено. Так может в WinXP бага?
>Ещё, почему-то мне в этот проект не удалось подключить >поддержку тем XP - из-за них этого ресурса под XP кнопки >перестают работать на форме. В чём может бють дело? xml файл >без ошибок.
Без включения (в проект ) поддержки XP тем, не будет и XP отрисовки. А как проявляется нежелание, неподключения - не подкомпиливает xml или как?
to Alexander ©
>Я, конечно, ещё перепроверю, но по моему, после установки KOL >1.46/47 перестал работать ресурс поддержки тем XP ?!!
Странно - ресурс он и есть ресурс. КОЛ"у тежело на это влиять - хотя если вспомнить локализацию... всякое может быть.
to SPeller © (19.09.02 15:04)
>Я делаю номного по-сложнее, без компонентов, просто кидаю >ресурс с манифестом ХР в папку проекта и пишу {$R ...} чтобы >он верочно был в ЕХЕ-шнике. (не доверяю я компонентам:)))
А зря не доверяете ;), кстати может у кого есть дополнительная инфа по манифестам - какой нибуть рассширенный синтаксис и статейка какая. Интересно.
ЗЫ: Да тут еще идейка вдруг пришла, я когда компонент делал - получалось то работает, то нет. Так вот если уж вы все ручками делаете, не забываете InitCommonControls; в код добавлять?
Alexander (2002-09-19 15:25:00) [17]так я тоже без компонентов, но и не вручную - просто добавляю в проект программы файл *.rc (Project -> Add to project...)
SPeller (2002-09-19 15:04:00) [18]
> Alexander © (19.09.02 14:25)
Я делаю номного по-сложнее, без компонентов, просто кидаю ресурс с манифестом ХР в папку проекта и пишу {$R ...} чтобы он верочно был в ЕХЕ-шнике. (не доверяю я компонентам:)))
Alexander (2002-09-19 14:25:00) [19]Я, конечно, ещё перепроверю, но по моему, после установки KOL 1.46/47 перестал работать ресурс поддержки тем XP ?!!
Alexander (2002-09-19 13:36:00) [20]To Gandalf:
выслал.
Что важно, запускать программу нужно при активных темах. Вызвать модальное окно, а потом отключьть и снова включить темы.
Ещё, почему-то мне в этот проект не удалось подключить поддержку тем XP - из-за них этого ресурса под XP кнопки перестают работать на форме. В чём может бють дело? xml файл без ошибок.