您的位置:首页 > 编程语言

利用IE组件进行界面编程

2006-09-15 22:00 549 查看
在codeproject看到一些利用IE组件实现的类和界面,虽然对IE的控制有着许多不爽的地方,但界面看起来的确灵活生动了不少。
我试着写了个CDHtmlDialog的继承类,参考了itreesoft的代码。总结如下:
=========================================================
#define DHTML_EVENT_TAG_ALL(dispid, memberFxn)/
{ DHTMLEVENTMAPENTRY_TAG, dispid, _T("a"), (DHEVTFUNCCONTROL) (DHEVTFUNC) theClass::memberFxn },/
{ DHTMLEVENTMAPENTRY_TAG, dispid, _T("body"), (DHEVTFUNCCONTROL) (DHEVTFUNC) theClass::memberFxn },/
{ DHTMLEVENTMAPENTRY_TAG, dispid, _T("html"), (DHEVTFUNCCONTROL) (DHEVTFUNC) theClass::memberFxn },/
{ DHTMLEVENTMAPENTRY_TAG, dispid, _T("input"), (DHEVTFUNCCONTROL) (DHEVTFUNC) theClass::memberFxn },/
{ DHTMLEVENTMAPENTRY_TAG, dispid, _T("textarea"), (DHEVTFUNCCONTROL) (DHEVTFUNC) theClass::memberFxn },/

//省略对其他tag的处理
//////////////////////////////////////////////////////////////////////////
// 屏蔽下列动作,可以在继承类的 BEGIN_DHTML_EVENT_MAP
//     和 END_DHTML_EVENT_MAP之间放入下列宏
//屏蔽所有招牌的IE动作

#define DHTML_EVENT_CLOSE_IE_EVENT() /
 DHTML_EVENT_TAG_ALL(DISPID_HTMLELEMENTEVENTS_ONSELECTSTART, OnHtmlSelectStart ) /
 DHTML_EVENT_TAG_ALL(DISPID_HTMLELEMENTEVENTS_ONDRAGSTART, OnHtmlDragStart ) /
 DHTML_EVENT_TAG_ALL(DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU, OnHtmlContextMenu ) /
 DHTML_EVENT_TAG_ALL(DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE, OnHtmlMouseMove ) /
============================================================
屏蔽的函数处理均类似
HRESULT CDHtmlDlgSpec::OnHtmlContextMenu(IHTMLElement* pElement)
{
 HRESULT hr=S_FALSE;
 VARIANT_BOOL vbEdit=VARIANT_FALSE;
 CComBSTR bsTagName;
 hr = pElement->get_tagName(&bsTagName);
 if( SUCCEEDED(hr) )
 {
  //CString sTagName=bsTagName.m_str;
  CW2CT szTagName( bsTagName );
  CString sMsg;
  sMsg.Format("OnHtmlContextMenu <%s>/r/n",szTagName);
  OutputDebugString(sMsg);
  bsTagName.ToLower();
  if(bsTagName=="input" || bsTagName=="textarea")
  {
   return S_OK;
  }
 }

 //do not pass the event to the IE server/JavaScript
 return S_FALSE;
 
}

看到光标在文字上变成I形状,很不爽,可惜我对com不是很熟悉,可能需要对IHTMLPainterEventInfo::SetCursor 进行处理,希望以后能看到类似的代码。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ie input html 编程