什么是事件驱动?
程序不断等待(利用一个while循环),等待任何可能的输入,然后做判断,然后再做适当的处理,上述的“输入”是由操作系统捕捉到之后,以消息形式进入程序之中。如下:
MSG msg;
While(GetMessage(&msg, NULL, NULL,NULL))
{
}
什么是消息?
消息,就是上面的MSG结构,是Windows内设的一种数据格式。接受并处理消息的主角就是窗口。每个窗口都应该有一个函数负责处理消息,程序员必须负责设计这个所谓的“窗口函数”。
消息的取得、分派、处理?
WinMain(hInst, hPrev,…)
{
MSGmsg;
RegisterClass(…);
CreateWinow(…);
ShowWindow(…);
UpdateWindow(…);
While(GetMessage(&msg…))
{
TranslateMessage(…);
DispatchMessage(…);
}
}
Return msg.wParam;
WndProc(hwnd, msg, wParam, lParam)
{
Switch(msg)
{
case:…;
case:…;
}
}
在程序执行过程中,不断以GetMessage从消息队列中抓取消息。DispatchMessage通过Windows USER模块的协助与监督,把消息分派至窗口函数,消息将在该处被判别并处理。