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
相关文章
读者评论
发表评论 |