你可以访问标准的Windowsstring,如“取消”?

我正在build立一个标准的“确定”和“取消”button的Windows对话框。 鉴于Windows在其自己的对话框中使用相同的button文本是有办法让我抓住正确的string使用button?

这样,无论使用哪种语言,我的应用程序都将具有正确的string,而无需我自己将其本地化为大量不同的语言。 我正在使用C#,但可以愉快地使用平台调用来访问OS方法,如果需要的话。

注:是的,我可以很容易地本地化的资源,但我不想要find,必须input十亿个不同的语言string,当它必须在窗口内已经存在。 请不要回答说本地化的应用程序!

Solutions Collecting From Web of "你可以访问标准的Windowsstring,如“取消”?"

在Visual Studio中:文件+打开+文件,键入c:\ windows \ system32 \ user32.dll。 打开“字符串表”节点并双击“字符串表”。 向下滚动到800。

微软对于依靠这些资源ID采取了一个毫不吝啬的立场。 鉴于已经完成了你正在考虑的程序员的数量,但他们不可能改变这些数字。 你需要P / Invoke LoadLibrary()和LoadString()。

但是,这个计划的最终失败是Vista / Win7 Ultimate和MUI语言包。 这允许用户在更新DLL中的资源字符串的情况下在语言之间切换。 这样的版本总是会有英文字符串。

那么,如果你使用标准的MessageBox.Show()函数并传递它的参数,它会自动为你定位yes / no / okay / cancel按钮。

更有趣的是如何本地化消息文本。

不,没有标准的,支持的方式来做到这一点。 是的,Windows确实存储了这些字符串,并且(有一些努力)有可能获得这些字符串,但不能保证它们将保持在相同的位置,并且在版本之间保持相同的标识符。

虽然您可能不希望这是答案,但答案的确是让您的应用程序本地化。 如果您将所有其他内容本地化(如您所需,除非您只想将“ OK和“ Cancel本地化),但我不确定为什么在OK和“ Cancel包含本地化值会是一个很大的努力。

请参阅MB_GetString ,声明如下:

https://msdn.microsoft.com/en-us/library/windows/desktop/dn910915(v=vs.85).aspx

但是,似乎需要运行时链接:

http://undoc.airesoft.co.uk/user32.dll/MB_GetString.php