c2447错误学习创建一个win32窗口

时间:2015-02-08 10:41:55

标签: c++ compiler-errors

我已多次尝试从视频中复制此代码几乎相同但目前有点不同因为我在没有遇到新错误的情况下被骗了但我一直在尝试我自己想了几天。无论如何,它的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);
}

ps在我的作家中并不像我在网站上遇到麻烦一样邋。 THX

1 个答案:

答案 0 :(得分:0)

您的代码有几个错误。首先编译器错误c2447告诉我们:

  

编译器在全局范围遇到意外的开括号。在   大多数情况下,这是由一个格式错误的函数头引起的   错误的声明,或者流浪的分号。要解决此问题,   验证开括号是否遵循正确形成的函数头,   并且之前没有声明或散布的分号。

您收到此错误,因为分号结束了您的函数标题,请注意您在两个第一个参数之间也缺少,

LRESULT CALLBACK
MainWindowCallback(HWND Window <-- missing comma        
                   UINT Message, 
                   WPARAM WParam, 
                   LPARAM LParam); <-- terminates the function header

请注意,c ++区分大小写,因此WM_ClOSE与您应该使用的WM_CLOSE不同。换句话说,您正在尝试使用未定义的常量,并且需要更改常量名称:

case WM_ClOSE: <-- this is an undefined constant, should be WM_CLOSE
{
  OutputDebugStringA("WM_CLOSE\n")
} break;