Winapi 如何使用动画控件播放透明AVI?

Winapi 如何使用动画控件播放透明AVI?,winapi,avi,Winapi,Avi,我在WTL对话框窗口上使用动画控件,如下所示: if (!Animate_IsPlaying(m_aviWindow)) { PTSTR pszAviFile = _T("C:\\build\\VS2008ImageLibrary\\Animations\\FILEMOVE.AVI"); //MAKEINTRESOURCE(IDR_AVI1); Animate_Open(m_aviWindow, pszAviFile); A

我在WTL对话框窗口上使用动画控件,如下所示:

if (!Animate_IsPlaying(m_aviWindow))
{
    PTSTR pszAviFile = _T("C:\\build\\VS2008ImageLibrary\\Animations\\FILEMOVE.AVI");
                        //MAKEINTRESOURCE(IDR_AVI1);
    Animate_Open(m_aviWindow, pszAviFile);
    Animate_Play(m_aviWindow, 0, -1, -1);
}
问题是AVI有一个洋红色背景RGB254,0,254,即使我响应WM_CTLCOLORSTATIC消息,AVI也是不透明的

LRESULT OnCtlColorStatic(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
{
    if ((HWND)lParam == m_aviWindow.m_hWnd)
    {
        HDC hdc = (HDC)wParam;
        COLORREF color = RGB(254, 0, 254);
        SetBkColor(hdc, color);
        //SetBkMode(hdc, TRANSPARENT);
        SetPixel(hdc, 0, 0, color);
        return (LRESULT)CreateSolidBrush(color);
        return (LRESULT)GetStockObject(NULL_BRUSH);
    }
    return 0;
}

我尝试了许多可能的SetBkColor/SetPixel/SetBkMode/etc组合,但仍然无法使AVI透明。我做错了什么?

创建动画控件时,需要指定。然后,控件将使用第一帧的左上像素作为透明度颜色。

动画控件不支持透明度。设置将所有与第一帧左上角像素颜色相同的像素重新映射到WM_CTLCOLORSTATIC-handler提供的颜色。这不会产生一个透明的视频。这是我的疏忽。VisualStudio中的对话框设计器同时具有透明和动画透明,但我只更改了透明属性,该属性不起作用。我认为透明是从静态控件继承而来的,动画透明确实有效。