2016-03-19 9 views
1

Doğru ile bir hata alıyorum, kısa bir süre önce C++ öğreniyorum çünkü bir oyun yapmak istiyorum. Öyleyse yaptım, bir C++ penceresi yaparak başladım ancak bunu yapmanın sonunda düzeltemediğim bir sorunla karşılaştım. Wc.lpszClassName = L "ZakariyaTV's Class" yazdığı satırda; Eşitlerin altında kırmızı bir çizgi var. Anlamaya çalışmak için çok zaman harcadım ama yapamam. Nasıl düzeltileceğini biliyorsan, gerçekten çok memnun olurdum. Teşekkür ederim. İşte C++ Pencerem

benim kodunuz: Yeni bir proje oluşturduğunuzda varsayılan ayarla

#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'nin altını çizdiği güzel, ama kodu derlemeye çalıştığınızda derleyici bu satır için ne * hata iletisi * üretiyor? Ayrıca, lütfen kod örneğinizi doğru biçimlendirin. –

+0

Tahminimce? UNICODE seti ile inşa etmiyorsunuz. –

+0

bunu söylüyor: https://gyazo.com/071258b37abe17a3c5e996c9d163846b – ZOulhadj

cevap

0

Visual Studio 2015 Kullanım Multi-Byte karakter ama L L "ZakariyaTV en Sınıfı" o dize derleyici söylemek Unicode olarak derlenmeli, bu yüzden projeniz için Karakter Kümesini değiştirmelisiniz: VS 2015'te sağ klik projeye tıklayın, sonra da Proje Varsayılanları altında Properties-> General-> Karakter setini seçin, nihayet önceki "Multi-Byte Karakter Kümesini Kullanın" ifadesini değiştirin Unicode Karakter Kümesini Kullan.

+0

Yeni projeler, Unicode içinde varsayılan olarak VS 2015 –

+0

'da oluşturulmuştur. Sadece teşekkür etmek istiyorum! denedi ve işe yaradı! Teşekkür ederiz. – ZOulhadj

+0

@Zakariya Onay işaretini tıklayarak cevabı kabul edebilirsiniz –