Cannot convert parameter from 'const char[20]' to 'LPCWSTR'

﹥>﹥吖頭↗ 提交于 2019-11-26 07:49:16

问题


When compiling this code:

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInsance,HINSTANCE hPrevInstance,PSTR cmdLine,int showCmd){
    MessageBox(0,\"First Win32 Program\",\"Window Tittle\",MB_OK);
    }

I get the compiler error:

Error C2664: \'MessageBoxW\': cannot convert parameter 2 from \'const char [20]\' to \'LPCWSTR\' 1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

What am I doing wrong?


回答1:


You have UNICODE defined, so MessageBox is expecting a wide string.




回答2:


By default UNICODE is defined in Visual Studio 2010. Either call MessageBoxA instead of using the MessageBox define or pass a wide string literal (L"First Win32 Program" and L"Window Title") or, if you really care about being able to build without UNICODE defined, use the _T macro around your string literals: _T("First Win32 Program") (this is the same as L"First Win32 Program" when UNICODE is defined, but it will be "First Win32 Program" when UNICODE is not defined).

For more information about UNICODE and how it affects what APIs are called, see this link: http://msdn.microsoft.com/en-us/goglobal/bb688113.aspx. Specifically, the sections below "Creating Win32 Unicode Applications".

On a side note: All Windows operating systems supported by Microsoft today are Unicode native. I would recommend to always favor the "wide" API. In this case, MessageBoxW, which is what MessageBox is defined to be when UNICODE is set. The days of using the _T macro and compiling without UNICODE defined should be behind us.




回答3:


MessageboxW expects wide char... you can make little bit changes in your code and than your code will be perfectly running like. Solution One :- MessageBox(0,L"First Win32 Program",L"Window Tittle",MB_OK); Solution two. Use MessageboxA instead of Messagebox. MessageboxA will take char in ANCI character set.



来源:https://stackoverflow.com/questions/5481378/cannot-convert-parameter-from-const-char20-to-lpcwstr

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!