第四章 GDI、控件------结束语
前情回顾:
在讲述了WINDOWS编程的梗概后,作者讲解WINDOWS的匈牙利命名法体系,WINDOWS结构和窗口建立,接着进一步讲解了WINDOW的深入点的用法,WINDOWS的消息机制及应用,GDI介绍和资源(.RC)使用。
第四章要点:
1.GDI进阶。
如何用GDI画点,线,面。 GDI的概念是,模拟真实的画画,先创建笔和刷子,笔用来勾勒,刷子用来上色,再想画什么,然后勾出来上色。
例:
hdc = GetDC(hwnd);color = RGB(rand()%256,rand()%256,rand()%256);color_pen = CreatePen(PS_SOLID,10,color);color_brush = CreateSolidBrush(color);//eraseSelectObject(hdc,bg_brush);SelectObject(hdc,bg_pen);Ellipse(hdc,rect_ellipse.left,rect_ellipse.top,rect_ellipse.right,rect_ellipse.bottom);MoveToEx(hdc,0,0,NULL);LineTo(hdc,point.x,point.y);Rectangle(hdc,rect.left,rect.top,rect.right,rect.bottom); //drawSelectObject(hdc,color_brush); //initSelectObject(hdc,color_pen); SetRect(&rect,400,0,400+rand()%401,rand()%401); SetRect(&rect_ellipse,0,400,rand()%401,400+rand()%401);point.x = rand()%401; point.y = rand()%401;MoveToEx(hdc,0,0,NULL); //lineLineTo(hdc,point.x,point.y);Rectangle(hdc,rect.left,rect.top,rect.right,rect.bottom); //FillRect(hdc,&rect,color_brush);Ellipse(hdc,rect_ellipse.left,rect_ellipse.top,rect_ellipse.right,rect_ellipse.bottom); //ellipsefor(int i=0;i<5;++i){poly[i].x = 400+rand()%401;poly[i].y = 400+rand()%401;}Polygon(hdc,poly,5);Sleep(400);DeleteObject(color_brush);DeleteObject(color_pen);ReleaseDC(hwnd,hdc);
2.文本函数
SelectObject(hdc,FONT); 函数为文本设置样式 ,FONT表示什么样式,可以用FONT=GetStockObject来或者自带FONT,也可以用FONT=CreatFont来自定义。
3.定时
介绍了两种定时方法
1).WM_TIMER消息
设置一个timer,SetTimer(hwnd,id,delay,fn);
timer会每隔delay的时间发送一个WM_TIMER的消息,并自动执行回调函数fn。可以将自己想执行的任务房子WM_TIMER后,也可以放在fn中。
2).GetTickCount()
返回当然计时。
例:
start_time = GetTickCount();while(true){if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)){if(msg.message == WM_QUIT) break;TranslateMessage(&msg);DispatchMessage(&msg);}//gamehdc = GetDC(hwnd);if(GetTickCount()-start_time>33){Colorful(hdc,hwnd);start_time = GetTickCount();}}
4 .控件
控件也就是窗口,只不过是输入父窗口的子窗口。它有自己的窗口属性,句柄函数,会发送WM_COMMAND消息。
通过SendMessage(hwnd,message,wparam,lparam)向控件发送消息,以操控控件。
5.获取消息
我们想知道自己的程序在怎么样一个电脑上跑,是在一个老爷机上跑,还是在Alient上跑,是在大屏幕液晶上跑,还是在学校机房上跑。
那么就需要获取信息。
有大量的函数来告诉你相关信息,如
int width = GetSystemMetrics(SM_CXSCREEN);//返回屏幕宽度
GetTextMetrics(hdc,lptextmetris);//获取字体信息
6.T3D游戏控制台程序
讲解了一个游戏框架:
WinMain{
CreateWindow()
Init()
----------loop
game()
----------------
gameover()
}
第四章 GDI、控件------结束语相关推荐
- ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl
第四章 组合控件开发CompositeControl 大家好,今天我们来实现一个自定义的控件,之前我们已经知道了,要开发自定义的控件一般继承三个基 类:Control,WebControl,还有一个就 ...
- ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇
第三章 为控件添加事件 后篇 前一篇文章只是简单的说了下事件,但是大家应该方法,在ASP.NET自定义控件中只是简单那么定义事件是行不 通.如果大家开发的是WinForm中的事件,之前的定义可能没有什 ...
- ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇
第三章 为控件添加事件 好了,我们之前以前开发一个控件.而且也添加了属性,开发也很规范,但是那个控件还差最后一点:添加事件. 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.N ...
- Python tkinter - 第五章 按钮控件(Button)属性
第5章 按钮控件(Button) 5.1 按钮控件介绍 按钮是一个标准的tkinter控件.按钮上可以显示文字或者图片作为提示信息.文字只能使用一种字体以及颜色.按钮的最主要作用是被点击后,可以调用指 ...
- WP8.1学习系列(第二十三章)——到控件的数据绑定
在本文中 先决条件 将控件绑定到单个项目 将控件绑定到对象的集合 通过使用数据模板显示控件中的项目 添加详细信息视图 转换数据以在控件中显示 相关主题 本主题介绍了如何在使用 C++.C# 或 Vis ...
- ESP32 开发笔记(四)LVGL控件学习 ColorPicker 颜色选择器控件
先看效果,创建一个颜色选择器控件,设置事件回调动态显示当前选择的颜色值 开发板购买链接https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.5 ...
- ESP32 开发笔记(四)LVGL控件学习 Canvas 画布控件
先看效果,创建了两个画布,一个按钮,按钮是为了演示透明画布效果, 第一个画布先画一个不透明蓝色矩形再画透明矩形,透过画布可以看到下面的按钮 第二个面布画了一个圆角矩形中间填充过渡色,再画一个字符串,然 ...
- 鸡啄米之VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox)
目录 一.目的: 1.点击列表框某个变量后,编辑框就显示出来这个变量名字 一.参考: 1.VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox) ①总结:good:亲测有效,适合多 ...
- JAVA知识点梳理第四部分——Swing控件
JAVA整理知识点传送门: JAVA知识点拉理第一部分--常规知识 JAVA知识点梳理第二部分--接口.内部类.异常等等 JAVA知识点梳理第三部分--图形用户界面GUI部分 JAVA知识点梳理第四部 ...
- 【QT开发笔记-基础篇】| 第二章 常用控件 | 2.12 表格控件 QTableWidget
本节对应的视频讲解:B_站_链_接 QTableWidget 是 Qt 中的表格控件,可以行列的形式来展示数据 1. 属性和方法 QTableWidget 有很多属性和方法,完整的可查看帮助文档. 在 ...
最新文章
- 计算机视觉训练模型效果不佳怎么破?
- 个人支付宝账号也可以做付款后自动发货发卡系统,附:源码+demo
- 功能GUI编程是否可行? [关闭]
- 中国半挂车行业投资前景预测与十四五投资战略规划分析报告2021年版
- C++与C#类型对应关系
- if js 判断成绩等级_javascript://8种方法根据分数判断等级
- 263. 丑数---LeetCode---JAVA
- matlab集群搭建问题
- comps电磁场模拟软件_什么样配置的电脑可以适合用于电磁仿真?
- C/C++语言函数参数里的“...”作用,va_list的使用(stdarg.h)
- hadoop集群_使用docker部署hadoop集群
- php自动加载类与路由,PHP实现路由和类自动加载
- 计算机算法设计与分析 递归实现归并排序和非递归实现归并排序
- C3P0连接池配置文档
- 9年测试老鸟:Glenford J编写《软件测试的艺术》PDF,高清中文版
- Python 最好用的8个VS Code扩展
- 【win11】你不能不会的技巧(持续更新)
- java开发基础(面试必备)
- STM32跑马灯实验的基本步骤(库函数)
- 2021-09-22 WPF上位机 23-动态图形
热门文章
- JS字符串替换、字符串转数组、数组过滤
- Python之几何集合操作模块Shapely的简介
- Nvidia Jetson TX2 使用手机热点刷机教程
- 2021圣诞送送送 | 这份礼,肯定有你需要的
- 学生档案c语言编程,学生档案管理完整(C语言).doc
- 二维码的基础使用一(扫码)
- SecureCRT 下的串口不能输入指令。
- 服务器如何挂网页游戏,在云服务器上挂网页游戏
- 机器人布里茨说什么_蒸汽机器人布里茨攻略是什么(机器人重做)
- .NET 换肤软件 IrisSkin 2.0 破解版下载及多款皮肤下载