我有一个用 Visual Studio 2008 开发的 MFC 应用程序,我在其中使用 Adobe ActiveX 控件(我安装了 Adobe Reader X)。我尝试使用 setViewRect 函数设置缩放矩形,并且效果很好。
现在问题出现在我的 Windows 区域设置中,十进制符号设置为逗号而不是点(例如在德语区域设置中)。缩放矩形的参数似乎被错误地解释了。
我使用了 ProcessMonitor,发现当创建 Adobe ActiveX 控件并将其 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 对象的语言环境?
提前非常感谢你:)