专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »C 教程 » activex控件:在ActiveX控件中检测IE中STOP按钮的按下 »正文

activex控件:在ActiveX控件中检测IE中STOP按钮的按下

来源: 发布时间:星期四, 2008年9月25日 浏览:24次 评论:0
许多activex控件,比如:activemovie, ie工具条中的stop按钮对于他们来说有特殊的意义。当stop按钮下按时这些控件可以停止播放背景音乐或动画。这篇文章将告诉你在activex控件中添加iolecommandtarget接口来捕捉stop 按钮的动作。


详细内容
为了支持iolecommandtarget接口你必须手工在colecontrol派生类的.h 和.cpp文件中添加如下代码。然后,你可以在iolecommandtarget::exec()函数中捕获olecmdid_stop命令id (ie工具条中stop 按钮的id)。具体代码如下:

// colecontrol派生类的.h文件:
class cmyolecontrol : public colecontrol
{
...

// interface maps
protected:

// add the following to support the iolecommandtarget interface.
// note:nested class name is called cmdtargetobj
declare_interface_map()

begin_interface_part(cmdtargetobj, iolecommandtarget)
stdmethod(querystatus)(const guid*, ulong, olecmd[], olecmdtext*);
stdmethod(exec)(const guid*, dword, dword, variantarg*,
variantarg*);
end_interface_part(cmdtargetobj)
};


//colecontrol派生类的.cpp文件:
begin_interface_map(cmyolecontrol, colecontrol)
interface_part(cmyolecontrol, iid_iolecommandtarget, cmdtargetobj)
end_interface_map()

ulong far export cmyolecontrol::xcmdtargetobj::addref()
{
method_prologue(cmyolecontrol, cmdtargetobj)
return pthis->externaladdref();
}

ulong far export cmyolecontrol::xcmdtargetobj::release()
{
method_prologue(cmyolecontrol, cmdtargetobj)
return pthis->externalrelease();
}

hresult far export cmyolecontrol::xcmdtargetobj::queryinterface(
refiid iid, void far* far* ppvobj)
{
method_prologue(cmyolecontrol, cmdtargetobj)
return (hresult)pthis->externalqueryinterface(&iid, ppvobj);
}

stdmethodimp cmyolecontrol::xcmdtargetobj::querystatus(
const guid* pguidcmdgroup, ulong ccmds, olecmd rgcmds[],
olecmdtext* pcmdtext)
{
method_prologue(cmyolecontrol, cmdtargetobj)
//... add your own code here.

return s_ok;
}

stdmethodimp cmyolecontrol::xcmdtargetobj::exec(
const guid* pguidcmdgroup, dword ncmdid, dword ncmdexecopt,
variantarg* pvarargin, variantarg* pvarargout)
{
method_prologue(cmyolecontrol, cmdtargetobj)
if (ncmdid == olecmdid_stop)
{
// ... stop button is clicked, add your own code here.
// we just display a message box.
::messagebox(null, \"stop\",\"cmyolecontrol\", mb_ok);
}

return s_ok;
}

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: