【问题标题】:silverlight control hosted in mfc activex webbrowser control does not get key input托管在 mfc activex webbrowser 控件中的 silverlight 控件没有获得键输入
【发布时间】:2011-04-30 05:28:57
【问题描述】:

我们有一个带有 Microsoft Web Browser activex 控件的 MFC 对话框,用于显示网页。当页面包含 silverlight 时,您无法在 silverlight 文本框中键入内容。似乎鼠标和命令消息可以发送到 silverlight,但不能发送到 wm_keydow/wm_keyup

参考微软连接问题https://connect.microsoft.com/VisualStudio/feedback/details/536872/silverlight-3-cannot-type-in-textbox-when-running-in-microsoft-web-browser-object

【问题讨论】:

    标签: silverlight mfc


    【解决方案1】:

    解决方法 1 - 将 Silverlight 应用程序的 html 对象更改为“无窗口”:

    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
                                 <param name="source" value="webConnectSilverlightApplication.xap"/>
                                 <param name="onError" value="onSilverlightError" />
                                 <param name="background" value="white" />
                                 <param name="minRuntimeVersion" value="4.0.50826.0" />
                                 <param name="autoUpgrade" value="true" />
                                 <param name="windowless" value="true"/>
                                 <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none">
                                                 <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
                                 </a>
                    </object>
    

    解决方法 2 - 覆盖 WebViewer 对话框类中的 PreTranslateMessage 以覆盖错误:

    BOOL CMFC_WebViewerDlg::PreTranslateMessage(MSG* pMsg)
    {
         if (pMsg->message == WM_CHAR)
         {
                 DispatchMessage(pMsg);
                 return true;
         }
    
         return CDialog::PreTranslateMessage(pMsg);
    }
    

    可能的原因

    问题在于 ActiveX 控件 不拥有消息泵。这 消息泵归容器所有 应用。因此,所有 击键消息由 容器应用程序而不是 分派到无模式对话框 或属性表窗口。

    问题不会发生在 模态对话框/属性表窗口 因为消息泵由 对话框管理器,它需要 照顾处理所有击键 消息。 块引用 来源http://support.microsoft.com/kb/187988

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 2023-03-14
      • 2012-07-26
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多