Windows应用程序的运行以消息为核心,Windows将产生的消息放入应用程序的消息队列中,而应用程序WinMain函数的消息循环提取队列中的消息,并将信息传给窗口函数的相应过程。
消息循环的常见格式如下:
MSG Msg;
...
while ( GetMessage( &Msg, NULL, 0, 0 ) )
{
TranslateMessage( &Msg );
DispatchMessage( &Msg );
}
其中函数GetMessage的作用是从消息队列中读取一条信息,并将信息放在一个MSG结构中,其形式为:
GetMassage
( lpMSG,
hwnd,
nMsgFilterMin,
nMsgFilterMax
)
值得注意的是,GetMessage函数中的参数nMsgFilterMin和nMsgFilterMax可实现对消息的过滤,即程序仅处理所确定的消息号范围内的消息,如果两个参数都为0,则不过滤消息。
TranslateMessag函数负责将消息的虚拟间转换为字符信息,其形式为:
TranslateMessage( lpMSG )
DispatchMessage函数将参数lpMSG指向的消息传送到指定窗口函数,其形式为:
DispatchMessage( lpMSG )
当GetMessage函数返回零值,检索到WM_QUIT时,程序将结束循环并退出。