Die Syntax
lautet:
while(
expression )
statement
Die Anweisungen
in statement werden solange ausgeführt,
bis expression den Wert 0 annimmt.
Eine "berühmte" while-Kontrollstruktur ist die
Nachrichtenschleife aus C/WinAPI-Programmen:
while(
GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg );
DispatchMessage ( &msg );
}
return
msg.wParam;
Solange der
Ausdruck GetMessage( &msg,
NULL, 0, 0 ) einem Wert ungleich 0 entspricht, wird die while-Schleife nicht verlassen und die drei
Funktionen GetMessage(...),
TranslateMessage(...)
und DispatchMessage(...)
werden
ständig ausgeführt.
Die Syntax ist
in diesem
Fall:
do statement while( expression );
Zunächst
wird statement ausgeführt.
Anschließend
wird expression ausgewertet. Ist
es ungleich
0, wird die Schleife fortgeführt, ansonsten beendet.
do-while-Kontrollstrukturen treten in der Windows-Programmierung nur
sporadisch auf.
Hier folgt einBeispiel aus der datei
winfrm.cpp des MFC-Sourcecodes:
do
{
lResult = ::SendMessage( hwFocus,
WM_MOUSEWHEEL, ( wParam << 16 ) |
keyState,
lParam);
hwFocus = ::GetParent( hwFocus );
}
while(
lResult == 0 && hwFocus != NULL && hwFocus != hwDesktop
);