用英文标题栏创build一个Win32 Window应用程序,但是标题栏变成了中文。怎么来的?

用英文标题栏创build一个Win32 Window应用程序,但是标题栏变成了中文。怎么来的?,第1张

概述用英文标题栏创build一个Win32 Window应用程序,但是标题栏变成了中文。 怎么来的?

HWND wndHandle; //global variable // code snipped WNDCLASSEX wcex; // code snipped wcex.lpszClassname = (LPCWSTR) "MyTitlename"; // code snipped wndHandle = CreateWindow( (LPCWSTR)"MyTitlename",//the window class to use (LPCWSTR)"MyTitlename",//the Title bar text ... ...

我正在关注Win32 Window应用程序的教程。 上面的代码用来设置窗口标题栏的名称。 编译器对我大喊:“不能从'const char [12]'转换为'LPCWSTR'”所以好吧,我用(LPCWSTR)对我的string“MyTitlename”进行了types化,并且编译得很好。 然而,在运行时,窗口的标题是中文字符。 我试着改变string,汉字总是按照我的string改变。 我正在使用XP的Visual C ++ 2008速成版,我得到英语(美国)作为非Unicode程序的设置。 我不明白。 串怎么成了中国人?

在C ++ / Cx中从框架对象转换为模板化的类

如何将对象转换为未知types为T的IList <T>

用%d和%ld打印pID,linux

键绑定? (c)(将string转换为函数)

在windows中将__int64转换为long

您的应用程序正在编译为一个unicode应用程序(这是在项目设置中定义的)。 这意味着您传递给windows API函数的字符串需要是宽字符字符串,如下所示: L"MyTitlename" 。 您不能强制转换为LPCWSTR,因为这实际上不会改变字符串类型,只会尝试将字符串作为非字符串传递。

这个代码应该工作:

wcex.lpszClassname = L"MyTitlename"; // code snipped wndHandle = CreateWindow( L"MyTitlename",//the window class to use L"MyTitlename",//the Title bar text ...

如果要使用教程中的原始代码而不修改它,可以禁用unicode模式:在项目属性中,转到“常规”选项卡,然后将Character Set为Use Multi-Byte Character Set 。 对于任何可能需要支持额外语言的程序,不要这样做。

那是因为你的(LPCWSTR)演员。 这只是关闭了编译器,告诉你,你做错了什么。 该字符串仍然不是一个Unicode字符串,并不会被转换转换。 固定:

wcex.lpszClassname = L"MyTitlename"; wndHandle = CreateWindow( L"MyTitlename",//the Title bar text

总结

以上是内存溢出为你收集整理的用英文标题栏创build一个Win32 Window应用程序,但是标题栏变成了中文。 怎么来的?全部内容,希望文章能够帮你解决用英文标题栏创build一个Win32 Window应用程序,但是标题栏变成了中文。 怎么来的?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1283311.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存