我在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));
}
新年快乐,剩下的代码还可以吗?
答案 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。