Rapture Napisano Lipiec 5, 2019 Autor Zgłoś Udostępnij Napisano Lipiec 5, 2019 Czesc! Pisze program, który symuluje bezludną wyspę, na której żyją lisy i zające. Stworzyłem sobie menu do tego programu. Zawiera ono takie przyciski jak: Island,Grass,Lepus,Fox,Simulat,End. Pierwszy przycisk powoduje wczytanie bitmapy, czyli w okien pojawia sie sama wyspa bez trawy i zajacow. Wcisniecie Grass powoduje ze na wyspie pojawia sie trawa. Wcisniecie Lepus powoduje ze na wyspie pojawia sie 10 zajacow. Wcisniecie Simulat powoduje ze owe 10 zajacow zaczyna sie ruszczac i jesc trawe. Jednak od momentu kiedy wcisne Simulat nie mam mozliwosci sterowania moim menu. Nie moge naprzykald wcisnac przycisku kory konczy cala symulacje. Funkcja jaka jest wywolana po wcisnieciu Simulat jest w petli while(1), czyli ze proces poruszania i jedzenia odbywa sie na okraglo. Dlaczego nie mam dostepu do menu. Czemu program az tak bardzo absorbuje petla while(1) ze nie starcza mu sil na operowanie menu. Prosze o rady, pozdrawiam pulp. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Storm Napisano Lipiec 5, 2019 Zgłoś Udostępnij Napisano Lipiec 5, 2019 Ja bym zamiast petli while obslugiwał komunikaty od Timera i w ten sposob co jakis czas poruszał zającami itp. Nie było by problemu z odbiorem innych komunikatów. A tak u ciebie nie są pewnie pobierane kolejne komunikaty bo cały czas jest obsługiwany ten jeden tj. wybranie z menu "Simulat".Jego obsługa to pewnie ta nieskończona pętla,więc się nie skończy i dlatego inne komunikaty nie są obsługiwane..Przynajmniej tak mi się wydaje.Ale moge się mylić. Pozdrawiam. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Trace Napisano Lipiec 16, 2019 Zgłoś Udostępnij Napisano Lipiec 16, 2019 Można też utworzyć nowy wątek odpowiedzialny za ruch zwierząt, chociaż w tym przypadku rzezczywiście lepiej obsłużyc WM_TIMER :) Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Visage Napisano Lipiec 16, 2019 Zgłoś Udostępnij Napisano Lipiec 16, 2019 Masz klopot poniewaz wogole nie wiesz jak dzialaja programy w sys. win. Moze warto by sie tym zainteresowac. Twoj problem polega natym, ze system uruchamiajac aplikacje tworzy dla niej 1 watek, wiec kiedy ty zatrzymujesz go piszac "while(TRUE)", aplikacja nie moze obslugiwac podstawowych komunikatow, czyli tych z menu, itp. itd. rozwiazaniem jest takie jak w postach wczesniej: timery lub nowy watek. Najproscie dla ciebie (jak sadze) bedzie zrobienie timera, watków nie ruszaj, skoro masz klopoty z podstawowymi zagadnieniami watki beda dla ciebie bariera nie do pokonania :) Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.