我有一個使用Visual Studio 2008開發的使用Adobe ActiveX控件(我已安裝Adobe Reader X)的MFC應用程序。我嘗試使用setViewRect函數設置縮放矩形,並且它完美地工作。ActiveX控件 - MFC語言環境
現在問題出現在我的Windows區域設置中時,小數點符號被設置爲逗號而不是點(例如在德國區域設置中)。縮放矩形的參數似乎被錯誤地解釋。
我使用了ProcessMonitor,發現當創建Adobe ActiveX Control並在我的進程中加載了它的DLL時,它調用setlocale,因此應用程序使用當前的Windows區域設置而不是默認的「C」語言環境。因此,應用程序以錯誤的方式解釋數字。
加載Adobe後,我試圖重置語言環境爲「C」,並且此解決方法解決了問題。
現在,當我將應用程序遷移到Visual Studio 2010時,問題再次出現。顯然,Adobe DLL(「c:\ Program Files文件(x86)\ Common Files \ Adobe \ Acrobat \ ActiveX \ AcroPDF.dll」)是使用Visual Studio 2008.因此,當它設置區域設置時,它在MSVCR90.dll中完成。當我重置語言環境時,我使用了相同的DLL。
現在我的應用程序在VS2010中,調用setlocale在MSVCR100.dll中完成,因此它不會影響MSVCR90.dll中已經設置的區域設置。
有沒有辦法來設置我的應用程序內託管的COM對象的區域設置?
非常感謝你提前:)
謝謝你satuon的回覆:) 我試過這樣做,但不幸的是LoadLibrary(_T(「MSVCR90.dll」))返回一個NULL句柄。它只適用於當我LoadLibrary與MSVCR90.dll(C:\\ Windows \\ winsxs \\ x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57 \\ msvcr90.dll)的完整路徑,這是不可行的。 – dood 2012-07-25 15:34:29
但是,當您嘗試使用完整路徑時,它是否正常工作? – sashoalm 2012-07-25 16:29:29
是的,它:)謝謝你的提示:) 我只是不能在我的應用程序中使用完整的路徑。 – dood 2012-07-25 18:43:48