图形界面程序的框架

第109篇

极客时间《许式伟的架构课》课程笔记。

事件

  • 任何桌面操作系统每个进程都有一个全局的事件队列Event Queue
  • 所有输入动作都会产生一个事件Event,并且操作系统负责将它放入进程的时间队列
  • 过程如下:硬件中断-->收到对应事件-->确定事件的目标进程-->将事件放入目标进程的事件队列

窗口与事件响应

  • 窗口Window,也叫视图View,是一个独立可复用的界面元素UI Element
  • 窗口响应发送给它的事件Event,修改内部状态,然后调用GDI更新界面显示
  • 响应事件的两种常见机制:一种是事件处理类(EventHandler,在 iOS 中叫 Responder);另一种是用委托(delegate)
  • 不只是窗口可以响应事件,应用程序(Application)也可以

事件分派

  • 事件分派(Event Dispatch)通常由事件分派循环完成,实现全局的事件队列到窗口
  • 事件处理链(EventHandler Chain)负责指派响应事件的目标窗口
  • 不同事件分派过程不同,鼠标和触摸屏的事件一般是事件发生所在窗口,例外是拖放
  • 键盘事件通常是焦点窗口先响应,如果不感兴趣再逐层上升,直到顶层窗口

窗口内容绘制

  • 收到绘制消息时,需要操作系统的GDI子系统进行窗口内容绘制
  • 绘制内容分为两大类:2D和3D
  • 2D内容一般由操作系统GDI支持
  • 3D内容一般由OpenGL或Vulkan跨平台方案实现
  • GDI是操作系统性能要求最高最耗电的子系统,一般通过硬件加速完成

通用控件

  • 操作系统提供的通用界面元素,一般称为控件(Control)
  • 常见控件:静态文本 (Label)、按钮 (Button)、单选框 (RadioBox)、复选框 (CheckBox)、输入框 (Input,也叫 EditBox/EditText)、进度条 (ProgressBar)等

总结

  • 桌面应用程序通常由用户交互驱动
  • 在操作系统的所有子系统中,交互相关的子系统是毫无疑问的差异性最大的子系统
图形界面程序的框架_第1张图片
交互相关子系统差异

你可能感兴趣的:(图形界面程序的框架)