ATL开发控件有关问题
ATL开发控件问题
在ATL控件中创建一个WMP控件,怎样获取这个WMP控件的事件,并将一些状态信息显示在开发的ATL控件界面上?
有人做过类似的控件的话给些提示,谢谢
------解决方案--------------------
现在能获取静态的控件事件,怎么处理在ATL下动态创建的WMP控件的EVENT呢?
--------
ConnectionPoint
从sohu网页上看到的。
unction play() {
try {
if( !isItself ) {
playorpause.innerHTML = pausebtnstr;
wmplayer.style.display = "block ";
vmask.style.display = "none ";
if( isAfterPause ) {
wmplayer.play();
} else {
wmplayer.FileName = playurl;
setPosition( 0 );
wmplayer.play();
}
isAfterPause = false;
isPlaying = true;
isItself = true;
setVolume( volumeNum );
openTime();
}
} catch( e ) {
setTimeout( "play() ", 1000 );
}
return false;
}
--------------
wmp player?
除了自己写控件,用wmp控件外,也可以用flash播放。
------解决方案--------------------
这是我开发的一个ie工具条中,截取IE程序中浏览器控件事件的方法,对你应该有所启发
HRESULT CBeeToolBar::Connect(void)
{
HRESULT hr;
// 为 WebBrowser 事件查找连接点
hr = m_spCPC-> FindConnectionPoint(DIID_DWebBrowserEvents2, &m_spCP);
if (FAILED(hr))
return hr;
// 将我们的事件处理器传递给容器。事件发生时容器将调用我们实现的
// IDispatch 接口函数
hr = m_spCP-> Advise( reinterpret_cast <IDispatch*> (this), &m_dwCookie);
return hr;
}
HRESULT CBeeToolBar::Invoke(DISPID dispIdMember, REFIID riid,
LCID lcid, WORD wFlags, DISPPARAMS* pDispParams,
VARIANT* pvarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr)
{
switch (dispIdMember) {
case DISPID_NEWWINDOW2 :
{
if(AntiPopWindow())
{
*(pDispParams-> rgvarg[0].pboolVal) =true;
}else
{
// *(pDispParams-> rgvarg[1].pdispVal)=this;
*(pDispParams-> rgvarg[0].pboolVal) =false;
}
}
break;
case DISPID_ONQUIT :
if(m_spCP)
{
m_spCP-> Unadvise(m_dwCookie);
m_spCP=NULL;
m_dwCookie=0;
};
break;
}
return NOERROR;
}
在ATL控件中创建一个WMP控件,怎样获取这个WMP控件的事件,并将一些状态信息显示在开发的ATL控件界面上?
有人做过类似的控件的话给些提示,谢谢
------解决方案--------------------
现在能获取静态的控件事件,怎么处理在ATL下动态创建的WMP控件的EVENT呢?
--------
ConnectionPoint
从sohu网页上看到的。
unction play() {
try {
if( !isItself ) {
playorpause.innerHTML = pausebtnstr;
wmplayer.style.display = "block ";
vmask.style.display = "none ";
if( isAfterPause ) {
wmplayer.play();
} else {
wmplayer.FileName = playurl;
setPosition( 0 );
wmplayer.play();
}
isAfterPause = false;
isPlaying = true;
isItself = true;
setVolume( volumeNum );
openTime();
}
} catch( e ) {
setTimeout( "play() ", 1000 );
}
return false;
}
--------------
wmp player?
除了自己写控件,用wmp控件外,也可以用flash播放。
------解决方案--------------------
这是我开发的一个ie工具条中,截取IE程序中浏览器控件事件的方法,对你应该有所启发
HRESULT CBeeToolBar::Connect(void)
{
HRESULT hr;
// 为 WebBrowser 事件查找连接点
hr = m_spCPC-> FindConnectionPoint(DIID_DWebBrowserEvents2, &m_spCP);
if (FAILED(hr))
return hr;
// 将我们的事件处理器传递给容器。事件发生时容器将调用我们实现的
// IDispatch 接口函数
hr = m_spCP-> Advise( reinterpret_cast <IDispatch*> (this), &m_dwCookie);
return hr;
}
HRESULT CBeeToolBar::Invoke(DISPID dispIdMember, REFIID riid,
LCID lcid, WORD wFlags, DISPPARAMS* pDispParams,
VARIANT* pvarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr)
{
switch (dispIdMember) {
case DISPID_NEWWINDOW2 :
{
if(AntiPopWindow())
{
*(pDispParams-> rgvarg[0].pboolVal) =true;
}else
{
// *(pDispParams-> rgvarg[1].pdispVal)=this;
*(pDispParams-> rgvarg[0].pboolVal) =false;
}
}
break;
case DISPID_ONQUIT :
if(m_spCP)
{
m_spCP-> Unadvise(m_dwCookie);
m_spCP=NULL;
m_dwCookie=0;
};
break;
}
return NOERROR;
}