挣扎于 CreatWindow 函数

问题描述

我是初学者,我正在尝试编写我的第一个游戏。我正在学习前一段时间制作的教程。这是我的代码

#include <windows.h>


//Callback function

LRESULT CALLBACK window_callback(HWND hwnd,UINT uMsg,WParaM wParam,LParaM lParam)
{
    return DefWindowProc(hwnd,uMsg,wParam,lParam);
}



int WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
    //Create Window Class 

        WNDCLASS window_class = {};
        window_class.style = CS_HREDRAW | CS_VREDRAW;
        window_class.lpszClassName = L"Game Window Class";
        window_class.lpfnWndProc = window_callback;

    //Register Class

        RegisterClass(&window_class);
    

    //Create Window
    CreateWindow(window_class.lpszClassName,"My First Game!",WS_OVERLAPPEDWINDOW | WS_VISIBLE,CW_USEDEFAULT,1280,720,hInstance,0);




};

当我尝试编译代码时,它返回了这两个错误

E0167   argument of type "const char *" is incompatible with parameter of type "LPCWSTR"
    
C2664   'HWND CreateWindowExW(DWORD,LPCWSTR,DWORD,int,HWND,HMENU,HINSTANCE,LPVOID)': cannot convert argument 3 from 'const char [15]' to 'LPCWSTR'  

我做错了什么?

解决方法

当您使用 Windows API 而不显式指定 ANSI 版本(带有 A 后缀)或 Unicode 版本(带有 W 后缀)时,您应该使用 TEXT macro 来表示字符串文字。

错误的行:

window_class.lpszClassName = L"Game Window Class";
CreateWindow(window_class.lpszClassName,"My First Game!",WS_OVERLAPPEDWINDOW | WS_VISIBLE,CW_USEDEFAULT,1280,720,hInstance,0);

更正的行:

window_class.lpszClassName = TEXT("Game Window Class");
CreateWindow(window_class.lpszClassName,TEXT("My First Game!"),0);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...