Как изменить прозрачность TitleBar'а?

Тема в разделе "WASM.WIN32", создана пользователем piritus, 6 май 2008.

  1. piritus

    piritus Member

    Публикаций:
    0
    Регистрация:
    7 июл 2007
    Сообщения:
    36
    Это вобще возможно?
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    можно всего окна...
     
  3. piritus

    piritus Member

    Публикаций:
    0
    Регистрация:
    7 июл 2007
    Сообщения:
    36
    Требуется именно TitleBar
    К примеру есть программы, которые его делают "стеклянным" и меняют изображения стандартных кнопок (закрыть, свернуть, развернуть)
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    кнопки - ну это уже скины.
     
  5. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    скины и png тут рулят
     
  6. piritus

    piritus Member

    Публикаций:
    0
    Регистрация:
    7 июл 2007
    Сообщения:
    36
    Нашел что-то на подобии того, что требуется:
    http://udafsoft.by.ru/images/2008-01-27_183345.jpg
    (заголовок окна)
     
  7. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    это виста, прикинь?)
    тебе надо динамическую PNG Glyth сделать, как на заставке CodeBlocks,
    где надо - прозрачнее где не надо - непрозрачное.
    хотя тормозить будет всё равно как прозрачное..
     
  8. piritus

    piritus Member

    Публикаций:
    0
    Регистрация:
    7 июл 2007
    Сообщения:
    36
    а... Так вот она какая! :)
    по-искал по "PNG Glyph"
    ничего толкового не нашел.
    Если какие-нибудь простенькие примеры?
    Или хотя бы принцип...
     
  9. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    я каюсь, сам не писал, только в чужих сорцах видел пару раз, и названиях статей )
     
  10. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    http://bbs.vbstreets.ru/viewtopic.php?p=6587386
    http://bbs.vbstreets.ru/viewtopic.php?p=6681496

    Может здесь что-нить найдешь...
     
  11. piritus

    piritus Member

    Публикаций:
    0
    Регистрация:
    7 июл 2007
    Сообщения:
    36
    я могу сделать всё окно по png, а как сделать для titlebar`а и для рамки?
     
  12. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    piritus
    Делать окно без titlebar`а и рамки, а затем дорисовать их как png :))
    Или не связываться с png, а сразу дорисовывать их чрез GDI+ c использованием прозрачности.
     
  13. piritus

    piritus Member

    Публикаций:
    0
    Регистрация:
    7 июл 2007
    Сообщения:
    36
    Сделал окно без titlebar'а, загрузил png. Изображение на png прозрачное, а окно - нет.
    Т.е. получается, что сквозь прозрачный (загруженный из png) titlebar видно основное окно.
    Как можно дорисовать png, что бы под ним не было окна программы?
    Можно сделать как-нибудь прозрачной часть окна?
     
  14. piritus

    piritus Member

    Публикаций:
    0
    Регистрация:
    7 июл 2007
    Сообщения:
    36
    Попробовал:
    Код (Text):
    1.         invoke GetClientRect    ,hDlg, addr r
    2.         invoke CreateRectRgn,0, 0, r.right, r.bottom
    3.         mov FRGN,eax
    4.         invoke CreateRectRgn,0, 0, r.right, 20
    5.         mov FRGN1,eax
    6.         invoke CombineRgn,FRGN, FRGN, FRGN1, RGN_DIFF
    7.         invoke SetWindowRgn,hDlg, FRGN, TRUE;FALSE
    8.         invoke DeleteObject,FRGN
    Он обрезает верхнюю часть окна, а ее нужно сделать прозрачной...
     
  15. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    piritus
    Не нужно ничего обрезать ;)
    В твоем случае (png) полупрозрачная картинка - скин выводится на всё окно программы!, а затем на него в нужном месте накладывается дочернее (WS_CHILD) окно, которое и будет основным окном твоей программы, только не забудь стиль WS_CLIPCHILDREN для родительского окна со скином, иначе при таскании по экрану это безобразие будет сильно мерцать.
     
  16. piritus

    piritus Member

    Публикаций:
    0
    Регистрация:
    7 июл 2007
    Сообщения:
    36
    Не совсем понимаю...
    У меня есть диалоговое окно.
    Мне нужно создать обычное окно, к нему применить скин, а по-верх вывести диалоговое?
    Можешь привести кусок кода, для понимания?
     
  17. piritus

    piritus Member

    Публикаций:
    0
    Регистрация:
    7 июл 2007
    Сообщения:
    36
    Применил к окну слой из png.
    После отрисовки создаю дочернее окно (EditBox):

    Код (Text):
    1. invoke CreateWindowEx,WS_EX_CLIENTEDGE, ADDR ClassName2,NULL,\
    2.                            WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or\
    3.                            ES_AUTOHSCROLL,\
    4.                            0,0,200,25,hWin,8,hInstance,NULL
    Ничего не происходит.

    Если создать дочернее диалоговое окно:
    Код (Text):
    1. invoke DialogBoxParam,hInstance,ADDR dlgname,hWnd,ADDR DlgProc,0
    то программа запускается, но никаких окон не выводит (чистый экран)
    Я вобще хоть то делаю?