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)已经在那里写了一篇评论,解释了你做错了什么以及如何正确地做。