问一个C++程序错在哪了?
#include<windows.h>LRESULTCALLBACKWndProc(HWND,UNIT,WPARAM,LPARAM);//主函数intWINAPIWinM...
#include<windows.h>
LRESULT CALLBACK WndProc(HWND,UNIT,WPARAM,LPARAM);
//主函数
int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE preInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
HWND hwnd; //定义窗口句柄
MSG msg; //定义用来存储消息的变量
char lpszClassName[]="窗口"; //窗口类型名
WNDCLASS wc; //定义一个窗口类型变量
wc.style=0; //窗口样式,一般置为0
wc.lpfnWndProc=WndProc; //指向窗口函数的指针
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hInstance; //定义应用程序的实例句柄
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口的图标
wc.Cursor=LoadCursor(NULL,IDC_ARROW); //窗口的光标
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//设置用户区背景颜色
wc.lpszMenuName=NULL; //窗口的菜单资源名
wc.lpszClassName=lpszClassName; //窗口的类型名
RegisterClass(&wc); //注册窗口类
hwnd=CreateWindow( lpszClassName, //创建窗口//窗口类型
"windows", //窗口名字
WS_OVERLAPPEDWINDOW, //窗口风格
120,50,800,600, //左上角坐标、窗口宽长度
NULL, //父窗口的句柄
NULL, //主菜单的句柄
hInstance, //应用程序实例句柄
NULL); //该值为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, //附加参数1
LPARAM lParam) //附加参数2
{
switch(message)
{
case WM_LBUTTONDOWN: //鼠标左键按下消息
{
MessageBeep(0); //可以发出声音的API函数
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
} 展开
LRESULT CALLBACK WndProc(HWND,UNIT,WPARAM,LPARAM);
//主函数
int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE preInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
HWND hwnd; //定义窗口句柄
MSG msg; //定义用来存储消息的变量
char lpszClassName[]="窗口"; //窗口类型名
WNDCLASS wc; //定义一个窗口类型变量
wc.style=0; //窗口样式,一般置为0
wc.lpfnWndProc=WndProc; //指向窗口函数的指针
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hInstance; //定义应用程序的实例句柄
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口的图标
wc.Cursor=LoadCursor(NULL,IDC_ARROW); //窗口的光标
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//设置用户区背景颜色
wc.lpszMenuName=NULL; //窗口的菜单资源名
wc.lpszClassName=lpszClassName; //窗口的类型名
RegisterClass(&wc); //注册窗口类
hwnd=CreateWindow( lpszClassName, //创建窗口//窗口类型
"windows", //窗口名字
WS_OVERLAPPEDWINDOW, //窗口风格
120,50,800,600, //左上角坐标、窗口宽长度
NULL, //父窗口的句柄
NULL, //主菜单的句柄
hInstance, //应用程序实例句柄
NULL); //该值为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, //附加参数1
LPARAM lParam) //附加参数2
{
switch(message)
{
case WM_LBUTTONDOWN: //鼠标左键按下消息
{
MessageBeep(0); //可以发出声音的API函数
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
} 展开
3个回答
展开全部
`UNIT' has not been declared
char lpszClassName[]="窗口";标点符号中文
char lpszClassName[]="窗口";标点符号中文
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有几个小问题。
1.LRESULT CALLBACK WndProc(HWND,UNIT,WPARAM,LPARAM);这句中的UNIT应该为UINT
2.有几个分号写成了大写:应该在英文半角下输入分号;
3.wc.hInstance=hInstance;//定义应用程序的实例句柄,这里的hInstance应该小写hinstance
同样在hwnd=CreateWindow()中的hInstance应该为hinstance
4.代码里面有很多不能识别的空字符,你要将它删除,可能是在网上copy代码时识别不了的。
改正后的程序如下:
#include<windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//这里的UNIT应该是UINT
//主函数
int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE preInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
HWND hwnd; //定义窗口句柄
MSG msg; //定义用来存储消息的变量
char lpszClassName[]="窗口"; //窗口类型名
WNDCLASS wc;//定义一个窗口类型变量
wc.style=0;//窗口样式,一般置为0
wc.lpfnWndProc=WndProc;//指向窗口函数的指针
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hinstance;//定义应用程序的实例句柄,这里的hInstance应该小写hinstance
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口的图标
wc.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口的光标,这里的Cusor应该为hCursor
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//设置用户区背景颜色
wc.lpszMenuName=NULL;//窗口的菜单资源名
wc.lpszClassName=lpszClassName;//窗口的类型名
RegisterClass(&wc);//注册窗口类
hwnd=CreateWindow( lpszClassName, //创建窗口//窗口类型
"windows",//窗口名字
WS_OVERLAPPEDWINDOW,//窗口风格
120,50,800,600,//左上角坐标、窗口宽长度
NULL,//父窗口的句柄
NULL,//主菜单的句柄
hinstance, //应用程序实例句柄,同样要小写
NULL); //该值为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, //附加参数1
LPARAM lParam) //附加参数2
{
switch(message)
{
case WM_LBUTTONDOWN: //鼠标左键按下消息
{
MessageBeep(0);//可以发出声音的API函数
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
1.LRESULT CALLBACK WndProc(HWND,UNIT,WPARAM,LPARAM);这句中的UNIT应该为UINT
2.有几个分号写成了大写:应该在英文半角下输入分号;
3.wc.hInstance=hInstance;//定义应用程序的实例句柄,这里的hInstance应该小写hinstance
同样在hwnd=CreateWindow()中的hInstance应该为hinstance
4.代码里面有很多不能识别的空字符,你要将它删除,可能是在网上copy代码时识别不了的。
改正后的程序如下:
#include<windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//这里的UNIT应该是UINT
//主函数
int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE preInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
HWND hwnd; //定义窗口句柄
MSG msg; //定义用来存储消息的变量
char lpszClassName[]="窗口"; //窗口类型名
WNDCLASS wc;//定义一个窗口类型变量
wc.style=0;//窗口样式,一般置为0
wc.lpfnWndProc=WndProc;//指向窗口函数的指针
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hinstance;//定义应用程序的实例句柄,这里的hInstance应该小写hinstance
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口的图标
wc.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口的光标,这里的Cusor应该为hCursor
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//设置用户区背景颜色
wc.lpszMenuName=NULL;//窗口的菜单资源名
wc.lpszClassName=lpszClassName;//窗口的类型名
RegisterClass(&wc);//注册窗口类
hwnd=CreateWindow( lpszClassName, //创建窗口//窗口类型
"windows",//窗口名字
WS_OVERLAPPEDWINDOW,//窗口风格
120,50,800,600,//左上角坐标、窗口宽长度
NULL,//父窗口的句柄
NULL,//主菜单的句柄
hinstance, //应用程序实例句柄,同样要小写
NULL); //该值为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, //附加参数1
LPARAM lParam) //附加参数2
{
switch(message)
{
case WM_LBUTTONDOWN: //鼠标左键按下消息
{
MessageBeep(0);//可以发出声音的API函数
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一处错误 wc.hInstance=hInstance; //定义应用程序的实例句柄 这里的大小写名字写错了,修改为wc.hInstance=hinstance; //定义应用程序的实例句柄
第二处
wc.Cursor=LoadCursor(NULL,IDC_ARROW);//窗口的光标 你打错名字了,修改为
wc.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口的光标
第三处
hwnd=CreateWindow( lpszClassName,"windows",WS_OVERLAPPEDWINDOW,120,50,800,600,NULL,NULL,hInstance,NULL);//该值为NULL
跟第一处一样hInstance修改为hinstance
hwnd=CreateWindow( lpszClassName,"windows",WS_OVERLAPPEDWINDOW,120,50,800,600,NULL,NULL,hinstance,NULL);//该值为NULL
最终代码
#include<windows.h>
LRESULT CALLBACK WndProc(HWND,unsigned int,WPARAM,LPARAM);
//主函数
int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE preInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
HWND hwnd; //定义窗口句柄
MSG msg; //定义用来存储消息的变量
char lpszClassName[]="窗口"; //窗口类型名
WNDCLASS wc; //定义一个窗口类型变量
wc.style=0; //窗口样式,一般置为0
wc.lpfnWndProc=WndProc; //指向窗口函数的指针
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hinstance; //定义应用程序的实例句柄
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口的图标
wc.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口的光标
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//设置用户区背景颜色
wc.lpszMenuName=NULL;//窗口的菜单资源名
wc.lpszClassName=lpszClassName;//窗口的类型名
RegisterClass(&wc);//注册窗口类
hwnd=CreateWindow( lpszClassName,"windows",WS_OVERLAPPEDWINDOW,120,50,800,600,NULL,NULL,hinstance,NULL);//该值为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, //附加参数1
LPARAM lParam) //附加参数2
{
switch(message)
{
case WM_LBUTTONDOWN: //鼠标左键按下消息
{
MessageBeep(0); //可以发出声音的API函数
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
第二处
wc.Cursor=LoadCursor(NULL,IDC_ARROW);//窗口的光标 你打错名字了,修改为
wc.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口的光标
第三处
hwnd=CreateWindow( lpszClassName,"windows",WS_OVERLAPPEDWINDOW,120,50,800,600,NULL,NULL,hInstance,NULL);//该值为NULL
跟第一处一样hInstance修改为hinstance
hwnd=CreateWindow( lpszClassName,"windows",WS_OVERLAPPEDWINDOW,120,50,800,600,NULL,NULL,hinstance,NULL);//该值为NULL
最终代码
#include<windows.h>
LRESULT CALLBACK WndProc(HWND,unsigned int,WPARAM,LPARAM);
//主函数
int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE preInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
HWND hwnd; //定义窗口句柄
MSG msg; //定义用来存储消息的变量
char lpszClassName[]="窗口"; //窗口类型名
WNDCLASS wc; //定义一个窗口类型变量
wc.style=0; //窗口样式,一般置为0
wc.lpfnWndProc=WndProc; //指向窗口函数的指针
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hinstance; //定义应用程序的实例句柄
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口的图标
wc.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口的光标
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//设置用户区背景颜色
wc.lpszMenuName=NULL;//窗口的菜单资源名
wc.lpszClassName=lpszClassName;//窗口的类型名
RegisterClass(&wc);//注册窗口类
hwnd=CreateWindow( lpszClassName,"windows",WS_OVERLAPPEDWINDOW,120,50,800,600,NULL,NULL,hinstance,NULL);//该值为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, //附加参数1
LPARAM lParam) //附加参数2
{
switch(message)
{
case WM_LBUTTONDOWN: //鼠标左键按下消息
{
MessageBeep(0); //可以发出声音的API函数
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询