none
VS编译出现:MessageBoxW”: 不能将参数 2 从“const char [12]”转换为“LPCWSTR” RRS feed

  • 问题

  • #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”
    这是什么问题呀,同样的问题在很多个地方出现了呀?想了几天都要想不通呢??快来帮帮我呀!       

    2010年4月15日 7:37

答案

  • MessageBox(hwnd,L"高的?",L"weixin",MB_YESNO)

    都这样调用。

    在unicode环境下,大部分api接收的字符串都是宽字符串。

    • 已标记为答案 Nancy Shao 2010年4月21日 5:53
    2010年4月15日 8:09
  • 老问题了,又是ANSI和Unicode的问题。

    你可以按楼上的方法,也可以直接在工程属性里面设置,把默认文字编码格式由Unicode替换成MutliByte


    0xBAADF00D
    • 已标记为答案 Nancy Shao 2010年4月21日 5:53
    2010年4月15日 12:19
    版主

全部回复

  • MessageBox(hwnd,L"高的?",L"weixin",MB_YESNO)

    都这样调用。

    在unicode环境下,大部分api接收的字符串都是宽字符串。

    • 已标记为答案 Nancy Shao 2010年4月21日 5:53
    2010年4月15日 8:09
  • 老问题了,又是ANSI和Unicode的问题。

    你可以按楼上的方法,也可以直接在工程属性里面设置,把默认文字编码格式由Unicode替换成MutliByte


    0xBAADF00D
    • 已标记为答案 Nancy Shao 2010年4月21日 5:53
    2010年4月15日 12:19
    版主