我有一个ActiveX控件,以子窗体的形式嵌在网页中,用mfc开发,控件中有拖拽的动作,用COleDataSource实现(列表元素拖拽),最近发现拖拽操作在win8+IE10环境下失效。具体现象如下:
1. 环境(目前只有win8+IE10的情况有问题)
win8+IE10(鼠标操作)---------------------- 无效
win8+IE10(IE7模式/兼容模式 鼠标操作)-- 无效
win8+IE10(触屏操作)----------------------- OK
win7+IE10 ------------------------------------- OK
win8+IE7内核的其他浏览器 ------------------ OK
2.现象
出现拖放操作失败的现象是,开始拖拽极短时间之后,光标状态固定,不随光标移动而变化;
spy++抓取源窗口(CListCtrl)消息,发现WM_HITTEST消息,但是坐标在极短时间后固定,不随光标移动变化;
安装WH_GETMESSAGE的HOOK钩取消息,发现拖拽过程中无法收到WM_MOUSEMOVE消息(win7则有);
网页子窗口(CXXXCtrl)的子窗口上启动的拖拽均出现以上现象;
从ActiveX弹出的窗口(模式/非模式)启动拖拽没问题;
从触屏进行拖拽操作,没问题,spy++抓取消息正常;
拖拽全过程,打印CXXXCtrl的m_bUIActive,均为true。
3.原因分析
与环境有必然的联系;
可能拖拽的动作与IE有所冲突,导致光标消息被留在IE,并没有发给控件。
请各位帮忙分析原因,寻找解决方案。
https://skydrive.live.com/redir?resid=7B0B58910C566AAC!457&authkey=!AC3I8dPhW2peplA
测试demo