C++ c2447学习创建win32窗口时出错

C++ c2447学习创建win32窗口时出错,c++,compiler-errors,C++,Compiler Errors,我试过多次,从一段视频中复制了这段代码,但几乎是一样的。现在有些代码有点不同,因为我一直在胡闹,没有出现新的错误,但我自己也一直在努力弄清楚这一点。不管怎么说,c2447缺失{(旧式格式?)在谷歌搜索后似乎是一个很容易解决的问题,但我被卡住了,感到沮丧。而且它应该是一个win32窗口 #include <windows.h> LRESULT CALLBACK MainWindowCallback(HWND Window UINT Message,

我试过多次,从一段视频中复制了这段代码,但几乎是一样的。现在有些代码有点不同,因为我一直在胡闹,没有出现新的错误,但我自己也一直在努力弄清楚这一点。不管怎么说,c2447缺失{(旧式格式?)在谷歌搜索后似乎是一个很容易解决的问题,但我被卡住了,感到沮丧。而且它应该是一个win32窗口

#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;