-
Здравствуйте! Решил попробовать совместить компоненты VCL и форму с стилем WS_EX_LAYERED. В принципе задача осуществима, например отрисовкой компонентов при помощи PrintWindow, но с ней я заметил некоторые странности. Сразу оговорюсь, для случая с неслоеной формой все работает, а вот для слоеной заметил следующий нюанс: если у контрола есть прокрутка, то при наведении на нее курсора (во время ее анимации) PrintWindow вместо нее выдает черный прямоугольник (клиентская область отрисовывается нормально) Что бы не пробовал - ничего не получается( Хотел поинтересоваться: 1. можно ли для приложения отключить эффект анимации или каким то образом узнать о том, что сейчас происходит анимация (например, чтобы не закрашивать область прокрутки)? 2. можно ли как то добыть дескрипторы прокруток окна, они по идее ведь оконные элементы (хотя Enum-мами не видны)? 3. а может кто для себя сию задачу порешал, буду рад любым советам
-
> 2. можно ли как то добыть дескрипторы прокруток окна, они > по идее ведь оконные элементы (хотя Enum-мами не видны)? >
Это не оконные элементы, а часть неклиентской области окна. Возможно придется обрабатывать еще и ее.
"The application that owns the window referenced by hWnd processes the PrintWindow call and renders the image in the device context that is referenced by hdcBlt. The application receives a WM_PRINT message or, if the PW_PRINTCLIENT flag is specified, a WM_PRINTCLIENT message. For more information, see WM_PRINT and WM_PRINTCLIENT."
возможно, кто-то WM_PRINT не так обрабатывает...
-
У VCL своя PrintWindow, которая работает при помощи особой уличной VCL-магии... Вы ещё стили включите ({$R WindowsXP.res}) и наслаждайтесь глюками.
совместить компоненты VCL и форму с стилем WS_EX_LAYERED
Зачем?
-
Мне нравятся формочки с тенью) (каждый с ума сходит по своему ©)
-
Тень делается вообще иначе. Или пытаться нагнуть винду и использовать исковерканную системную тень, или руками - дополнительным окном. Не вижу вообще никакой необходимости в PrintWindow.
-
>Тень делается вообще иначе. Или пытаться нагнуть винду и использовать исковерканную системную тень, или руками - дополнительным окном. Не вижу вообще никакой необходимости в PrintWindow. Да да, PrintWindow тупиковый вариант( У мну есть подозрение, что при выводе зверей типа прокрутки у контролов, винда проверяет контрол чем нибудь типа ValidateRgn... А может нет. Но мысли есть, о результатах сообщу) Вот с кнопками, с произвольной кистью я разобрался: http://pda.delphimaster.net/?id=1398422634&n=5
-
ам... Навороченная тень для окна и скинизированная форма это вообще разные вещи...
> есть подозрение, что при выводе зверей типа прокрутки у > контролов, винда проверяет контрол чем нибудь типа
хм... А их не ComControls вообще рисует?
-
>ам... Навороченная тень для окна и скинизированная форма это вообще разные вещи... На 100% согласен, если был понят не правильно, каюсь. >хм... А их не ComControls вообще рисует? Гуру тут могут меня оплевать, но как я понял создается субкласс, отрисовка которого отдается винде(
|