[求助]帮我看看这个程序为什么错
#include<windows.h>
INT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
char szClassName[]="windowclass1";
char szAppTitle[]="呵呵!";
INT PASCAL WinMain(HINSTANCE hInstance,
HINSTANCE hPrecInstance,
LPSTR lpszCmdParam,
INT nCmdShow)
//WinMain()函数的定义
{
HWND hMainWnd;//窗口句柄
MSG msg;//消息结构体
WNDCLASS myWC;//窗口结构体
if(!hPrecInstance)
{
myWC.style=CS_HREDRAW|CS_VREDRAW;//窗口风格
myWC.lpfnWndProc=WndProc;//消息处理函数//调试时这里报错
myWC.cbClsExtra=0;
myWC.cbWndExtra=0;
myWC.hInstance=hInstance;
myWC.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口图标
myWC.hCursor=LoadCursor(NULL,IDC_ARROW);//光标
myWC.hbrBackground=GetStockObject(WHITE_BRUSH);//背景颜色
//这个背景颜色出错
myWC.lpszMenuName=NULL;//菜单
myWC.lpszClassName=szAppTitle;//窗口结构体命名
//CreateWindow()函数根据窗口结构体的名称来建立窗口
RegisterClass(&myWC);//注册窗口
}
hMainWnd=CreateWindow(szClassName,
szAppTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);
ShowWindow(hMainWnd,SW_SHOWMAXIMIZED);
UpdateWindow(hMainWnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
INT CALLBACK WndProc(HWND hMainwnd,UINT message,WPARAM wParam,LPARAM lparam)
{
char messgaeleft[]="你想干什么?";
char messageright[]="你想干什么?";
switch(message)
{
case WM_RBUTTONDOWN:
{
MessageBox(GetFocus(),messageright,"你好!",MB_OK|MB_ICONINFORMATION);
break;
}
case WM_LBUTTONDOWN:
{
MessageBox(GetFocus(),messageleft,"the left button!",MB_OK|MB_ICONINFORMATION);
break;
//这个地方说messageleft这个没定义。
}
case WM_DESTROY:
{
PostQuitMessage(0);
return(0);
}
default:
break;
}
return DefWindowProc(hMainwnd,message,wParam,lParam);
//这地方lParam说这个也没定义
}
请高手帮忙看看,给小弟指条路,我是新手来的。照书编的也弄错了。我真是没天分哦。
参考答案:#include<windows.h>
LRESULT CALLBACK WndProc(HWND hMainwnd,UINT message,WPARAM wParam,LPARAM lparam) ;
char szClassName[]="windowclass1";
char szAppTitle[]="呵呵!";
INT PASCAL WinMain(HINSTANCE hInstance,
HINSTANCE hPrecInstance,
LPSTR lpszCmdParam,
INT nCmdShow)
//WinMain()函数的定义
{
HWND hMainWnd;//窗口句柄
MSG msg;//消息结构体
WNDCLASS myWC;//窗口结构体
if(!hPrecInstance)
{
myWC.style=CS_HREDRAW|CS_VREDRAW;//窗口风格
myWC.lpfnWndProc=WndProc;//消息处理函数//调试时这里报错
myWC.cbClsExtra=0;
myWC.cbWndExtra=0;
myWC.hInstance=hInstance;
myWC.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口图标
myWC.hCursor=LoadCursor(NULL,IDC_ARROW);//光标
myWC.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//背景颜色
//这个背景颜色出错
myWC.lpszMenuName=NULL;//菜单
myWC.lpszClassName=szAppTitle;//窗口结构体命名
//CreateWindow()函数根据窗口结构体的名称来建立窗口
RegisterClass(&myWC);//注册窗口
}
hMainWnd=CreateWindow(szClassName,
szAppTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);
ShowWindow(hMainWnd,SW_SHOWMAXIMIZED);
UpdateWindow(hMainWnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hMainwnd,UINT message,WPARAM wParam,LPARAM lparam)
{
char messgaeleft[]="你想干什么?";
char messageright[]="你想干什么?";
switch(message)
{
case WM_RBUTTONDOWN:
{
MessageBox(GetFocus(),messageright,"你好!",MB_OK|MB_ICONINFORMATION);
break;
}
case WM_LBUTTONDOWN:
{
MessageBox(GetFocus(),messgaeleft,"the left button!",MB_OK|MB_ICONINFORMATION);
break;
//这个地方说messageleft这个没定义。
}
case WM_DESTROY:
{
PostQuitMessage(0);
return(0);
}
default:
break;
}
return DefWindowProc(hMainwnd,message,wParam,lparam);
//这地方lParam说这个也没定义
}
改过了 要是还有哪不懂可以联系QQ:***********
现在你的程序是不是没有错误了
但 是不是不能显示窗口啊
hMainWnd=CreateWindow(szClassName,
szAppTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,
CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);
这句没有语法错误但你窗口建错了
把szClassName改为szAppTitle
把szAppTitle改为"这是你的标题栏"