描述:
用CAxWindow创建的"DHTMLEdit.DHTMLEdit"控件无法用"Delete"键,基于对话框时也不行,属性也没用,怎么回事???先谢了!!!
解决方案1:
http://www.winmsg.com/wtl/Part6.htm#keyboard
键盘事件处理
最后一个但是非常重要的细节是键盘消息。ActiveX控件的键盘处理非常复杂,因为控件和它的宿主程序必须协同工作以确保控件能够看到它感兴趣的消息。例如,浏览器控件允许你使用TAB键在链接之间切换。MFC自己处理了所有工作,所以你永远不会意识到让键盘完美并正确的工作需要多么大的工作量。
不幸的是向导没有为基于对话框的程序生成键盘处理代码,当然,如果你使用Form View作为视图类的SDI程序,你会看到必要的代码已经被添加到PreTranslateMessage()中。当程序从消息队列中得到鼠标或键盘消息时,就使用ATL的WM_FORWARDMSG消息将此消息传递给当前拥有焦点的控件。它们通常不作什么事情,但是如果是ActiveX控件,WM_FORWARDMSG消息最终被送到包容这个控件的AtlAxWin,AtlAxWin识别WM_FORWARDMSG消息并采取必要的措施看看是否控件需要亲自处理这个消息。
如果拥有焦点的窗口没有识别WM_FORWARDMSG消息,PreTranslateMessage()就会接着调用IsDialogMessage()函数,使得像TAB这样的标准对话框的导航键能正常工作。
例子工程的PreTranslateMessage()函数中含有这些必需的代码,由于PreTranslateMessage()只在无模式对话框中有效,所以如果你想在基于对话框的应用程序中正确使用键盘就必须使用无模式对话框。
您可能想查找下面的文章:
- CAxWindow建立的窗口浏览网页时不能响应Textbox框中的backspace?
- CAxWindow如何响应系统消息
- 想把MSWORD嵌入到ATL开发的窗口中,谁能把关于CAxWindow的代码贴出来呀,十分感谢,着急!!!
- 我在用ATL做一个窗口,使用CAxWindow内嵌MSWORD,老是运行出错,我把代码贴出来了,大家帮我看看
- 中文英文都搜不到答案,关于CAxWindow
- 在使用CAxWindow的create函数创建的时候失败
- CAxWindow接口CreateControl有时候返回“类别已存在”错误,是什么原因?
- atl中的caxwindow能否嵌入mfc开发的activex控件?怎么嵌入?给个例子2005年
- 请问我用CAxWindow创建了一个HTML控件,在里面用jQuery却无法执行跨域的XMLHttpRequest,该如何是好?
- 用CAxWindow动态加载浏览器控件,为什么vc6里好使,vc8总不行?

