简单创建的一个窗口,查错?

sucky27 2010-10-03 04:33:51
下面这个小程序出错的在什么地方呢?
我把出错信息给发上来@:
--------------------Configuration: WindowsDemo - Win32 Debug--------------------
Compiling...
Apidemo.cpp
E:\vvcc\WindowsDemo\Apidemo.cpp(4) : error C2146: syntax error : missing ';' before identifier 'WinMain'
E:\vvcc\WindowsDemo\Apidemo.cpp(4) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.

WindowsDemo.exe - 1 error(s), 0 warning(s)


下面是程序:

#include<windows.h>//包含windows.h头文件
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数声明
/*入口函数 WinMian*/
int APIENTPY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR
lpCmdLine,int nCmdShow){
WNDCLASS wndclass;//定义窗口类结构变量
HWND hwnd;//定义窗口句柄
MSG msg;//定义消息结构变量
/*定义窗口类的各属性*/
wndclass.style=CS_HREDRAW|CS_VREDRAW;//改变窗口大小则重画
wndclass.lpfnWndProc=WndProc;//窗口函数为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="window窗口创建";//窗口类名为window窗口创建
/*注册窗口类*/
if(! RegisterClass(&wndclass)) return FALSE;
/*创建窗口*/
hwnd=CreateWindow("window窗口创建",//窗口类名为window窗口创建
"windows窗口创建",//窗口名为window窗口创建
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 45 lparam){
//根据消息值转相应的消息处理
switch(message){
case WM_PAINT://重画窗口客户区消息处理
HDC hdc;//定义设备描述表句柄
PAINTSTRUCT ps;//定义绘图信息结构变量
hdc=BejinPaint(hwnd,&ps);//获取要重的窗口的设备描述表句柄
TextOut(hdc,10,20,"哈哈,Windows编程创建的窗口!",28); //输出文本
EndPaint(hwnd,&ps);//结束要重的窗口
return 0;
case WM_DESTROY://撤销窗口消息处理
PostQuitMessage(0);//产生对出程序消息WM_QUIT
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);


//其他转默认窗口函数
}
...全文
125 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2010-11-02
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
Applic 2010-10-03
  • 打赏
  • 举报
回复
APIENTPY -> APIENTRY
GetStockobject -> GetStockObject
LPARAM 45 lparam -> LPARAM lParam
BejinPaint -> BeginPaint
sucky27 2010-10-03
  • 打赏
  • 举报
回复
按照一楼兄弟去掉函数声明分号,不行的。我也很疑惑,函数声明在句末加个分号吗,怎么会去掉呢,什么原理?
Sund71 2010-10-03
  • 打赏
  • 举报
回复
看看你的返回值...
在窗口过程函数中,你把
/*窗口函数*/
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM 45 lparam){
//根据消息值转相应的消息处理
switch(message){
case WM_PAINT://重画窗口客户区消息处理
HDC hdc;//定义设备描述表句柄
PAINTSTRUCT ps;//定义绘图信息结构变量
hdc=BejinPaint(hwnd,&ps);//获取要重的窗口的设备描述表句柄
TextOut(hdc,10,20,"哈哈,Windows编程创建的窗口!",28); //输出文本
EndPaint(hwnd,&ps);//结束要重的窗口
break;
case WM_DESTROY://撤销窗口消息处理
PostQuitMessage(0);//产生对出程序消息WM_QUIT
break;
default:
DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
yann2 2010-10-03
  • 打赏
  • 举报
回复
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数声明

去掉 ; 号
schlafenhamster 2010-10-03
  • 打赏
  • 举报
回复
“APIENTPY”=“APIENTRY”=“CALLBACK”=“__stdcall”
wltg2001 2010-10-03
  • 打赏
  • 举报
回复
有几个小错误,改一下就行了:
1:int APIENTPY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR
lpCmdLine,int nCmdShow){
==============
改成:
int CALLBACK WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR
lpCmdLine,int nCmdShow){

2:wndclass.hbrBackground=(HBRUSH)GetStockobject(WHITE_BRUSH);//背景为白色
=============
这里应该有个拼写错误:GetStockObject,这里的大小写不能混的。

3:LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM 45 lparam){
============
上面的45估计是输入是的手误。
lyyscf 2010-10-03
  • 打赏
  • 举报
回复

#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数声明
/*入口函数 WinMian*/
int CALLBACK WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR
lpCmdLine,int nCmdShow){
WNDCLASS wndclass;//定义窗口类结构变量
HWND hwnd;//定义窗口句柄
MSG msg;//定义消息结构变量
/*定义窗口类的各属性*/
wndclass.style=CS_HREDRAW|CS_VREDRAW;//改变窗口大小则重画
wndclass.lpfnWndProc=WndProc;//窗口函数为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="window窗口创建";//窗口类名为window窗口创建
/*注册窗口类*/
if(! RegisterClass(&wndclass)) return FALSE;
/*创建窗口*/
hwnd=CreateWindow("window窗口创建",//窗口类名为window窗口创建
"windows窗口创建",//窗口名为window窗口创建
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_PAINT://重画窗口客户区消息处理
HDC hdc;//定义设备描述表句柄
PAINTSTRUCT ps;//定义绘图信息结构变量
hdc=BeginPaint(hwnd,&ps);//获取要重的窗口的设备描述表句柄
TextOut(hdc,10,20,"哈哈,Windows编程创建的窗口!",28); //输出文本
EndPaint(hwnd,&ps);//结束要重的窗口
return 0;
case WM_DESTROY://撤销窗口消息处理
PostQuitMessage(0);//产生对出程序消息WM_QUIT
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);


//其他转默认窗口函数
}
lyyscf 2010-10-03
  • 打赏
  • 举报
回复
很明显,必要的头文件没有包含进来

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧