预期的标识符还是什么?

时间:2013-12-27 23:53:55

标签: c windows

我在DEV C ++中发布了以下类型的代码,这是一个更新版本,Orwell版本。它给了我一些错误,我希望你帮助我:)他们已经修复了大多数错误,但其中一些我无法解释。我只是想做一个简单的MS应用程序。

编译器给我这个错误:

  

第53行 [错误]预期标识符或'('''''''''

代码:

# include <windows.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
int WinMain (HINSTANCE hinstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
    {

        static TCHAR szAppName[] = TEXT ("HelloWin");
        HWND                    hwnd;
        MSG                     msg;
        WNDCLASS                wndclass;
        wndclass.style         = CS_HREDRAW| CS_VREDRAW;
        wndclass.lpfnWndProc   = WndProc;
        wndclass.cbClsExtra    = 0;
        wndclass.cbWndExtra    = 0;
        wndclass.hInstance     = hinstance;
        wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION);
        wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW);
        wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);
        wndclass.lpszMenuName  = NULL;
        wndclass.lpszClassName = szAppName;

        if (!RegisterClass (&wndclass))
        {
            MessageBox (NULL, TEXT ("XXCXCXCXCX"), szAppName, MB_ICONERROR);
            return     (0);
         }     

        hwnd  = CreateWindow    (szAppName,
                                TEXT("FRFRFRFRF"),
                                WS_OVERLAPPEDWINDOW,
                                CW_USEDEFAULT,
                                CW_USEDEFAULT,
                                CW_USEDEFAULT,
                                CW_USEDEFAULT,
                                NULL,
                                NULL,
                                hinstance,
                                NULL);
        ShowWindow  (hwnd, iCmdShow);
        UpdateWindow (hwnd);

        while (GetMessage (&msg, NULL, 0, 0))
            {
                TranslateMessage (& msg);
                DispatchMessage  (& msg);
            }   /* END while*/
            return (msg.wParam);

    }           /* END WinMain () */


LRESULT CALLBACK WndProc(HWND, UINT message, WPARAM wParam, LPARAM lparam);
  { ("**this is line 53**")




                HDC                   hdc;
                PAINTSTRUCT           ps;
                RECT                  rect;


                switch (message)

                {

                    case        WM_CREATE:
                                PlaySound("FRFRFRZZZZZ.wav"), NULL, SND_FILENAME|SND-ASIAC
                                return (0);

                    case        WM_PAINT:
                                hdc = BeginPaint (hwnd, &ps);
                                GetClientRect (hwnd, &rect);
                                DrawText (hdc, TEXT ("HZHZHZHZ!"), -1, &, DT_SINGLELINE|DT-CENTER|DT_VCENT;
                                EndPoint (hwnd, &ps);
                                return (0);

                    case        WM_DESTROY;
                                PostQuitMessage (0);
                                return (0);

                }  

                return      (DefWindowProc (hwnd, message, wParam, lParam));

    }        

新年快乐,剩下的代码还可以吗?

2 个答案:

答案 0 :(得分:2)

删除分号;

LRESULT CALLBACK WndProc(HWND, UINT message, WPARAM wParam, LPARAM lparam);

为了清晰而编辑。

您在开头有一个声明,如下所示

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); // <-- OK

稍后你有实际的功能

LRESULT CALLBACK WndProc(HWND, UINT message, WPARAM wParam, LPARAM lparam); // <--Error. Delete ';'
{ ("**this is line 53**")
:
}

答案 1 :(得分:0)

在你的回调函数中,当你调用PlaySound和DrawText函数时,缺少'()'和')'。函数参数应放在()中。 顺便说一句,当消息是WM_PAINT时,如果你想调用EndPaint而不是EndPoint。