c++ - 挣扎于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, CW_USEDEFAULT, 1280, 720, 0, 0, hInstance, 0);
};
当我尝试编译代码时,它给了我这两个错误:
E0167 argument of type "const char *" is incompatible with parameter of type "LPCWSTR"
C2664 'HWND CreateWindowExW(DWORD,LPCWSTR,LPCWSTR,DWORD,int,int,int,int,HWND,HMENU,HINSTANCE,LPVOID)': cannot convert argument 3 from 'const char [15]' to 'LPCWSTR'
我究竟做错了什么?
解决方案
当您使用 Windows API 而不明确指定 ANSI 版本(带后缀)或 Unicode 版本(带后缀)时,您应该使用TEXT
宏来表达字符串文字。A
W
错误的行:
window_class.lpszClassName = L"Game Window Class";
CreateWindow(window_class.lpszClassName, "My First Game!", WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 1280, 720, 0, 0, hInstance, 0);
更正的行:
window_class.lpszClassName = TEXT("Game Window Class");
CreateWindow(window_class.lpszClassName, TEXT("My First Game!"), WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, 1280, 720, 0, 0, hInstance, 0);
推荐阅读
- ios - iOS UITests 通过 Xcode 但因 xcodebuild 失败
- c# - 如何退出 C# GraphQL 订阅?
- python - 如何在python中检查另一个列表中的列表
- reactjs - 如何处理循环中的复选框反应原生
- python - 将 CSV 文件迁移到 Django SQL 后端的最佳方法?
- r - 用于比较的连接灰线
- php - 下载功能改为下载 .php 文件
- python - Plotly:带有“href”的树形图元素不起作用
- oracle11g - 我需要将日期更改为 sysdate 并保持时间,因为它来自下面的查询
- angular - 检查后表达式已更改 - ngTemplateOutletContext