问一个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;
}
展开
 我来答
maxlength
2012-03-15 · TA获得超过258个赞
知道小有建树答主
回答量:357
采纳率:100%
帮助的人:178万
展开全部
`UNIT' has not been declared
char lpszClassName[]="窗口";标点符号中文
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
weiyinwu
推荐于2016-10-15 · TA获得超过1540个赞
知道小有建树答主
回答量:1057
采纳率:50%
帮助的人:1141万
展开全部
有几个小问题。
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;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jieqn
2012-03-15 · TA获得超过348个赞
知道小有建树答主
回答量:585
采纳率:0%
帮助的人:387万
展开全部
第一处错误 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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式