酱坛子

专注C++技术 在这里写下自己的学习心得 感悟 和大家讨论 共同进步(欢迎批评!!!)

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  66 Posts :: 16 Stories :: 236 Comments :: 0 Trackbacks

公告

王一伟 湖南商学院毕业 电子信息工程专业

常用链接

留言簿(19)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 382346
  • 排名 - 63

最新随笔

最新评论

阅读排行榜

评论排行榜

CWnd m_wmp;
m_wmp.CreateControl(。。。。);

LPUNKNOWN lpUnknown = m_wmp.GetControlUnknown();
LPDISPATCH lpDispatch;
lpUnknown->QueryInterface(IID_IDispatch, (void**)&lpDispatch);

获得句柄的方法就是用GetDlgItem(...),这样可以用获得的句柄来进行窗口的操作。

CWMPPlayer4是从COleDispatchDriver继承过来的。对于COleDispatchDriver对象,其所有的属性以及方法绑定于其中的COleDispatchDriver::m_lpDispatch成员,即依附于COleDispatchDriver的IDispatch interface,而IDispatch是从IUnknown继承来的。
CWnd中有这样一个方法LPUNKNOWN GetControlUnknown( ),这就是CWnd中包含的OLE控件。使用COleDispatchDriver的COleDispatchDriver::AttachDispatch(LPDISPATCH lpDispatch, BOOL bAutoRelease = TRUE)将这个从CWnd获得的IUnknow对象依附于COleDispathcDriver即可。
posted on 2006-10-22 23:47 @王一伟 阅读(2525) 评论(1)  编辑 收藏 引用

Feedback

# re: WMP activex的使用方法 2006-10-23 00:05 王一伟
Activex 控件的创建可以是:

CComPtr<IAxWinHostWindow> iptrHost;
CAxWindow m_wndPlayer; // WMPlayer控件父窗口
CComPtr<IWMPPlayer> m_iptrWMPPlayer;
CComPtr<IAxWinHostWindow> iptrHost;

AtlAxWinInit(); // 初始化ATL窗口

::GetClientRect( m_hWndVideo, rcClient );
m_wndPlayer.Create( m_hWndVideo, rcClient, _T("WMP Host"), WS_CHILD |
WS_VISIBLE | WS_CLIPCHILDREN, NULL );

if( NULL == m_wndPlayer.m_hWnd )
return FALSE;

m_wndPlayer.ShowWindow( SW_HIDE );

// 在创建的AxWindow中装载Player控件
hr = m_wndPlayer.QueryHost( &iptrHost );
if( FAILED( hr ) )
return FALSE;

hr = iptrHost->CreateControl( CComBSTR( _T("
{6BF52A52-394A-11d3-B153-00C04F79FAA6}") ),
m_wndPlayer, 0 );
if( FAILED( hr ) )
return FALSE;

hr = m_wndPlayer.QueryControl( &m_iptrWMPPlayer );
if( FAILED( hr ) )
return FALSE;
  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理