我想做一个窗口(Popup/Overlapped/child), 它能盖在视频播放窗口上, 却不挡住视频内容, 能在上面用鼠标画图, 却不影响视频画面. 就像是盖在电视屏幕上的玻璃那样. 这种怎么整呢透明窗口视频

解决方案 »

  1.   

    窗口半透明,不行吗?
    在主窗体的OnInitDialog()函数中添加:
    SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(GetSafeHwnd(),GWL_EXSTYLE)|WS_EX_LAYERED);
    ::SetLayeredWindowAttributes(GetSafeHwnd(),0,20,LWA_ALPHA);
      

  2.   


    重新创建一个窗体,设置透明度,覆盖在视频界面上
    我这边怎么没用,我这样把子窗口设置成透明后,子窗口还是遮住父窗口了。子窗口还是白色背景
    LWA_ALPHA这种方式的透明,只要不为0,子窗体肯定会遮住下面的父窗体,可是这不影响看父窗体的视频啊,父窗体的内容是可见的。不明白,你那什么意思
      

  3.   


    重新创建一个窗体,设置透明度,覆盖在视频界面上
    我这边怎么没用,我这样把子窗口设置成透明后,子窗口还是遮住父窗口了。子窗口还是白色背景
    LWA_ALPHA这种方式的透明,只要不为0,子窗体肯定会遮住下面的父窗体,可是这不影响看父窗体的视频啊,父窗体的内容是可见的。不明白,你那什么意思
    我这边完全遮住了父窗口,没有透明效果。父窗口上的东西都看不见了
      

  4.   


    重新创建一个窗体,设置透明度,覆盖在视频界面上
    我这边怎么没用,我这样把子窗口设置成透明后,子窗口还是遮住父窗口了。子窗口还是白色背景
    LWA_ALPHA这种方式的透明,只要不为0,子窗体肯定会遮住下面的父窗体,可是这不影响看父窗体的视频啊,父窗体的内容是可见的。不明白,你那什么意思
    我这边完全遮住了父窗口,没有透明效果。父窗口上的东西都看不见了
    1、看一下调用SetLayeredWindowAttributes时窗口句柄是否正确
    2、看一下你子窗体的风格中是否包含WS_EX_LAYERED,如果不设置的话,是无法透明的。引用MSDN:SetLayeredWindowAttributes的第一个参数
    hwnd
    [in] Handle to the layered window. A layered window is created by specifying WS_EX_LAYERED when creating the window with the CreateWindowEx function or by setting WS_EX_LAYERED via SetWindowLong after the window has been created.
      

  5.   


    我这边怎么没用,我这样把子窗口设置成透明后,子窗口还是遮住父窗口了。子窗口还是白色背景
    LWA_ALPHA这种方式的透明,只要不为0,子窗体肯定会遮住下面的父窗体,可是这不影响看父窗体的视频啊,父窗体的内容是可见的。不明白,你那什么意思
    我这边完全遮住了父窗口,没有透明效果。父窗口上的东西都看不见了
    1、看一下调用SetLayeredWindowAttributes时窗口句柄是否正确
    2、看一下你子窗体的风格中是否包含WS_EX_LAYERED,如果不设置的话,是无法透明的。引用MSDN:SetLayeredWindowAttributes的第一个参数
    hwnd
    [in] Handle to the layered window. A layered window is created by specifying WS_EX_LAYERED when creating the window with the CreateWindowEx function or by setting WS_EX_LAYERED via SetWindowLong after the window has been created.

    上面两行代码设置了相应属性吧?用GetSafeHwnd()的到的窗口句柄怎么会不正确呢?