求助!编译错误:【 "WNDCLASS *" 类型的实参与 "const WNDCLASSA *" 类型的形参不兼容】

时间:2022-04-18 20:17:10
本人刚开始学Directx,看的是Allen Sherrod and Wendy Jones的Directx11游戏编程入门,书上一开始的一个创建窗口程序我就卡了,代码如下:
#include <Windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR cmdLine, int nShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(cmdLine);

WNDCLASSEX wndClass = { 0 };
wndClass.cbSize = sizeof(WNDCLASSEX);
wndClass.style = CS_HREDRAW | CS_VREDRAW;
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);         
wndClass.lpfnWndProc = WndProc;                              
wndClass.hInstance = hInstance;
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wndClass.lpszMenuName = NULL;
wndClass.lpszClassName = "DX11BookWindowClass";

if (!RegisterClass(&wndClass))                       //这里报错!!!!
return -1;

RECT rc = { 0, 0, 640, 480 };
AdjustWindowRect(&rc, WS_OVERLAPPEDWINDOW, false);

HWND hwnd = CreateWindow("Dx11BookWindowClass", "Blank Win32 Window",
WS_OVERLAPPEDWINDOW, 0, 0, rc.right - rc.left, rc.bottom - rc.top,
NULL, NULL, hInstance, NULL);
if (!hwnd) return -1;

ShowWindow(hwnd, nShow);

return 0;
}

报错:E0167【 "WNDCLASS *" 类型的实参与 "const WNDCLASSA *" 类型的形参不兼容】
求助!没想到刚开始学就不会了,救救孩子!

3 个解决方案

#1


本人使用的是visual studio 2017,directx 下的是10

#2


我将 RegisterClass(&wndClass) 改为了 RegisterClassEx(&wndClass) ,但还是报错,如下

错误 LNK2019 无法解析的外部符号 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z),该符号在函数 _WinMain@16 中被引用 BlankWindow C:\Users\think\source\repos\BlankWindow\BlankWindow\main.obj 1

#3


百度搜相关关键字。

#1


本人使用的是visual studio 2017,directx 下的是10

#2


我将 RegisterClass(&wndClass) 改为了 RegisterClassEx(&wndClass) ,但还是报错,如下

错误 LNK2019 无法解析的外部符号 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z),该符号在函数 _WinMain@16 中被引用 BlankWindow C:\Users\think\source\repos\BlankWindow\BlankWindow\main.obj 1

#3


百度搜相关关键字。