2011-05-13 58 views
1

我已經在MFC應用程序中嵌入了一個Adobe Reader ActiveX控件作爲子窗口,但是如果Reader具有焦點,則無論是否使用MFC應用程序中定義的加速器都不會觸發由Adobe Reader或不是。如果我使用相同的方法嵌入其他ActiveX控件,那麼檢測我的加速器時沒有問題。Adob​​e Reader ActiveX塊加速器

我已經使用Visual Studio 2008 IDE爲Adobe Reader ActiveX控件(默認情況下稱爲CAcroAXDocShim)生成封裝。用於創建WM_INITDIALOG處理過程中控制的代碼是:

m_ctrl.Create(_T("PDF Viewer"), WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_TABSTOP, CRect(5, 5, 400, 300), this, 1001); 
m_ctrl.LoadFile(_T("C:\\auslab\\test.pdf")); 

出現的窗口中正確地加載PDF,並且工作得很好,但我一直沒能截獲鍵盤輸入,如果ActiveX控件具有焦點,無論是由:

  • 使用加速器
  • 的PreTranslateMessage上的窗口類ActiveX控件的父窗口的CWinApp派生類
  • 的PreTranslateMessage
  • 處理WM_SYSCOMMAND

其實,我試圖設置在WM_KEYDOWN消息斷點我在主窗口的消息循環鍵,它似乎從來沒有被擊中時的ActiveX控件有焦點。我曾嘗試在我的應用程序中使用鍵盤鉤來覆蓋控件的按鍵處理,但它似乎不可靠地工作 - 它將運行一段時間,但經過一些交互後,鍵盤鉤完全停止。

任何想法?提前致謝。

回答

相關問題