C++ c2447学习创建win32窗口时出错
我试过多次,从一段视频中复制了这段代码,但几乎是一样的。现在有些代码有点不同,因为我一直在胡闹,没有出现新的错误,但我自己也一直在努力弄清楚这一点。不管怎么说,c2447缺失{(旧式格式?)在谷歌搜索后似乎是一个很容易解决的问题,但我被卡住了,感到沮丧。而且它应该是一个win32窗口C++ c2447学习创建win32窗口时出错,c++,compiler-errors,C++,Compiler Errors,我试过多次,从一段视频中复制了这段代码,但几乎是一样的。现在有些代码有点不同,因为我一直在胡闹,没有出现新的错误,但我自己也一直在努力弄清楚这一点。不管怎么说,c2447缺失{(旧式格式?)在谷歌搜索后似乎是一个很容易解决的问题,但我被卡住了,感到沮丧。而且它应该是一个win32窗口 #include <windows.h> LRESULT CALLBACK MainWindowCallback(HWND Window UINT Message,
#include <windows.h>
LRESULT CALLBACK
MainWindowCallback(HWND Window
UINT Message,
WPARAM WParam,
LPARAM LParam);
{
LRESULT Result = 0;
switch(Message)
{
case WM_SIZE:
{
OutputDebugStringA("WM_SIZE\n")
} break;
case WM_DESTROY:
{
OutputDebugStringA("WM_DESTROY\n")
} break;
case WM_ClOSE:
{
OutputDebugStringA("WM_CLOSE\n")
} break;
case WM_ACTIVATEAPP:
{
OutputDebugStringA("WM_ACTIVATEAPP\n")
} break;
default:
{
Result = ;
} break;
}
return(Result);
}
int CALLBACK
WinMain(HINSTANCE Instance,
HINSTANCE PrevInstance,
LPSTR CommandLine,
int ShowCode)
{
WNDCLASS WindowClass = {};
WindowClass.style = CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
WindowClass.lpfnWndProc = MainWindowCallback;
WindowClass.hInstance = Instance ;
// WindowClass.hIcon;
WindowClass.lpszClassName = "RavelWindowClass";
if(RegisterClass(&WindowClass));
{
HWND WindowHandle =
CreateWindowEx(0,
WindowClass.lpszClassName,
"Ravel",
WS_OVERLAPPEDWINDOW|WS_VISIBLE,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
0,
0,
Instance,
0);
if(WindowHandle)
{
for(;;)
{
MSG Message;
BOOL MessageResult = GetMessage(&Message, 0, 0, 0);
if(MessageResult > 0)
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
else
{
break;
}
}
}
}
return(0);
}
#包括
LRESULT回调
MainWindowCallback(HWND窗口
UINT消息,
WPARAM WPARAM,
LPARAM(LPARAM);
{
LRESULT结果=0;
开关(信息)
{
案例WM_大小:
{
OutputDebugStringA(“WM\U大小\n”)
}中断;
案例WM_销毁:
{
OutputDebugStringA(“WM\U销毁\n”)
}中断;
案例WM_结束:
{
OutputDebugStringA(“WM\U关闭\n”)
}中断;
案例WM_激活EAPP:
{
OutputDebugStringA(“WM\u ACTIVATEAPP\n”)
}中断;
违约:
{
结果=;
}中断;
}
返回(结果);
}
int回调
WinMain(HINSTANCE实例,
例如,,
LPSTR命令行,
int显示代码)
{
WNDCLASS WindowClass={};
WindowClass.style=CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
WindowClass.lpfnWndProc=MainWindowCallback;
WindowClass.hInstance=实例;
//WindowClass.hIcon;
WindowClass.lpszClassName=“RavelWindowClass”;
if(RegisterClass(&WindowClass));
{
窗口句柄=
CreateWindowEx(0,
WindowClass.lpszClassName,
“拉威尔”,
WS|U重叠窗口| WS|U可见,
CW_使用默认值,
CW_使用默认值,
CW_使用默认值,
CW_使用默认值,
0,
0,
例子
0);
if(窗口句柄)
{
对于(;;)
{
消息;
BOOL MessageResult=GetMessage(&Message,0,0,0);
如果(MessageResult>0)
{
翻译消息(和消息);
DispatchMessage(&Message);
}
其他的
{
打破
}
}
}
}
返回(0);
}
ps并不像我的作者那样草率,我在网站上遇到了麻烦。
thx您的代码有几个错误。首先,编译器错误
c2447
告诉我们:
编译器在全局范围内遇到意外的大括号。在
大多数情况下,这是由格式不正确的函数头
声明放错了位置,或者分号有误。要解决此问题,
验证打开的大括号是否遵循正确格式的函数标题,
并且前面没有声明或分号
出现此错误是因为分号结束了函数头,请注意,前两个参数之间也缺少一个,
:
LRESULT CALLBACK
MainWindowCallback(HWND Window <-- missing comma
UINT Message,
WPARAM WParam,
LPARAM LParam); <-- terminates the function header
HWND Window
之后的逗号太少了。这是什么Result=;
逗号实际上在我的代码中,这很奇怪。我填写了结果,但仍然得到了C2447。@StevenGosse你能给我们至少完整的错误消息吗?我的编译器没有像C2447那样的错误。是什么?原因是你有一个trailing;
此处:LPARAM LPARAM);
,请尝试删除它,看看它是否有效。
case WM_ClOSE: <-- this is an undefined constant, should be WM_CLOSE
{
OutputDebugStringA("WM_CLOSE\n")
} break;