c++控件播放flash

容器-插件基础:

为在一个窗口中嵌入一个Activex的话,就需要创建一个Container Window,然后创建被嵌入的Activex,然后通过上述的接口建立容器与Activex直接的联系。在ATL中使用CAxHostWindow封装 了Activex容器,并进一步使用CAxWindow类来简化控件容器的操作。

Activex嵌入主要代码

1.内嵌Activex的创建

C/C++ code [sourcecode language='c++']
LRESULT CEmbed::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
RECT rc;
GetWindowRect(&rc);
rc.right -= rc.left;
rc.bottom -= rc.top;
rc.top = rc.left = 0;

//对于ATL3.0 必须调用AtlAxWinInit,否则Create会调用失败
AtlAxWinInit(); //初始化容器窗口的注册类

RECT rect = rc;
//创建Shock wave flash控件播放Flash
TCHAR* controlName = L”ShockwaveFlash.ShockwaveFlash”;
m_FlashWin.Create(m_hWnd, rect, controlName, WS_CHILD | WS_VISIBLE, 0, ID_FLASHCTRL );
DWORD  error = ::GetLastError();
CComPtr< IAxWinAmbientDispatch > ambient;
m_FlashWin.QueryHost( &amp;ambient );

CComPtr hostwin;
m_FlashWin.QueryHost(&amp;hostwin);
hostwin->QueryControl(__uuidof(IDispatch),(void**)&amp;m_ptrFlash.p);
CComQIPtr ptrFlash = m_ptrFlash;
ptrFlash->put_BackgroundColor(RGB( 0, 0, 0 ) );

//创建Windows Media Play控件播放.wmv文件
controlName = L”WMPlayer.OCX”;
//CLSID cld;
//::CLSIDFromProgID(controlName,&amp;cld);
m_WmvWin.Create(m_hWnd, rect,controlName,WS_CHILD, 0,ID_WMPCTRL);

if(hostwin)
hostwin.Release();
m_WmvWin.QueryHost(&amp;hostwin);
hostwin->QueryControl(__uuidof(IDispatch),(void**)&amp;m_ptrWmv.p);
return 0;
}[/sourcecode]

2.设置内嵌Activex控件的大小位置

C/C++ code
[sourcecode language='c++']
HRESULT CEmbed::SetObjectRects(LPCRECT prcPos,LPCRECT prcClip)
{
IOleInPlaceObjectWindowlessImpl::SetObjectRects(prcPos, prcClip);
int cx, cy;
cx = prcPos->right – prcPos->left;
cy = prcPos->bottom – prcPos->top;

RECT rect;
GetClientRect( &amp;rect );
rect.top = 0;
rect.left = 0;
if(m_FlashWin)
m_FlashWin.MoveWindow(&amp;rect );
if(m_FlashWin)
m_WmvWin.MoveWindow(&amp;rect );
return S_OK;
}
[/sourcecode]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值