我用WebBrowser作网页编辑器时
想要做到这种效果:
当鼠标在点击某个块元素内部的一个元素时,不产生内部元素的鼠标事件,而产生父元素的鼠标事件,相当于把这个块元素的内部元素给禁用掉我实现IHTMLEditDesigner::PreHandleEvent来拦截事件
除了拦截,能不能在这个函数中将当前Element的鼠标事件交给上层Element处理?
或者有什么其它的方法做到我想要的?
谢谢
想要做到这种效果:
当鼠标在点击某个块元素内部的一个元素时,不产生内部元素的鼠标事件,而产生父元素的鼠标事件,相当于把这个块元素的内部元素给禁用掉我实现IHTMLEditDesigner::PreHandleEvent来拦截事件
除了拦截,能不能在这个函数中将当前Element的鼠标事件交给上层Element处理?
或者有什么其它的方法做到我想要的?
谢谢
如何修改event?
我希望能够在块的内部元素上屏蔽这些鼠标事件 但是这也造成了无法产生DoubleClick及Click事件
所以我出于想当然的考虑,如果在PreHandleEvent或者别的什么地方可以让这些事件直接作用在父元素上,这样就可以在父元素上产生Click等事件,这样就可以满足我的要求了这种想法可不可行?应该如何做?
或者有什么可以实现的办法能满足我的要求?
IHTMLEventObj *pIEventObj)
{
//fire another event here
//the window object and source element can be obtained from pIEventObj
// if (inEvetDispId == DISPID_EVMETH_ONMOUSEDOWN)
// pIEventObj->Cancel();
}
see also
http://www.codeproject.com/internet/disabledrag.asp
我是说把这个事件让浏览器自动把它放到父元素上去处理,相当于屏蔽对这些元素的编辑另外,IHTMLEventObj->Cancel()方法并不存在
然而因为PreHandleEvent里Cancel了这两个事件
浏览器应该无法再产生click,dblclick,dragstart,contextmenu,....一切我需要的事件,
这样的话,情况反而更糟糕了 :(
会不会有更容易的别径?
就是替这个元素附加一个Binary Behavior,并让这个Behavior实现IHTMLPainter,在它的HitTest方法里设定hit=true.
有一个副作用——光标总是会停留在初进入控件前的那个形状,我只好手工去把它变回去
还有一个不足……就是内部的Select元素却没办法屏蔽它展开菜单这么个行为