Rol*_*ink 3 c++ winapi visual-c++-2010
编译此代码时:
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInsance,HINSTANCE hPrevInstance,PSTR cmdLine,int showCmd){
MessageBox(0,"First Win32 Program","Window Tittle",MB_OK);
}
Run Code Online (Sandbox Code Playgroud)
我收到编译器错误:
错误C2664:'MessageBoxW':无法将参数2从'const char [20]'转换为'LPCWSTR'1>指向的类型不相关; 转换需要reinterpret_cast,C风格的转换或函数式转换
我究竟做错了什么?
Pet*_*ene 14
默认情况下UNICODE,在Visual Studio 2010中定义.调用MessageBoxA而不是使用MessageBoxdefine或传递宽字符串文字(L "First Win32 Program"和L "Window Title"),或者,如果您真的关心能够在没有UNICODE定义的情况下构建,在你的字符串文字周围使用_T宏:_T("First Win32 Program")(这与定义UNICODE时的L "First Win32 Program" 相同,但是当未定义时它将是"First Win32 Program" UNICODE).
有关UNICODE调用哪些API的更多信息及其影响,请参阅此链接:http://msdn.microsoft.com/en-us/goglobal/bb688113.aspx.具体来说,"创建Win32 Unicode应用程序"下面的部分.
另请注意:Microsoft支持的所有Windows操作系统都是Unicode原生的.我建议总是喜欢"广泛"的API.在这种情况下,MessageBoxW这MessageBox是定义为何时UNICODE设置的内容.使用_T宏和UNICODE未定义的编译的日子应该在我们身后.
| 归档时间: |
|
| 查看次数: |
18677 次 |
| 最近记录: |