custom hwnd transparent
От: zumber  
Дата: 19.03.12 16:48
Оценка:
Здраствуйте, столкнулся с проблемой прозрачности встраимого окна.
Есть вот такой — хтмл код.(для простоты прикладываю скриншот).



<html>
<head>
    <style>
        @import url('./css/common.css') screen;
    </style>
</head>
<body>
    <div class="back" style="background: url('./images/playback.png') no-repeat; background-position: center; z-index: 0;">
        <textarea cols="50" rows="10"></textarea>
        <!-- <widget width='100' height='100%' minheight='30%' minwidth='40%' id='custom'></widget> -->
    </div>

    <div class="header-inner">
        <div class="header_wrapper">
            <div class="header_text" id="caption">caption</div>
        </div>
    </div>
</body>
</html>

При textarea — все работает как надо (она попадет под header-inner), а при виджите — нет. Для встраивания — не делал ничего спецефичного.

LRESULT Player::on_create_control(LPNMHL_CREATE_CONTROL pnmcc)
    {
        PCWCHAR id=get_attr(pnmcc->helement,"id");
        if(id)
        {
            if(wcscmp(id,L"custom")==0)
            {
                if(create_my_window())
                {
                    pnmcc->outControlHwnd=my_hwnd_;
                }

            }
        }
        return 0;
    }


окно создаю так

bool Player::create_player_window()
    {
        WNDCLASSEX wc;
        ZeroMemory(&wc, sizeof(WNDCLASSEX));

        wc.cbSize=sizeof(WNDCLASSEX);
        wc.hInstance=get_instance();
        wc.lpfnWndProc=(WNDPROC)wnd_proc;
        wc.lpszClassName=L"mywndclass";
        wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
        
        if(RegisterClassExW(&wc))
        {
            my_hwnd_=CreateWindowEx(
                //WS_EX_LAYERED
                //WS_EX_TOOLWINDOW|WS_EX_LEFT|WS_EX_LTRREADING|WS_EX_NOPARENTNOTIFY
                //WS_EX_WINDOWEDGE|WS_EX_NOPARENTNOTIFY
                0
                ,L"mywndclass",L"mywndclass", WS_VISIBLE|WS_CHILDWINDOW|WS_CLIPCHILDREN |WS_CLIPSIBLINGS,
                0,0,500,500,get_hwnd(),NULL,get_instance(),0);

            
            SetWindowLong(my_hwnd_,GWL_USERDATA,(LONG)this);

        }

        return my_hwnd_!=NULL;
    }

Подскажите, пожалуйста — есть ли возможность сделать, чтобы мой хвнд попадал под header-inner, или может я совсем все делаю — не так ?
PS: заранее, спасибо
htmlayout custom hwnd transparent
Re: custom hwnd transparent
От: c-smile Канада http://terrainformatica.com
Дата: 19.03.12 20:59
Оценка:
Здравствуйте, zumber, Вы писали:

Z>Здраствуйте, столкнулся с проблемой прозрачности встраимого окна.


Поверх child windows могут рисоваться только popup элементы (которые сами живут в отдельных окнах).

PS: textarea это не окно.
Re[2]: custom hwnd transparent
От: zumber  
Дата: 20.03.12 09:21
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, zumber, Вы писали:


Z>>Здраствуйте, столкнулся с проблемой прозрачности встраимого окна.


CS>Поверх child windows могут рисоваться только popup элементы (которые сами живут в отдельных окнах).


CS>PS: textarea это не окно.


Тобишь чтобы сделать, то что мне нужно — надо сначало нарисовать окно — и уже поверх пойдет хтмлейаут?
Re[3]: custom hwnd transparent
От: zumber  
Дата: 22.03.12 07:44
Оценка:
Здравствуйте, zumber, Вы писали:

Z>Здравствуйте, c-smile, Вы писали:


CS>>Здравствуйте, zumber, Вы писали:


Z>>>Здраствуйте, столкнулся с проблемой прозрачности встраимого окна.


CS>>Поверх child windows могут рисоваться только popup элементы (которые сами живут в отдельных окнах).


CS>>PS: textarea это не окно.


Z>Тобишь чтобы сделать, то что мне нужно — надо сначало нарисовать окно — и уже поверх пойдет хтмлейаут?


Создал окно — которое мне нужно, и второе окно WS_EX_LAYERED|WS_EX_TOOLWINDOW + перехватываю WM_SIZING + WM_MOVE — все работает! Спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.