前情回顾:

在讲述了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、控件------结束语相关推荐

  1. ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl

    第四章 组合控件开发CompositeControl 大家好,今天我们来实现一个自定义的控件,之前我们已经知道了,要开发自定义的控件一般继承三个基 类:Control,WebControl,还有一个就 ...

  2. ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇

    第三章 为控件添加事件 后篇 前一篇文章只是简单的说了下事件,但是大家应该方法,在ASP.NET自定义控件中只是简单那么定义事件是行不 通.如果大家开发的是WinForm中的事件,之前的定义可能没有什 ...

  3. ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇

    第三章 为控件添加事件 好了,我们之前以前开发一个控件.而且也添加了属性,开发也很规范,但是那个控件还差最后一点:添加事件. 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.N ...

  4. Python tkinter - 第五章 按钮控件(Button)属性

    第5章 按钮控件(Button) 5.1 按钮控件介绍 按钮是一个标准的tkinter控件.按钮上可以显示文字或者图片作为提示信息.文字只能使用一种字体以及颜色.按钮的最主要作用是被点击后,可以调用指 ...

  5. WP8.1学习系列(第二十三章)——到控件的数据绑定

    在本文中 先决条件 将控件绑定到单个项目 将控件绑定到对象的集合 通过使用数据模板显示控件中的项目 添加详细信息视图 转换数据以在控件中显示 相关主题 本主题介绍了如何在使用 C++.C# 或 Vis ...

  6. ESP32 开发笔记(四)LVGL控件学习 ColorPicker 颜色选择器控件

    先看效果,创建一个颜色选择器控件,设置事件回调动态显示当前选择的颜色值 开发板购买链接https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.5 ...

  7. ESP32 开发笔记(四)LVGL控件学习 Canvas 画布控件

    先看效果,创建了两个画布,一个按钮,按钮是为了演示透明画布效果, 第一个画布先画一个不透明蓝色矩形再画透明矩形,透过画布可以看到下面的按钮 第二个面布画了一个圆角矩形中间填充过渡色,再画一个字符串,然 ...

  8. 鸡啄米之VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox)

    目录 一.目的: 1.点击列表框某个变量后,编辑框就显示出来这个变量名字 一.参考: 1.VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox) ①总结:good:亲测有效,适合多 ...

  9. JAVA知识点梳理第四部分——Swing控件

    JAVA整理知识点传送门: JAVA知识点拉理第一部分--常规知识 JAVA知识点梳理第二部分--接口.内部类.异常等等 JAVA知识点梳理第三部分--图形用户界面GUI部分 JAVA知识点梳理第四部 ...

  10. 【QT开发笔记-基础篇】| 第二章 常用控件 | 2.12 表格控件 QTableWidget

    本节对应的视频讲解:B_站_链_接 QTableWidget 是 Qt 中的表格控件,可以行列的形式来展示数据 1. 属性和方法 QTableWidget 有很多属性和方法,完整的可查看帮助文档. 在 ...

最新文章

  1. 计算机视觉训练模型效果不佳怎么破?
  2. 个人支付宝账号也可以做付款后自动发货发卡系统,附:源码+demo
  3. 功能GUI编程是否可行? [关闭]
  4. 中国半挂车行业投资前景预测与十四五投资战略规划分析报告2021年版
  5. C++与C#类型对应关系
  6. if js 判断成绩等级_javascript://8种方法根据分数判断等级
  7. 263. 丑数---LeetCode---JAVA
  8. matlab集群搭建问题
  9. comps电磁场模拟软件_什么样配置的电脑可以适合用于电磁仿真?
  10. C/C++语言函数参数里的“...”作用,va_list的使用(stdarg.h)
  11. hadoop集群_使用docker部署hadoop集群
  12. php自动加载类与路由,PHP实现路由和类自动加载
  13. 计算机算法设计与分析 递归实现归并排序和非递归实现归并排序
  14. C3P0连接池配置文档
  15. 9年测试老鸟:Glenford J编写《软件测试的艺术》PDF,高清中文版
  16. Python 最好用的8个VS Code扩展
  17. 【win11】你不能不会的技巧(持续更新)
  18. java开发基础(面试必备)
  19. STM32跑马灯实验的基本步骤(库函数)
  20. 2021-09-22 WPF上位机 23-动态图形

热门文章

  1. JS字符串替换、字符串转数组、数组过滤
  2. Python之几何集合操作模块Shapely的简介
  3. Nvidia Jetson TX2 使用手机热点刷机教程
  4. 2021圣诞送送送 | 这份礼,肯定有你需要的
  5. 学生档案c语言编程,学生档案管理完整(C语言).doc
  6. 二维码的基础使用一(扫码)
  7. SecureCRT 下的串口不能输入指令。
  8. 服务器如何挂网页游戏,在云服务器上挂网页游戏
  9. 机器人布里茨说什么_蒸汽机器人布里茨攻略是什么(机器人重做)
  10. .NET 换肤软件 IrisSkin 2.0 破解版下载及多款皮肤下载