2016-03-19 3 views
1

Правильно, недавно я изучал C++, потому что хотел бы сделать игру. Итак, что я сделал, я начал с создания окна C++, но в конце его создания у меня возникла проблема, которую я не могу исправить. На строке, где указано wc.lpszClassName = L "Класс ZakariyaTV"; Я получаю красную линию под равными. Я провел много времени, пытаясь понять это, но я не могу. Если вы знаете, как это исправить, это было бы очень оценено. Спасибо.Я получаю сообщение об ошибке с моим окном C++

Вот мой код:

#include<Windows.h> 

HWND windowHandle; 

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) 
{ 
    switch (msg) 
    { 
    case WM_CLOSE: 
     DestroyWindow(hwnd); 
     break; 
    case WM_DESTROY: 
     PostQuitMessage(0); 
     break; 
    default: 
     return DefWindowProc(hwnd, msg, wParam, lParam); 
    } 
} 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE preInstance, PSTR cmdLine, int showCmd) 
{ 
    // Step 1 

    WNDCLASSEX wc; 

    wc.cbSize = sizeof(WNDCLASSEX); 
    wc.cbClsExtra = 0; 
    wc.cbWndExtra = 0; 
    wc.hIconSm = 0; 

    wc.hInstance = hInstance; 
    wc.lpfnWndProc = WndProc; 
    wc.style = CS_HREDRAW | CS_VREDRAW; 
    wc.lpszClassName = L"ZakariyaTV's Class"; 
    wc.lpszMenuName = 0; 
    wc.hCursor = LoadCursor(0, IDC_ARROW); 
    wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); 

    // Step 2 
    RegisterClassEx(&wc); 

    // Step 3 
    windowHandle = CreateWindowEx(WS_EX_ACCEPTFILES, L"ZakariyaTV's Class", L"Game!", 
     WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 100, 800, 600, 0, 0, hInstance, 0); 

    // Step 4 

    if (windowHandle == 0) 
     MessageBoxA(0, "Create window failed", "Error Message", 0); 

    // Step 5 

    ShowWindow(windowHandle, showCmd); 

    // Step 6 

    UpdateWindow(windowHandle); 

    MSG msg; 

    SecureZeroMemory(&msg, sizeof(MSG)); 
    int returnValue = 0; 

    while ((returnValue = GetMessage(&msg, 0, 0, 0)) != 0) 
    { 
     if (returnValue == -1) 
     { 
      MessageBoxA(windowHandle, "GetMessage Failed!", "Error Message", 0); 
      break; 
     } 

     TranslateMessage(&msg); 
     DispatchMessage(&msg); 


    } 
    return (int)msg.wParam; 
} 
+1

Приятно, что IDE подчеркивает это, но какое * сообщение об ошибке * делает компилятор для этой строки при попытке скомпилировать код? Кроме того, правильно отформатируйте пример кода. –

+0

Мое предположение? Вы не строите набор 'UNICODE'. –

+0

его говорит следующее: https://gyazo.com/071258b37abe17a3c5e996c9d163846b – ZOulhadj

ответ

0

Визуального использование студии 2015 Multi-Byte Character Set для умолчанию при создании нового проекта, но L в L «Класс ZakariyaTV» является сказать компилятору, что строка должен быть скомпилирован как Unicode, поэтому вы должны изменить набор символов для своего проекта: щелкните правой кнопкой мыши проект в VS 2015, затем выберите «Свойства» -> «Общие» -> «Символ» в разделе «По умолчанию», в конце измените предыдущий «Использовать многобайтовый набор символов», «Использовать набор символов Unicode».

+0

Новые проекты создаются в Unicode по умолчанию в VS 2015 –

+0

Я хотел бы просто сказать спасибо! попробовал, и это сработало! Спасибо. – ZOulhadj

+0

@Zakariya Вы можете принять ответ, нажав галочку –