Index   Commented   Search   About

Waiting in a Message Loop

The following code fragment illustrates the use of the MsgWaitForMultipleObjects function in a message loop.

int MessageLoop (

HANDLE* lphObjects, // handles that need to be waited on

int cObjects // number of handles to wait on

)

{

// The message loop lasts until we get a WM_QUIT message,

// upon which we shall return from the function.

while (TRUE)

{

// block-local variable

DWORD result ;

// Wait for any message sent or posted to this queue

// or for one of the passed handles be set to signaled.

result = MsgWaitForMultipleObjects(cObjects, lphObjects,

FALSE, INFINITE, QS_ALLINPUT);

// The result tells us the type of event we have.

if (result == (WAIT_OBJECT_0 + cObjects))

{

// block-local variable

MSG msg ;

// Read all of the messages in this next loop,

// removing each message as we read it.

while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {

// If it's a quit message, we're out of here.

if (msg.message == WM_QUIT)

return 1;

// Otherwise, dispatch the message.

DispatchMessage(&msg);

} // End of PeekMessage while loop.

}

else {

// One of the handles became signaled.

DoStuff (result - WAIT_OBJECT_0) ;

} // End of else clause.

} // End of the always while loop.

} // End of function.

Related Links

Software for Delphi and C++ Builder developers
Software for Visual Studio .NET developers
Software for Visual Basic 6 developers
Delphi Tips&Tricks
MegaDetailed.NET

More Online Helps

Win32 Multimedia Programmer's Reference (mmedia.hlp)
OLE Programmer's Reference (ole.hlp)
Microsoft Windows Pen API Programmer's Reference (penapi.hlp)
Microsoft Windows Sockets 2 Reference (sock2.hlp)
Microsoft Windows Telephony API (TAPI) Programmer's Reference (tapi.hlp)
Unix Manual Pages

Free Tech Secrets ;) Copyright © 2008 Free Tect Secrets ;) greatis just4fun network just4fun