C++ Win32中是否有检测用户何时更改语言环境的消息或通知? 编辑:
根据社区的意见对问题进行了简化和优化。问题的删除部分将作为单独问题发布 问题: 在C++ Win32中是否有检测用户何时更改语言环境的消息或通知? 编辑:,c++,winapi,locale,C++,Winapi,Locale,根据社区的意见对问题进行了简化和优化。问题的删除部分将作为单独问题发布 问题: 在Win32 API中是否有任何WM\u SOMETHING或NM\u SOMETHING消息可以通知我用户更改语言环境 您知道,我可以使用该消息/通知将程序的区域设置更改为当前区域设置 类似于以下伪代码: case WM_SOMETHING: // in my main window procedure _wsetlocale( LC_ALL, L"" ); 另外,如果有这样的消息,并且我在上面的伪代码中
Win32 API
中是否有任何WM\u SOMETHING
或NM\u SOMETHING
消息可以通知我用户更改语言环境
您知道,我可以使用该消息/通知将程序的区域设置更改为当前区域设置
类似于以下伪代码:
case WM_SOMETHING: // in my main window procedure
_wsetlocale( LC_ALL, L"" );
另外,如果有这样的消息,并且我在上面的伪代码中处理它,它会只调整主窗口的
区域设置
,还是也会为子对话框和控件设置区域设置
我为解决这个问题所做的努力:
浏览互联网后,我发现的唯一的东西是,和消息,但我从来没有使用过它们,不知道它们是否可以解决我的问题
多谢各位
致意。Windows发送一条消息,其中wParam
设置为0
,而lParam
设置为包含值intl
的字符串。这在WM_SETTINGCHANGE
文档中的参数部分进行了描述:
wParam
当系统由于区域设置的更改而发送此消息时,此参数为零
lParam
当系统由于区域设置的更改而发送此消息时,此参数指向字符串“intl”
您的应用程序需要响应该消息,并自己在子对话框和控件中进行任何必要的更改。我可以创建一个
静态
全局变量,并根据该消息进行更新。它可以通过在对话框中使用适当的locale
来解决问题。不过,我还有另一个问题,比如我的应用程序在EN-US中收集数据和表单SQL
query(INSERT-INTO-table-VALUES(1.2);
)。在用户单击“保存”之前,他将locale
更改为EN-CA,然后单击“保存”。现在我用1.2
而不是1,2
作为参数得到查询,并得到错误。我怎样才能解决那个案子?在执行查询之前,我无法阻止用户更改语言环境
,因此我必须适应这种情况。有什么想法吗?谢谢。我使用msaccess2007
和ADO
将数据插入数据库。致以最诚挚的问候。“我怎么才能解决那个案子?”恐怕我不知道答案,但这将是一个不同的问题。你在这里问的就是我回答的那个。:-)@基图:这是一条Windows信息。你听它就像听任何其他Windows消息一样-在wndProc
中的消息处理代码中@kittu:是的,我看到你的问题了。雷米·勒博(Remy Lebeau)已经在那里写了一篇评论,解释了你做错了什么以及如何正确地做。