Autor Zpráva
Werewolf
Profil
Zdravím. Potřeboval bych jen znát nějaký příkaz, který zajistí, aby program počkal, až se cyklus dokončí a teprv potom běžel dál.
Napsal jsem totiž v C + WinAPI aplikaci, není důležité, k čemu slouží, ale cyklem (for) mi dopňuje údaje do proměnné. Potom chci vyplivnout MessageBox(), který ukáže obsah té proměnné. Jenže se ukáže prázdný, protože ten cyklus stále běží.

Prosím tedy zkušenější, aby se se mnou podělili o své zkušenosti :-)
Díky za pomoc
nightfish
Profil
jednovláknové programy v C se neprovádějí sekvenčně? tedy když v kódu zobrazení toho boxu dáš až za cyklus, tak to dělá to co popisuješ?
_es
Profil
Werewolf
Nie som nejaký odborník na C + WinAPI, no asi budeš musieť dať o tom viac informácií, aby ti niekto pomohol.
Werewolf
Profil
nightfish:
Jednovláknové programy v C se provádějí tak, že program cyklí a mezitím běží dál. To zajišťuje, že může přijímat zprávy od Winu celou dobu a ne jen jeden okamžik.

Mám cyklus, který běží a nestihne se dokončit, než se dojde k řádku
MessageBox(hwnd, [...], [...], MB_OK);

. Teď mě ovšem napadlo, že by tam šla dát podmínka:
for(var = cislo; var <= cislo2; var++) {
[...]
if(var <= 2var) { MessageBox(); }
}

Nebo by to šlo udělat jako funkce volající sama sebe:
char func() {
[...]
if(var <= 2var) { MessageBox(); } else { var++; }
}


Teď to bohužel nemůžu vyzkoušet, protože Windowsy nepadají jen na podzim jako jablka (jsem na Ubuntu).

Jinak se ten MassageBox zobrazuje prázdný.
Mastodont
Profil
Werewolf
Zkus se zeptat na builder.cz, IMHO tam máš větší šanci.
Werewolf
Profil
Mastodont:
Stejně mi to nepomůže, mám rozbitý počítač :-)
Mike8749
Profil *
Werewolf
Jednovláknové programy v C se provádějí tak, že program cyklí a mezitím běží dál. To zajišťuje, že může přijímat zprávy od Winu celou dobu a ne jen jeden okamžik.
ne tak docela. je to o dost slozitejsi.
kazdopadne pokud udelas cyklus, v kterym budes neco zpracovavat, tak se proste zpracuje cyklus. kdyz cyklus napises blbe a bude trvat moc dlouho, tak ti zacne proces zrat moc cpu vykonu a zbrzdi ostatni aplikace.
na to aby aplikace prijimala zpravy od win, je treba periodicky volat GetMessage() a ty zpravy pak zpracovat. pokud cyklem "zpozdis" volani GetMessage() tak aplikace proste chvili nebude reagovat.

pri cykleni program samozdrejme dal nebezi (pokud je jednovlaknovej). pokud se ti stava to co popisujes tak mas blbe navrzenej kod. bez kodu tezko radit

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: