Windows系统,顾名思义,就是窗口系统,每一个程序都可以用窗口来展示,所以,为了展示窗口,需要多做一系列的工作,当然,也有纯控制台应用,就不用附带窗口了。

  首先就是窗口程序的入口地址,与传统的int main(int argc, char *argv[])类似,主函数的参数有一个对应该程序的句柄,相当于pid,一个cmd的输入内容,一个用来标识当前窗口的显示状态。

  然后是注册窗口数据,定义一个结构体,放入东西(窗口显示数据,名字、图标什么的),然后系统调用,把这段内存的地址在内核里保存一下,以便内核后续提取展示等,然后是创建窗口,和文件i/o类似,在内核里创建了一段主窗口结构的内存,返回一个对应的句柄给用户调用。

  所以每个窗口程序都有有两个句柄,一个主程序句柄,一个窗口句柄。

  然后把窗口句柄用GUI输出,开始互交。

  之后是消息处理,Windows窗口是事件驱动,不断查看消息队列、翻译命令、处理。如果关闭窗口,会先触发关闭消息,默认是关闭窗口GUI,关闭窗口后会触发关闭句柄和内核窗体结构,触发退出消息循环,然后退出,结束。

  由此可知,Windows的窗体部分可以看作一个i/o,窗体部分结构由内核控制,窗体状态的变化靠内核传递消息,主程序用系统调用来操作窗体。根据窗口的用途编可以写不同的模型,比如实时互交、控件操作、播放展示等等。

最新文章

  1. centos 安装apache 和 php5.6
  2. Altiium Designer 09 解决局域网冲突的办法(转载)
  3. UVA 11806 Cheerleaders (容斥原理)
  4. 【转】【Android】对话框 AlertDialog -- 不错不错
  5. RGB色彩模式
  6. poj1823,3667
  7. MySQL - 日志管理
  8. jQuery制作右侧边垂直二级导航菜单
  9. Linux Expect自动化交互脚本简介
  10. 虚拟机系统安装Messenger和Server
  11. 利用captcha库绘制验证码
  12. 微信小程序商业级实战
  13. HTML的head标签
  14. windows Git Bash 无法运行python解决方法
  15. html-文本属性
  16. xcode 调试器 LLDB
  17. 用sc命令查询系统状态
  18. [OpenCV][关于OpenCV3.2.0+VS2015+Win10环境搭建]
  19. lintcode39 恢复旋转排序数组
  20. 使用Entity Framework时遇到的各种问题总结

热门文章

  1. css -理解盒模型
  2. html的换行代码<br/>介绍和写法
  3. 2018-2019-2 20165312《网络攻防技术》Exp2 后门原理与实践
  4. jupyter可视化调试
  5. scala中Either的一种使用场景
  6. solidworks的工程图模板文件和图纸格式文件
  7. solr全文检索实现原理
  8. CUDA编程模型——组织并行线程2 (1D grid 1D block)
  9. C# 反射获取属性值、名称、类型以及集合的属性值、类型名称
  10. python-day18 JS正则,组件BootStrap、EasyUI、JQueryUI1,插件轮播,django