【请大神帮忙jie'jue】【 "WNDCLASS *" 类型的实参与 "const WNDCLASSA *" 类型的形参不兼容】

时间:2021-01-28 20:16:54
孙鑫c++里面的代码编译不通过,请大神帮忙解决,谢谢!
int CALLBACK WinMain(
_In_ HINSTANCE hInstance,
_In_ HINSTANCE hPrevInstance,
_In_ LPSTR     lpCmdLine,
_In_ int       nCmdShow
)
{
WNDCLASS wndcls;
wndcls.cbClsExtra = 0;
wndcls.cbWndExtra = 0;
wndcls.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wndcls.hCursor = LoadCursor(NULL, IDC_CROSS);
wndcls.hIcon = LoadIcon(NULL, IDI_ERROR);
wndcls.hInstance = hInstance;
wndcls.lpfnWndProc = WinSunProc;
wndcls.lpszClassName = "WeiXin2003";
wndcls.lpszMenuName = NULL;
wndcls.style = CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls);    编译错误:【 "WNDCLASS *" 类型的实参与 "const WNDCLASSA *" 类型的形参不兼容】

HWND hwnd;
hwnd = CreateWindow("WeiXin2003", "北京微新科学技术培训中心", WS_OVERLAPPEDWINDOW, 0, 0, 600, 400, NULL, NULL, hInstance, NULL);
ShowWindow(hwnd, SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;

}

8 个解决方案

#1


项目编译环境没弄好吧,  #include <windows.h> ?

#2


引用 1 楼 zgl7903的回复:
项目编译环境没弄好吧,  #include <windows.h> ?

前面没贴上去,有#include

#3


使用 RegisterClassA 或者 RegisterClassW。
主要字符集的问题。

#4


是否代码中设置了多字节或UNICODE 与编译环境设置的冲突了

#5


RegisterClass( (const WNDCLASSA *)&wndcls);

#6


RegisterClass(&wndcls);   编译错误:【 "WNDCLASS *" 类型的实参与 "const WNDCLASSA *" 类型的形参不兼容】
这句代码应该是没有错的。

#7


我代码中设置了多字节,请问如何修改?当时设置多字节的原因是使用wndclass函数是出现编译错误【不能将参数从“LPCTSTR”转化为“const char*”  】

#8


引用 3 楼 Saleayas 的回复:
使用 RegisterClassA 或者 RegisterClassW。
主要字符集的问题。


我代码中设置了多字节,请问如何修改?当时设置多字节的原因是使用wndclass函数是出现编译错误【不能将参数从“LPCTSTR”转化为“const char*”  】 

#1


项目编译环境没弄好吧,  #include <windows.h> ?

#2


引用 1 楼 zgl7903的回复:
项目编译环境没弄好吧,  #include <windows.h> ?

前面没贴上去,有#include

#3


使用 RegisterClassA 或者 RegisterClassW。
主要字符集的问题。

#4


是否代码中设置了多字节或UNICODE 与编译环境设置的冲突了

#5


RegisterClass( (const WNDCLASSA *)&wndcls);

#6


RegisterClass(&wndcls);   编译错误:【 "WNDCLASS *" 类型的实参与 "const WNDCLASSA *" 类型的形参不兼容】
这句代码应该是没有错的。

#7


我代码中设置了多字节,请问如何修改?当时设置多字节的原因是使用wndclass函数是出现编译错误【不能将参数从“LPCTSTR”转化为“const char*”  】

#8


引用 3 楼 Saleayas 的回复:
使用 RegisterClassA 或者 RegisterClassW。
主要字符集的问题。


我代码中设置了多字节,请问如何修改?当时设置多字节的原因是使用wndclass函数是出现编译错误【不能将参数从“LPCTSTR”转化为“const char*”  】