☺创建属于自己的窗口

==================

۞创建窗口前的准备

在创建窗口前我们先来熟悉几个名词, 这些名词现在可以暂时不去透彻的进行理解, 只需要印象中知道有这么回事就行。

1>. 窗口

  "窗口"这个我们都已经十分熟悉了, 在Windows中, 一个应用程序窗口上一般会在标题栏上显示程序的名称, 紧挨着标题栏的菜单栏, 或许还会有状态栏、滚动条等其他"装饰品"。

2>. 控件 

  在一些应用程序中, 我们经常可以在程序的界面上(窗口)看到一些按钮(Push Button)、文本框(Text Box)、列表框(List Box)、滚动条(Scroll Bar)等, 这些对象通常被称为控件, 在 Windows程序设计 中, 还被称为"子窗口"、"控件窗口"或"子窗口控件"。

3>. 窗口类

  在建立一个窗口前, 我们必须先注册一个"窗口类"(Windows Class), 接触过面向对象的朋友应该会首先想到面向对象当中的"类", 但是, 这里"窗口类"中的"类"并不是指面向对象当中的那个"类"。

  在这里我们可以把"窗口类"理解为一个结构体, 结构体的成员就是窗口的一些属性, 例如窗口的标题是什么、窗口使用什么样的小图标以及窗口的风格之类的属性, 一个窗口就是一个结构体的对象, 结构体成员的属性决定着窗口的属性。

4>. 消息循环

  在Windows程序设计中, 消息循环是个不得不提的概念, Windows操作系统是以消息驱动的, 消息队列是指在一个应用程序运行时, Windows操作系统会为该应用程序建立一个"消息队列", 这个消息队列用来存放该程序可能创建的各种窗口的消息, 当用户对应用程序进行操作时, 例如点击一个按钮、调整下窗口的大小等, 此时Windows会立即把这一消息告诉应用程序, 使应用程序能作出相应的动作。

5>. 窗口的过程函数

  当一个窗口建立之后, 就可以从Windows那里不断的接收到Windows发来的消息, 接收到消息后我们就需要一个函数来处理这些消息, 可以简单的理解为, 这个用来处理接收到的消息的函数就称为窗口过程函数或者回调函数。

下面我们来尝试着看一个创建一个基本窗口的代码。

۞尝试创建自己的窗口

代码如下:

--------------------

--------------------

  先简单介绍这段代码, 在主函数WinMain中的窗口类对象wndclass我们定义了窗口的相关属性, 尝试注册窗口类并调用CreateWindow创建窗口, 创建完成后用ShowWindow让窗口显示出来, 我们还使用了个while用来从消息队列里获取并分发消息给程序, 我们还定义了一个过程函数WndProc用来处理系统发来的消息。

  编译运行后, 如果没有错误将首先看到一个窗口建立成功与否的对话框, 当创建窗口失败时弹出一个错误对话框并关闭程序。

  当窗口被创建时首先Windows会发给我们一条创建完成的消息"WM_CREATE", 在我们的消息处理函数WinProc中有switch-case语句对该消息进行了处理, 就是弹出一个窗口创建完成的对话框。

  同样, 我们还处理了当窗口的客户区(内容部分)被改变时发来的的"WM_PAINT"消息进行了处理, 让"Hello, 这是我创建的窗口!"始终显示在窗口中心。

"WM_LBUTTONDOWN"消息是当用户在客户区按下鼠标左键时发来的消息, 我们作出相应的动作为弹出一个鼠标左键被按下的对话框。

  当用户点击窗口的关闭按钮时, "WM_DESTROY"消息就会发来, 我们作出的动作是弹出"关闭程序!"的对话框并且退出程序。

今天的学习先到这里, 明天我们详细学习下整个创建窗口的代码。

--------------------

我是一名从事了10年开发在退休边缘垂死挣扎的高龄程序员,最近我花了一些时间整理了一个完整的学习C语言、C++的路线,项目源码和工具。对于想学习C/C++的小伙伴而言,学习的氛围和志同道合的伙伴很重要,笔者推荐一个C语言/C++编程爱好者的聚集地 >!!

欢迎初学和进阶中的小伙伴。希望你也能凭自己的努力,成为下一个优秀的程序员。工作需要、感兴趣、为了入行、转行需要学习C/C++的伙伴可以一起学习!”

关注我,带你遨游代码世界!

下面这些是C/C++能做的 :

服务器开发工程师、人工智能、云计算工程师、信息安全(白客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等!

C语言Windows程序设计 - 【第一个属于自己的窗口】!相关推荐

  1. 中年人学C语言Windows程序设计,20子窗口的创建

    今天, 我们要学习的就是 子窗口控件 的使用. 在其他一些 Windows应用软件上我们经常能够看到一些大致相同的按钮.复选框.组合框.列表框等控件, 这些控件很有可能就是使用 标准子窗口控件 来实现 ...

  2. 中年人学C语言Windows程序设计,3 窗口中文本的输出TextOut

    中年人学C语言Windows程序设计,3 文本的输出TextOut 函数功能 TextOut 函数使用当前选择的字体.背景颜色和文本颜色,将一个字符串绘制于窗口的指定位置. API 函数原型: 注释: ...

  3. c#程序设计语言杜松江版_清华大学出版社-图书详情-《C#语言Windows程序设计(第2版)》...

    再 版 序 <C#语言Windows程序设计>(ISBN:978-7-302-23375-6)自2010年9月出版以来,受到了广大读者和众多高校的欢迎和好评,近年来已经重印了4次.尽管如此 ...

  4. 中年人学C语言Windows程序设计,9 窗口绘图:直线的画法

    标题中年人学C语言Windows程序设计,9 窗口绘画:直线 MoveToEx函数 函数功能: MoveToEx 函数将当前绘图位置移动到某个具体的点,同时也可获得之前位置的坐标. API 函数原型: ...

  5. 中年人学C语言Windows程序设计,28 EDIT文本编辑框控件

    创建编辑框控件 编辑框控件的窗口类名是edit.除了子窗口常用的风格 WS_CHILD. WS_VISIBLE.WS_BORDER 外,edit 控件也有自己的风格,都是以ES开头. 风格 说明 ES ...

  6. c sharp 语言,C Sharp 语言Windows程序设计.ppt

    C Sharp 语言Windows程序设计 2010.07 第5章 Windows窗体与控件程序设计 学习要点 1.理解并掌握解决方案的创建及其项目管理 2.熟练掌握窗体的创建方法及其程序设计 3.理 ...

  7. windows 程序设计 第一章

    MD,在公司实在蛋疼,每天捣鼓那些废码子,看到哥们有本windows程序设计,闲来没事总结总结,提高提高,也免得回家闲着蛋都碎了. 第一章简单一些,多是概念,也不用太深入看,当然要是全记住,跟同行吹牛 ...

  8. python程序设计第一章答案_Python语言程序程序设计-第一章习题解答

    作为一名非计算机专业毕业的学生,一直想学Python用来解决工作中遇到的问题,但是对计算机一直摸不到好的门路,于是买到了Python语言程序程序设计这本书,用做习题的形式,积累自己的学习成果,相信不怕 ...

  9. 《Windows程序设计》读书笔九 子窗口控件

    第九章 子窗口控件 子窗口可以作为控制屏幕图形显示,响应用户输入,以及在有重要输入事件的时候通知另一窗口. 标准子窗口控件,按钮,复选框,编辑框,列表框,组合框,文本字符串和滚动条. 可以使用Crea ...

最新文章

  1. katalon进行app测试_使用Katalon Studio创建你的第一个API测试
  2. MPO文件类型解码(二)了解JPEG文件格式
  3. Leetcode 22.括号生成 (每日一题 20210623)
  4. Tensorflow:TF模型文件(checkpoint文件夹下ckpt文件之data、index、meta)保存、模型导入、恢复并fine-tuning之详细攻略
  5. MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)的真正原因...
  6. 从代码里提取的测试需求
  7. 再砸67亿!本硕博都给钱!该市带头抢人!
  8. mysql not in 性能_SQL中Execpt和not in 性能区别
  9. 华为云linux用户名,玩转华为云服务器ECS:001 如何登录并创建新用户
  10. centos7.0KVM虚拟化
  11. LeetCode12 整数转罗马数字
  12. 【中文说唱巅峰】幼稚园杀手(aka小号王)的炸弹 “异界来客“ 无损flac试
  13. layui上传多张图片
  14. of介词短语作定语_在英语句子中,介词短语都能做什么用?作定语?作表语?作状语?...
  15. xp系统怎么看计算机内存条,XP环境下怎么查看虚拟内存?XP系统虚拟内存过低怎么设置?...
  16. Echarts世界国家中英文对照
  17. 大一python选择题及答案-一部英语电影手抄报内容
  18. python炒股难度_诺贝尔奖得主教你如何分配炒股仓位 | python量化系列
  19. 三步使用Docker容器创建RoboCup仿真2D环境
  20. 只要8元,就能体验美国第一夫人的乐趣

热门文章

  1. matlab算术运算
  2. 堆叠式自动编码器(SAE)--学习笔记
  3. taro多端开发框架
  4. n个重复数字求和问题 python
  5. DynamicFusion解析
  6. 微信小程序线上预约管理系统
  7. 【转载】SAP各模块字段与表的对应关系
  8. hbase java api 查询_hbase查询api的基本使用
  9. GPS数据格式的分析
  10. json文件两种读取方式