消息机制,GDI,定时器,回调(CALLBACK)机制,多线程,动态链接库,COM,声音和MFC等知识。其实这些东西之前都懂一点点,但是不能说精
通,因为看了V书后,对这些东西的认识又更进一步。先说说消息机制吧,16位的机子只有一个消息队列,所以整个系统的每一个消息都必须等待排在它之前的消
息处理完后才能得到控制权,嗯,书上说这种操作系统叫协同式的多任务系统。进入32位后,即Windows98系统之后,每个程序有属于自己的一个消息队
列,这样对应于每个进程,可以定制自己的消息处理函数,所以在Windows98和之后的操作系统上,我们可以同时运行多个程序。嗯,书上说这种操作系统
叫抢占式的多任务系统。
还大概知道了GetMessage和PeekMessage的区别。除非在队列中有消息,否则GetMessage不会把控制权交回给程序。
PeekMessage不同,它每隔一段时间就往消息队列中Peek一下,如果有消息则返回TRUE,没有则返回FALSE。在这里要说一下游戏的两个渲
染时机,有些游戏是在接收到WM_PAINT消息后渲染的,而有一些则是在队列空闲的时候(即PeekMessage返回FALSE时)渲染的,不过我还
不太清楚这两种渲染时机的区别是什么。
GDI就不想多说了,好像也只是一些函数,知道如何创建和如何使用就行了。嗯,HDC似乎贯穿GDI的所有操作。
最主要的收获还是明白了定时器的作用。原来定时器的主要作用是发送WM_TIMER消息的。设置定时器的函数是SetTimer,停止它的函数是KillTimer。也可以将WM_TIMER消息发送给自己定义的消息处理函数。
回调机制不说了。多线程也不多说了,主要是如何实现同步与互斥的问题。DLL也不说了。COM太复杂,也不说了。
Windows中和声音相关的API主要分两类,一种是高层的,以waveIn和waveOut作前缀,一种是低屋的,以midiIn和midiOut做前缀。还有一些以mci做前缀的接口(MCI,Media Control Interface)。
书上说MFC也可以开发游戏,不过是面向小型游戏的,开发大型游戏是需要很多Windows API的,MFC对API的封装使得它并不适合编写一些底层的软件。写游戏,还是从WinMain开始吧。