我正在使用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);

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

最佳答案

您正在使用UNICODE进行定义。这意味着CreateWindowEx是宽字符版本CreateWindowExW的别名。要么:

  • 提供宽字符文本或
  • 调用CreateWindowExA
  • 为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);
    

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

    关于c++ - Win32应用程序编程C++,参数类型为LPCWSTR的错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21864210/

    10-15 00:38