Jak przerwac petle?

0

Witam,

zalozmy ze mam petle np taka:

[code]
for(i=1;i<=100;i++)
{
JakasFunkcja();
Sleep(1000);
}
[/code]

I teraz chcialbym przerwac ta petle np poprzez wcisniecie przycisku na formie. Czy w C++ jest cos takiego jak w DELPHI czyli Application.ProcessMesagess?

Z gory dzieki za odpowiedz:)

Pzodrawiam,

Wodzu

0

Wprowadz sobie jakas zmienna globalna

[code]bool koniec;[/code]

do funkcji dodaj warunek:

[code]for(i=1;i<=100;i++)
{
if (koniec) break;
JakasFunkcja();
Sleep(1000);
}
[/code]

A pod jakims przyciskiem po prosu zmieniaj wartos 'koniec' na true :-P

0

albo skok poza

for(i=1;i<=100;i++){
  if (koniec)goto poza_petle;
  JakasFunkcja();
  Sleep(1000);
}
poza_petle:
//...
0

Bez obrazy ale prosilem o sensowne odpowiedzi :p

Takie cos nie zadziala, bo niby skad wewnatrz petli program ma wiedziec o wystapieniu zdarzenia? Wlasnie po to stosuje sie Application.ProcessMessages z tym ze ja nie wiem jak to sie nazywa w C++.

Pozdrawiam,

Wodzu

0

Porównując C++ z Delphi rozumiem, ze chodzi Ci o C++Builder. To masz tam przecież Application->ProcessMessages(); więc w czym problem?

0

Niestety chodzi mi o Visual C++ a tam czegos takiego nie ma....:(

0

Tu masz źródło - przepisz je na VC++ i już masz rozwiązanie.

function TApplication.ProcessMessage(var Msg: TMsg): Boolean;
var
  Handled: Boolean;
begin
  Result := False;
  if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
  begin
    Result := True;
    if Msg.Message <> WM_QUIT then
    begin
      Handled := False;
      if Assigned(FOnMessage) then FOnMessage(Msg, Handled);
      if not IsHintMsg(Msg) and not Handled and not IsMDIMsg(Msg) and
        not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then
      begin
        TranslateMessage(Msg);
        DispatchMessage(Msg);
      end;
    end
    else
      FTerminate := True;
  end;
end;

procedure TApplication.ProcessMessages;
var
  Msg: TMsg;
begin
  while ProcessMessage(Msg) do {loop};
end;
0

Zdajesz sobie chyba sprawe, ze przetworzenie tego kodu na Visualowy zajelo by mi z tydzien. Przeciez 50% kodu to sa zmienne i typy nie zdefiniowane w WinApi...

//dopisane

No moze nie tydzien, troszke przesadzilem ale przynajmniej pare godzin...Musze sie jednak za to zabrac bo jak widze nie mam wyboru. Dzieki za zrodlo:)

//dopisane

Sam w to nie wierze ale udalo mi sie ową funkcje przepisac i o dziwo dziala;) Dzieki Marooned za pomoc [browar]

Pozdrawiam,

Wodzu

1 użytkowników online, w tym zalogowanych: 0, gości: 1