1、队列消息与非队列消息
Windows为当前运行的每个Windows程序维护一个“队列消息”。在消息循环过程中,队列消息被“发送”给消息队列,而非队列消息则“发送”给窗口过程。在消息循环中,队列消息被重新传回并分配给窗口过程, 非队列消息在Windows调用窗口时直接传送给窗口过程。有些消息既可以是作为队列消息也可以作为非队列消息,看发给谁了。
2、消息寄送和消息发送
(1)消息寄送
寄送一个消息时,把消息发送到拥有那个窗口的应用程序的消息队列中。当应用发现自己有空闲时,就搜索消息队列,并在消息队列中处理消息,即从消息队列中删除它们,并将它们发送到指定的窗口。寄送消息用PostMessage()。
(2)发送消息
发送一个消息时,消息不进入目标窗口的消息队列,本质上与直接调用窗口处理过程一样,通信时即时的。发送消息使用SendMessage()
3、GetTextMetrics()和GetTextExtent()
GetTextMetrics()获得