[英]IWebBrowser2 blocks IFileDialog
在我們的 32 位 Windows MFC 應用程序中,我們使用 IWebBrowser2 來顯示 HTML 內容。 我們也(因為 MFC 為我們做這件事並且我們在 Windows 10 上運行)使用新的 IFileDialog COM 接口來打開公共文件對話框。
當我們在應用程序中看到一個 Web 瀏覽器窗口時,文件對話框將不會打開,或者將打開一次但不會再次打開,除非您關閉應用程序並再次備份。 通常發生的是這個 MFC 調用:-
HRESULT hr = (static_cast<IFileDialog*>(m_pIFileDialog))->Show(m_ofn.hwndOwner);
簡單地返回“0x800704c7 操作被用戶取消”,甚至沒有顯示對話框。
關閉 HTML 視圖/窗口允許 IFileDialog 按預期工作,因此這兩個組件似乎以某種方式相互干擾。
這種情況現在發生在我們幾個月沒有更改的軟件上,而且似乎僅限於 Windows 10,但我們在網上找不到任何有關原因的線索。
大衛。
我有這個答案。 a) 您調用->Show()
語法完全錯誤。 b) 包含文件'shobjidl.h'
中有嵌套的守衛阻止處理IFileDialog
COM 類的定義,因此許多人遇到編譯錯誤,無法生成難以捉摸的輸出 .exe
調用 ->Show 方法時,基本上所有您需要的是以下位置:
HRESULT hr = pFileDialog->Show(NULL);
請參閱以下說明和示例程序:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.