3.1自己的窗口
建立窗口很需呼叫CreateWindow函数.窗口以「消息」的形式接收窗口的输入,窗口也用消息与其它窗口通讯。
程序建立的每一个窗口都有相关的窗口消息处理程序。「Windows给程序发送消息。是指Windows呼叫程序中的一个函数,该函数的参数描述了这个特定消息。这种位于Windows程序中的函数称为「窗口消息处理程序」。Windows通过呼叫窗口消息处理程序来给窗口发送消息。
Windows程序开始执行后,Windows为该程序建立一个「消息队列」。这个消息队列用来存放该程序可能建立的各种不同窗口的消息。程序中有一小段程序代码,叫做「消息循环」,用来从队列中取出消息,并且将它们发送给相应的窗口消息处理程序。
3.2Windows 程序设计的难点
程序的所有实际动作均在窗口消息处理程序中发生。Windows程序所作的一切,都是响应发送给窗口消息处理程序的消息。
窗口中发生的一切都以消息的形式传给窗口消息处理程序。DefWindowProc处理完消息后会产生其它的消息。
队列化消息与非队列化消息:
队列化的消息被「发送」给消息队列,而非队列化的消息则「发送」给窗口消息处理程序。
windows应用程序和windows系统都有自己的消息队列,所有针对特定应用程序的消息其中既有被系统处理过的(队列化消息),
也有未经过系统消息队列的(非队列化消息)。
队列化消息一般都会经过系统的包装处理,非队列化消息没有这样的经历。
消息与硬件的中断不同。在一个窗口消息处理程序中处理消息时,程序不会被其它消息突然中断。消息循环和窗口消息处理程序不是并发执行的。当一个消息循环从其消息队列中接收一个消息,
然后呼叫DispatchMessage将消息发送给窗口消息处理程序时,直到窗口消息处理程序将控制传回给Windows,
DispatchMessage才能结束执行。