/*
创建窗口
win32窗口的创建过程主要有6部分
1.头文件与主函数、2.创建窗口结构体、3.注册窗口、4.创建窗口、5.显示窗口、6.消息循环、7.回掉函数
头文件:windows.h
主函数:intWINAPIWinMain(HINSTANCEhlnstance,//句柄:一个数,窗口唯一标识
HINSTANCEhPrevlnstance,//前一个句柄
LPTSTRlpCmdLine, //传递给应用程序的命令行参数
intnCmdShow) //指定窗口的显示方式隐藏最大最小显示
返回值:int
WINAPI:调用约定,主要是参数的入栈顺序,这个栈空间的清理者,__stdcall,APIENTRY,本质都是一样的
WinMain:主函数的写法,注意不是main
*/
#includetime.h
#includestdlib.h
#includewindows.h
//定时器ID
#defineDEF_TIMER
//创建兼容性DC
voidOnPaint(HDChDc);
//显示方块
voidPaintSpare(HDChMemDC);
//随机小方块
intCreateRandmSqare();
//随机小方块贴进背景
voidCopySqareToBack();
//初始化
voidOnCreate();
//回车键函数
voidOnReturn(HWNDhWnd);
//方块下落
voidSqareDwon();
//定时器相应函数
voidOnTimer(HWNDhWnd);
//方块停在最底下0不可以下落1可以下落
intCanSgareDown();
//下落
intCanSgareDown2();
//将1变成2
voidChange1To2();
//显示2
voidShowSqare2(HDChMemDC);
//左键
voidOnLeft(HWNDhWnd);
//左移
voidSqareLeft();
//方块在最左面0不可以左移1可以左移
intCanSgareLeft();
//左移限制
intCanSgareLeft2();
//右键
voidOnRight(HWNDhWnd);
//右移
voidSqareRight();
//方块在最右面0不可以右移1可以右移
intCanSgareRight();
//右移限制
intCanSgareRight2();
//加速向下
voidOnDown(HWNDhWnd);
//变形上键
voidOnUp(HWNDhWnd);
//3*3变形
voidChangeSqare();
//3*3变形限制
intCanSqareChangeSape();
//长条变形
voidChangeLineSqare();
//长条变形限制
intCanLineSqareChange();
//消除已满的行数
voidDestroyOneLineSqare();
//显示分数
voidShowScore(HDChMemDC);
//游戏结束
intCanGomeOver();
//7.回掉函数
//回调函数一个窗口对应一个窗口句柄
//long类型调用约定函数名字(窗口句柄,无符号整形消息的ID,参数3无符号整形4long传递信息自己定可以)
LRESULTCALLBACKPELouSi(HWNDhWnd,UINTnMsg,WPARAMwParam,LPARAMlParan)
{
PAINTSTRUCTpt;
HDChDC;//可以画的范围也就是用户窗口可操作的范围(标识)
switch(nMsg)
{
caseWM_CREATE://窗口消息处理程序接收的第一个消息-也是回掉函数的第一个消息-是WM_CREATE这个消息只产生一次,一般用于初始化一些数据
OnCreate();
break;
//回掉函数的第二个消息
//当窗口显示区域的一部分显示内容或者全部变为“无效”,以至于必须“更新画面”时,将由这个消息通知程序
//窗口结构体的最后那个成员CS_HREDRAW
CS_VREDRAW,目的就是窗口大小发生变化的时候,产生WM_PAINT消息
//窗口重叠时,重叠部分渐渐出现时
caseWM_TIMER://定时器消息
OnTimer(hWnd);
break;
caseWM_PAINT:
hDC=BeginPaint(hWnd,pt);//画窗口内容开始有用getDC的
OnPaint(hDC);//画图的函数
EndPaint(hWnd,pt);//画窗口内容结束
break;
caseWM_KEYDOWN://WM_KEYDOWN键盘安下
switch(wParam)//wParam回掉函数第三个参数区分是按得那个键
{
caseVK_RETURN://回车键
OnReturn(hWnd);//开始
break;
caseVK_LEFT://左键
OnLeft(hWnd);//左移
break;
caseVK_RIGHT://右键
OnRight(hWnd);//右移
break;
caseVK_UP://上键
OnUp(hWnd);//变形
break;
caseVK_DOWN://下键
OnDown(hWnd);//加速
break;
}
break;
caseWM_DESTROY://点×三种消息依次产生:WM_CLOSE-WM_DESTROY销毁窗口-WM_QUIT退出消息W:windowsM:消息
KillTimer(hWnd,DEF_TIMER1);
PostQuitMessage(0);//传递退出消息
break;
}
returnDefWindowProc(hWnd,nMsg,wParam,lParan);//功能没有处理的消息系统自动处理保证系统的连贯性什么都不做每次在窗口有点击、输入都会有消息
}
//1.头文件与主函数
intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPTSTRlpCmdLine,intnCmdShow)//错误 C “WinMain”:无法重载函数
//intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow)
{
//2.创建窗口结构体
//初始化窗口类
WNDCLASSEXwc;
HWNDhWnd;
MSGmSg;//MSG消息的结构体
//12个成员不能多不能少要不失败
wc.cbClsExtra=0;//紧跟在窗口类尾部的一块额外的空间,不用设为0。
wc.cbSize=sizeof(WNDCLASSEX);//类的大小
wc.cbWndExtra=0;//拓展窗口对话框
wc.hbrBackground=(HBRUSH)COLOR_SCROLLBAR;//背景颜色COLOR_BACKGROUND
wc.hCursor=NULL;//光标样式LoadCursor(句柄系统定义填NULL加载自定义填hInstance,样式自定义添加资源文件)
wc.hIcon=NULL;//任务栏显示的图标LoadIcon(句柄系统定义填NULL加载自定义填hInstance,样式自定义添加资源文件)
wc.hIconSm=NULL;//窗口左上角的图标如果为空则默认为任务栏的图标
wc.hInstance=hInstance;//当前窗口的句柄//句柄又系统传递
wc.lpfnWndProc=PELouSi;//回掉函数函数地址
wc.lpszClassName="elsfk";//窗口类的名字名字不要重复给系统看的不是最上面那个名字
wc.lpszMenuName=NULL;//菜单
wc.style=CS_HREDRAW
CS_VREDRAW;///窗口显示风格垂直刷新水平刷新最大化等
//3.注册窗口对象
if(0==RegisterClassEx(wc))//如果注册失败
{
//出错不知道什么原因
inta=GetLastError();//用这个函数返回一个值
return0;
}
//4.创建窗口
hWnd=CreateWindowEx(WS_EX_TOPMOST,"elsfk","俄罗斯方块",WS_OVERLAPPEDWINDOW,,,,,NULL,NULL,hInstance,NULL);
//(附加属性(WS_EX_TOPMOST总是在最前端),
//窗口类的名字名字不要重复给系统看的不是最上面那个名字与上面的一样,
//窗口的名字左上角的人你看的...,
//指定窗口的风格,
//intx;相对于桌面坐标是像素左,
------------华丽的分割线--------------
最近两天,我没有坚持发文章,我想要不断给大家更新内容,可是我真的不知道要发什么内容。每次发源码的时候很多人都会因为编译器的原因运行不出来,这个也不排除,因为每个人使用的编译器都不一样。
我发现很多人都会问这几个问题
1、什么是编程?
答:编程=语言+平台
2、新手应该学什么语言?
答:新手建议先从C语言开始学,因为C语言是计算机入门语言,c++、Java、c#等都是借鉴了C语言的语法。
3、我到底该学什么语言?
答:----别问,学就对了;任何语言都是从基础开始学习!
经过长时间精心备课,杨老师的C语言系统已经上线,本期共包含22节课,课程为标准C语言课程,课程内容见下图,希望大家能把握好这期课,达到完美的学习效果。
课程包含内容:
数据类型、进制转换、运算符、循环语句、开关分支语句、函数、数组、字符串、指针、结构体、内存管理、文件操作函数指针、指针函数、多维数组、高级指针、
这期课程上课时间是:
每天晚上一节课
每节课是一个小时共:22节课
前20名支付是20元,优惠名额过了后面报名的学员是50元。
满30人开班,早点报名早点学习!
已付款的同学提供转账截图并北京白癜风的价格是多少白癜风患者救助计划