2014-07-08 32 views
0

我的應用程序是一個對話框作爲DLL出貨。它可以以模式和無模式模式啓動,從我無法控制的更大應用程序中啓動。我們使用MFC庫並遵循COM體系結構。爲了開發目的,我們有一個啓動我的對話框的測試應用程序。TAB鍵在COM框架上的MFC應用程序中不起作用。但是,箭頭鍵工作

我面臨的問題是,tab鍵在模態和無模式下都不起作用。 但是,箭頭鍵工作。

當通過SPY ++觀察時,根本看不到標籤來到我的對話框。

我很困惑發生了什麼?

+0

這些控件是否都具有'WS_TABSTOP'屬性? –

+0

是的,他們都是。 –

回答

1

要使標籤在無模式對話框中工作,應用程序必須從主消息泵調用IsDialogMessage。但就你而言,應用程序甚至不知道該對話框存在。我相信你唯一的選擇就是安裝一個Windows掛鉤(請參閱SetWindowsHookEx)並自己撥打IsDialogMessage

模態對話框應該可以使用,但是 - 你確定它沒有嗎?

+0

是的,我很驚訝,模式對話框的選項卡也不工作(因爲模態擁有消息泵)。我通過安裝一個鉤子併爲其添加回調來按照以下鏈接進行確切的更改。 http://support.microsoft.com/kb/187988(只有不同​​的是,我有一個對話框,而不是屬性表) –

+0

看看下面的鏈接,這幾乎是我的情況,http://support.microsoft.com/KB/233263。我在寫dll的地方,應用程序通過dll啓動我的對話框。但是,他們給出的代碼樣本讓我感到困惑。在這兩個方法中,他們使用了一個變量hwndDllDlg,我不確定那個對話框是什麼以及如何啓動它。@Igor Tandetnik你知道嗎? –

+0

在一種情況下,'hwndDllDlg'是'DllDlgProc'參數的名稱。在第二種情況下,我想它會是一個全局變量的名稱或其他內容,其中'CreateDialog'返回的'HWND'被存儲。 –