积极答复者
VS编译出现:MessageBoxW”: 不能将参数 2 从“const char [12]”转换为“LPCWSTR”

问题
-
#include <windows.h>
#include <stdio.h>LRESULT CALLBACK WinSunProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd
)
{
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinSunProc;
wndcls.lpszClassName="Weixin2003";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls);HWND hwnd;
hwnd=CreateWindow("Weixin2003","fsrfsagsa",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}LRESULT CALLBACK WinSunProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
){
switch(uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf(szChar,"char is %d",wParam);
MessageBox(hwnd,szChar,"weixin",0);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"mouse click","weixin",0);
HDC hdc;
hdc=GetDC(hwnd);
TextOut(hdc,0,50,"噶适当方式",strlen("噶适当方式"));
ReleaseDC(hwnd,hdc);
break;
case WM_PAINT:
HDC hDC;
PAINTSTRUCT ps;
hDC=BeginPaint(hwnd,&ps);
TextOut(hDC,0,0,"上的风格上的",strlen("上的风格上的"));
EndPaint(hwnd,&ps);
break;
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"高的?","weixin",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}error C2440: “=”: 无法从“const char [11]”转换为“LPCWSTR”
error C2664: “CreateWindowExW”: 不能将参数 2 从“const char [11]”转换为“LPCWSTR”
error C2664: “MessageBoxW”: 不能将参数 2 从“char [20]”转换为“LPCWSTR”
error C2664: “MessageBoxW”: 不能将参数 2 从“const char [12]”转换为“LPCWSTR”
error C2664: “TextOutW”: 不能将参数 4 从“const char [11]”转换为“LPCWSTR”
error C2664: “TextOutW”: 不能将参数 4 从“const char [13]”转换为“LPCWSTR”error C2664: “MessageBoxW”: 不能将参数 2 从“const char [7]”转换为“LPCWSTR”
这是什么问题呀,同样的问题在很多个地方出现了呀?想了几天都要想不通呢??快来帮帮我呀!
答案
-
MessageBox(hwnd,L"高的?",L"weixin",MB_YESNO)
都这样调用。
在unicode环境下,大部分api接收的字符串都是宽字符串。
- 已标记为答案 Nancy Shao 2010年4月21日 5:53
-
老问题了,又是ANSI和Unicode的问题。
你可以按楼上的方法,也可以直接在工程属性里面设置,把默认文字编码格式由Unicode替换成MutliByte
0xBAADF00D- 已标记为答案 Nancy Shao 2010年4月21日 5:53
全部回复
-
MessageBox(hwnd,L"高的?",L"weixin",MB_YESNO)
都这样调用。
在unicode环境下,大部分api接收的字符串都是宽字符串。
- 已标记为答案 Nancy Shao 2010年4月21日 5:53
-
老问题了,又是ANSI和Unicode的问题。
你可以按楼上的方法,也可以直接在工程属性里面设置,把默认文字编码格式由Unicode替换成MutliByte
0xBAADF00D- 已标记为答案 Nancy Shao 2010年4月21日 5:53