przerwanie gdy pojawi sie jakaś funkcja

0

Mam funkcję:

BOOL ff(char *napis)
{
SendMessage(Pole,EM_SETSEL,-1,-1);
SendMessage(Pole,EM_REPLACESEL,0,(LPARAM)napis);
return FALSE;   
}

która na końcu tekstu w Edit dodaje mi ciąg znaków określony w zmiennej napis bez kasowania tego co jest już w Edicie. Mam np. taki kod:

for(i=0;i<10;i++)
ff("costam\n");

Jak zrobić, aby gdy w programie zostaje wywołana funkcja ff to występowało przerwanie czekające na reakcję użytkownika, tzn. chciałbym po prostu mieć przycisk i naciskać na nim, jak nacisnę raz to pojawi się raz napis, jak drugi raz to drugi napis się pojawi i tak aż do 10 raza aż zostanie wykonany cały program.
Moja idea jest taka:
Gdy pojawi się komunikat SendMessage(Pole,EM_SETSEL,-1,-1); to aby został wywoływany podprogram w którym sobie już zdefiniuję, że jak przycisk zostanie naciśnięty to aby dalsza część funkcji została wykonana SendMessage(Pole,EM_REPLACESEL,0,(LPARAM)napis); Coś jak UNDO tylko odwrotnie. I właśnie jak to zrobić bo idea wydaje mi się dobra, ale jak się do tego zabrać, brakuje mi wiedzy...

0

Zadeklaruj licznik globalnie/statycznie/wewnątrz jakiejś klasy, na starcie wyzeruj. W reakcji na przycisk sprawdź licznik, wykonaj ff, zwiększ licznik.

0

Niestety dalej się z tym męczę. Inaczej problem postawię:
Jak się robi zastopowanie programu/ spauzowanie programu/ przerwanie programu ale w taki sposób, żeby potem po wykonaniu jakiejś akcji np. naciśnięciu na jakiś przycisk program szedł od momentu w którym został spauzowany a nie od nowa, dlatego odpada instrukcja break? W konsoli bym dał scanfa i program stoi do momentu aż nie naciśnie się klawisza jakiegoś np.

for(i=0;i<10;i++) 
{ 
printf("tekst"); 
scanf("%d",a); 
} 

, a w winapi mam przycisk i potrzebuję takiej funkcji coś jak scanf w konsoli, że program w określonym miejscu stoi jak nie naciśnie się na ten przycisk (jak się nie pojawi zdarzenie od tego przycisku, czyli jak nie zostanie wysłany komunikat WM_COMMAND gdzie: LPARAM to hPrzycisk).
Kod:

hPrzycisk=CreateWindowEx(WS_EX_CLIENTEDGE,"Button","Next",WS_CHILD,200,100,120,30, 
    hEdit,NULL,hInstance,NULL); 
0

Takie coś wymyśliłem, co się wstawia w okreslony kod programu i jak się naciśnie przycisk to x(zmienna globalna typu BOOL) zmienia wartość na TRUE.

void przerwanie(void)
{
while(x==FALSE)
   {
                     
   }
}

Niestety nie działa, program się zawiesza...

0

pseudokod:

etappracy = 0
watekmapracowac = false
watekaktywny = false

threadproc_watku_roboczego:
   while(watekmapracowac && mamjeszczecokolwiekdoroboty())
      wykonajkolejnyetap()
   watekaktywny = false

wykonajkolejnyetap:
   etappracy++
   wypisz("juhuu juz wykonalem " + etappracy + " krokow")

mamjeszczecokolwiekdoroboty:
   return etappracy < 10000

start
   if(aktywny || ! mamjeszczecokolwiekdoroboty()) return
   watekmapracowac = true
   aktywny = true
   odpal_watekroboczy(threadproc_watku_roboczego)

stop:
   if(!aktywny) return
   watekmapracowac = false

analogicznie mozna zrobic bez watkow, ale z windows'owym timer'em, etc..

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