Конференция "WinAPI" » PrintWindow [D7, Win2k, WinXP]
 
  • kaldirishe (05.03.14 16:22) [0]
    Здравствуйте!
    Решил попробовать совместить компоненты VCL и форму с стилем WS_EX_LAYERED. В принципе задача осуществима, например отрисовкой компонентов при помощи PrintWindow, но с ней я заметил некоторые странности. Сразу оговорюсь, для случая с неслоеной формой все работает, а вот для слоеной заметил следующий нюанс: если у контрола есть прокрутка, то при наведении на нее курсора (во время ее анимации) PrintWindow вместо нее выдает черный прямоугольник (клиентская область отрисовывается нормально) Что бы не пробовал - ничего не получается( Хотел поинтересоваться:
    1. можно ли для приложения отключить эффект анимации или каким то образом узнать о том, что сейчас происходит анимация (например, чтобы не закрашивать область прокрутки)?
    2. можно ли как то добыть дескрипторы прокруток окна, они по идее ведь оконные элементы (хотя Enum-мами не видны)?
    3. а может кто для себя сию задачу порешал, буду рад любым советам
  • Игорь Шевченко © (08.03.14 11:40) [1]

    > 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 не так обрабатывает...
  • Лакримакристи (25.03.14 10:26) [2]
    У VCL своя PrintWindow, которая работает при помощи особой уличной VCL-магии...
    Вы ещё стили включите ({$R WindowsXP.res}) и наслаждайтесь глюками.

    совместить компоненты VCL и форму с стилем WS_EX_LAYERED

    Зачем?
  • kaldirishe (25.04.14 14:33) [3]
    Мне нравятся формочки с тенью) (каждый с ума сходит по своему ©)
  • Лакримакристи (09.05.14 23:51) [4]
    Тень делается вообще иначе. Или пытаться нагнуть винду и использовать исковерканную системную тень, или руками - дополнительным окном.
    Не вижу вообще никакой необходимости в PrintWindow.
  • kaldirishe (24.05.14 19:11) [5]
    >Тень делается вообще иначе. Или пытаться нагнуть винду и использовать исковерканную системную тень, или руками - дополнительным окном.
    Не вижу вообще никакой необходимости в PrintWindow.

    Да да, PrintWindow тупиковый вариант(

    У мну есть подозрение, что при выводе зверей типа прокрутки у контролов, винда проверяет контрол чем нибудь типа ValidateRgn... А может нет. Но мысли есть, о результатах сообщу) Вот с кнопками, с произвольной кистью я разобрался: http://pda.delphimaster.net/?id=1398422634&n=5
  • Лакримакристи (05.06.14 12:27) [6]
    ам... Навороченная тень для окна и скинизированная форма это вообще разные вещи...

    > есть подозрение, что при выводе зверей типа прокрутки у
    > контролов, винда проверяет контрол чем нибудь типа


    хм... А их не ComControls вообще рисует?
  • kaldirishe (07.06.14 19:52) [7]
    >ам... Навороченная тень для окна и скинизированная форма это вообще разные вещи...
    На 100% согласен, если был понят не правильно, каюсь.
    >хм... А их не ComControls вообще рисует?
    Гуру тут могут меня оплевать, но как я понял создается субкласс, отрисовка которого отдается винде(
 
Конференция "WinAPI" » PrintWindow [D7, Win2k, WinXP]
Есть новые Нет новых   [118667   +47][b:0][p:0]