请帮忙跪下求您帮忙解决(下辈子给您做牛做马)
#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdshow)
{
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= "HelloWin ";
if(!RegisterClass(&wndclass))
{
MessageBox(NULL, "窗口注册失败! ", "HelloWin ",0);
return 0;
}
hwnd=CreateWindow( "HelloWin ", "我的窗口 ",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,nCmdshow);
UpdateWindow(hwnd);
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
LRESULT CALLBACK WndProc (HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_CREATE:
return 0;
case WM_LBUTTONDOWN:
MessageBox(NULL; "你好,我的Visual C++世界! ", "问候 ",0);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
编译出错信息:Compiling...
hello.cpp
E:\test\Ex_HelloApp\hello.cpp(38) : error C2601: 'WndProc ' : local function definitions are illegal
执行 cl.exe 时出错.
怎么弄才能解决啊?救命,就这么个小问题浪费了我半天时间,我还是照书上原原本本的打上去的来.这么下去,我80岁能学会C++就很了不起了.
[解决办法]
#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdshow)
{
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=TEXT( "HelloWin "); //!!!
if(!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT( "窗口注册失败! "),TEXT( "HelloWin "),0); //!!!
return 0;
}
hwnd=CreateWindow(TEXT( "HelloWin "),TEXT( "我的窗口 "),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,nCmdshow);
UpdateWindow(hwnd);
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return static_cast <int> (msg.wParam); //!!!
} //!!!
// WndProc 要单独定义!!!
LRESULT CALLBACK WndProc (HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_CREATE:
return 0;
case WM_LBUTTONDOWN:
MessageBox(NULL,TEXT( "你好,我的Visual C++世界! "),TEXT( "问候 "),0); //!!!
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}