MFC: Start- und Stop Button

Dieses Problem kennt sicherlich jeder:
Es gibt zwei Buttons Start und Stop. Wenn man auf Start klickt dann soll der Computer mit irgendetwas loslegenund auch nicht damit aufhören, bis der Stop Button angeklickt wurde. Die Schleife des Stop Buttons wird - nachdem Start angeklickt wurde - nicht verlassen. Solange man die Schleife abarbeitet werden aber auch keine anderen Messages verarbeitet. Gibt es die möglichkeit, daß wenn man sich in einer Schleife befindet trotzdem andere Messages verarbeitet werden? Die Schleife darf aber nicht verlassen werden.
Die Lösung wäre ein Thread, aber vielleicht gehts ja auch einfacher.

mfg Marco

Sorry: Tippfehler: MFC: Start- und Stop Button
Dieses Problem kennt sicherlich jeder:
Es gibt zwei Buttons Start und Stop. Wenn man auf Start klickt
dann soll der Computer mit irgendetwas loslegen und auch nicht
damit aufhören, bis der Stop Button angeklickt wurde. Die
Schleife des Start(!) Buttons wird - nachdem Start angeklickt
wurde - nicht verlassen. Solange man die Schleife abarbeitet
werden aber auch keine anderen Messages verarbeitet. Gibt es
die Möglichkeit, daß wenn man sich in einer Schleife befindet
trotzdem andere Messages verarbeitet werden? Die Schleife darf
aber nicht verlassen werden.
Die Lösung wäre ein Thread, aber vielleicht gehts ja auch
einfacher.

mfg Marco

Es gibt zwei Buttons Start und Stop. Wenn man auf Start klickt
dann soll der Computer mit irgendetwas loslegenund auch nicht
damit aufhören, bis der Stop Button angeklickt wurde.

Möglicherweise ist die ontimer()-Methode das richtige für dich.
Stell dir einfach ein Timer auf 1ms. Jedesmal, wenn diese ontimer() Methode aufgerufen wird, machst du einen Schleifendurchgang.
Die Schleife darf aber nicht geschlossen sein, sondern muss nach einen Durchgang wieder verlassen.

Jetzt legst du dir nach ein Flag an:
bool laeuft;

Der Start-Button macht dann:
if (!laeuft) Timerstellen
laeuft=true;

Der Stop-Button:
laeuft=false

am Ende deines Schleifendurchgangs fragst du „laeuft“ ab, wenn true, stellst du den Timer neu.

Wenn das nich schnell genug is oder wirklich eine geschlossende Schleife sein soll, hilft bei MFC nur einen Tread anzulegen.
In der Windows-API würde ein regelmässiges Aufrufen von PeekMessage() ausreichen, aber das is nicht so ganz im Sinne von MFC und funktioniert auch höchstwahrscheinlich nicht so ganz.

MSG msg;
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) //Sind die Parameter richtig so?
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}