簡體   English   中英

IWebBrowser2 塊 IFileDialog

[英]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);

請參閱以下說明和示例程序:

https://github.com/InventorDave/IFileDialog-gcc-Fix

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM