Win32应用程序编程C++,参数类型为LPCWSTR的错误

Uys*_*des 1 c++ winapi

我正在使用Visual Studio 2013上的Win32应用程序构建一个程序.从我读过的教程中,我知道以下代码是正确的,但我不知道在哪里更改参数类型以阅读以下内容:

case WM_CREATE:
{
    hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "Edit", "",
        WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOHSCROLL |
        ES_AUTOVSCROLL, 50, 100, 300, 300, hWnd, (HMENU)IDC_EDIT_BOX, 
        NULL, NULL);
Run Code Online (Sandbox Code Playgroud)

编译器突出显示"编辑"并给我这个错误:

错误1错误C2664:'HWND CreateWindowExW(DWORD,LPCWSTR,LPCWSTR,DWORD,int,int,int,int,HWND,HMENU,HINSTANCE,LPVOID)':无法将参数2从'const char [5]'转换为'LPCWSTR "

Dav*_*nan 8

您正在使用已UNICODE定义的进行编译.这意味着它CreateWindowExCreateWindowExW宽字符版本的别名.或者:

  1. 提供宽字符文本,或
  2. 打电话CreateWindowExA,或
  3. 编译ANSI.

我个人建议选项1.您的代码将成为:

CreateWindowEx(WS_EX_CLIENTEDGE, L"Edit", L"",
  WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL, 
  50, 100, 300, 300, hWnd, (HMENU)IDC_EDIT_BOX, NULL, NULL);
Run Code Online (Sandbox Code Playgroud)

L字符串文字的前缀用于指定宽字符文字.