Ĺadny brzuch
Witam mam pytanie odnośnie zdarzeń w wxWidgets mianowicie:
EVT_MENU(ID_SINGLE,MyOkno::Tryb) EVT_MENU(ID_MULTIPLAYER,MyOkno::Tryb)
Jak wywołać jakieś zdarzenie, tzn jest jakaś akcja po kliknięciu przycisku czy można ją wyłować w kodzie określając ID zdarzenia, bez konieczności klikania w button, np w jakiejś funkcji (ktora sama by wykonala klikniecie) dzieki, pozdr
Użytkownik Sinbad666 edytował ten post 18 luty 2007, 23:20
Nie znam się specjalnie na Wx-ach (jeszcze), ale z tego co narazie widzę, to pod konkretny button rozpoznwany po ID przypisujesz wykonanie metody Ustaw z klasy MyOkno. Skoro tak to po co Ci wywoływanie kliknięcie... Nie wystarczy wywołać samą metodę?
Ze zdarzeniami to jest tak, że się je obsługuje, a nie wywołuje. Program okienkowy odbiera bardzo dużo zdarzeń, ale tylko niektóre muszą być obsłużone. Obsługa polega na wywołaniu funkcji (u ciebie funkcji ustaw). Jest jeszcze jedna kwestia: jeżeli koniecznie chcesz wywołać zdarzenie, to kiedy ono ma powstać? Jak na kliknięcie, to jest to obsługa zdarzenia kliknięcia guzika, jak na czas, to jest to zdarzenie onTimer, jak na coś innego, to też najpierw musi być zdarzenie. Ciężko mi wymyślić sposób, żeby zdarzenie powstało samo. Tak jak pisał Revis: możesz wywołać funkcję obsługi zdarzenia i efekt będzie taki sam.
Z załączonego kodu wynika, że chcesz kilku elementom przypisać tą samą funkcję. Można to zrobić w jednej linii używająć wxID_ANY jako id kontrolki. Nie mam do końca pewności o co chodzi, więc może więcej szczegółów podaj. Czyli co chcesz ostatecznie osiągnąć.
Jeszcze jest taka drobna sprawa: zdarzenie jest to swego rodzaju metoda, z tym że mówiąc zdarzenie ma się bardziej na myśli GUI=Graficzny Interfejs Użytkownika. Teraz tak: jak to ma być z tym zdarzeniem? - to ma być zdarzenie dostępne dla tego samego typu obiektów, czy ma ono powodować (inicjować) szereg zdarzeń dla zupełnie innej grupy obiektów? Dodam -co jest oczywiste- że wchodzi tu w grę dostępność metod dla określonych obiektów. Nie można mieszać typów obiektów! W wypadku gdy chce się aby zdarzenie inicjowało zdarzenia w obiektach innego typu niż tego spod którego zostało wywołane owo zdarzenie trzeba zainkludować (dołączyć) biblioteki nagłówkowe do pliku zawierającego deklaracje owego zdarzenia-metody. Same metody muszą mieć przedrostek public.
Wiem że to co napisałem jest zagmatwane :/ ale z drugiej strony prośba też jest trochę zagmatwana i niezbyt sprecyzowana.
Proszę autora o to, żeby napisał o co konkretnie chodzi to wtedy podam gotowe rozwiązanie - i od razu proszę, żeby maksymalnie jak się da uprościć prośbę (chodzi o to, żeby nie pisać o wszystkim tylko zająć się sentecją problemu).
Pozdro!
//Edit1:
Źródła gdzie można znaleźć wiedzę:
1. "Symfonia C++ Standard" - autor: Jerzy Grębosz
2. wxForum
3. Dokumenacja dostępna w wxDevCpp IDE -> Pomoc ->index
4. Tutorial do wxDevCpp dla początkujących
Użytkownik dowhilebegin edytował ten post 18 luty 2007, 21:27
Witam chodzilo mi o przypadek kiedy mamy w menu wybór miedzy dwoma opcjami
submenu->AppendCheckItem(ID_SINGLE,"Single","Tryb Single"); submenu->AppendCheckItem(ID_MULTIPLAYER,"Multiplayer","Tryb Multiplayer")
i jak jedną zaznacze to druga ma sie automatycznie odznaczyc i właśnie szukałem rozwiazania jak wywołać te drugie zdarzenie w pierwszej funcji i na odwrot, ale juz rozwiązałem problem i chodzi tak jak chciałem :). Troszke zmieniłem załorzenia ale jest prościej.
void MyOkno::Tryb(wxCommandEvent& event) { int id=event.GetId(); if(id==ID_SINGLE) { submenu->Check(ID_MULTIPLAYER,false); submenu->Check(ID_SINGLE,true); tryb='s'; Reset(event); } else if(id==ID_MULTIPLAYER) { submenu->Check(ID_SINGLE,false); submenu->Check(ID_MULTIPLAYER,true); tryb='m'; Reset(event); } }
dzieki za odpowiedzi i liniki, przepraszam troche mało sprecyzowałem pytanie, jak bede mial następne lepiej je opracuje:), dzieki pozdr
To jeszcze tylko dodam, że można użyć AppendRadioItem zamiast Check i wtedy się będzie samo odznaczało.
Witam mam znów pytanie czy directsound(directx) współpracuje dobrze z wxwidgets? Bo jako temat projektu mam napisać sterownik do karty muzycznej, i napisać aplikacje która bedzie wyświetlac sygnał dzwieku tzn sinus-oide jak w winampie. Oraz drugie czy znacie jakies dobre kursy tutoriale o directsound? owszem w sieci znalazlem kilka ale na temat directdraw itp a nie o directsound, aha ale jakieś po polsku ;)dzieki za kazdy link i odp, pozdr
Użytkownik Sinbad666 edytował ten post 21 luty 2007, 19:14
Jeżeli chodzi o dźwięk to wxWidgets ma standardowo niewiele do zaoferowania (zobacz tutaj).
Niemniej jednak nie powinno być przeszkód w korzystaniu z czegokolwiek innego. Ja osobiście używam w wx funkcji Win32Api i nie ma żadnych konfliktów.
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
EVT_MENU(ID_SINGLE,MyOkno::Tryb) EVT_MENU(ID_MULTIPLAYER,MyOkno::Tryb)
Jak wywołać jakieś zdarzenie, tzn jest jakaś akcja po kliknięciu przycisku czy można ją wyłować w kodzie określając ID zdarzenia, bez konieczności klikania w button, np w jakiejś funkcji (ktora sama by wykonala klikniecie) dzieki, pozdr
Użytkownik Sinbad666 edytował ten post 18 luty 2007, 23:20
Nie znam się specjalnie na Wx-ach (jeszcze), ale z tego co narazie widzę, to pod konkretny button rozpoznwany po ID przypisujesz wykonanie metody Ustaw z klasy MyOkno. Skoro tak to po co Ci wywoływanie kliknięcie... Nie wystarczy wywołać samą metodę?
Ze zdarzeniami to jest tak, że się je obsługuje, a nie wywołuje. Program okienkowy odbiera bardzo dużo zdarzeń, ale tylko niektóre muszą być obsłużone. Obsługa polega na wywołaniu funkcji (u ciebie funkcji ustaw). Jest jeszcze jedna kwestia: jeżeli koniecznie chcesz wywołać zdarzenie, to kiedy ono ma powstać? Jak na kliknięcie, to jest to obsługa zdarzenia kliknięcia guzika, jak na czas, to jest to zdarzenie onTimer, jak na coś innego, to też najpierw musi być zdarzenie. Ciężko mi wymyślić sposób, żeby zdarzenie powstało samo. Tak jak pisał Revis: możesz wywołać funkcję obsługi zdarzenia i efekt będzie taki sam.
Z załączonego kodu wynika, że chcesz kilku elementom przypisać tą samą funkcję. Można to zrobić w jednej linii używająć wxID_ANY jako id kontrolki. Nie mam do końca pewności o co chodzi, więc może więcej szczegółów podaj. Czyli co chcesz ostatecznie osiągnąć.
Jeszcze jest taka drobna sprawa: zdarzenie jest to swego rodzaju metoda, z tym że mówiąc zdarzenie ma się bardziej na myśli GUI=Graficzny Interfejs Użytkownika. Teraz tak: jak to ma być z tym zdarzeniem? - to ma być zdarzenie dostępne dla tego samego typu obiektów, czy ma ono powodować (inicjować) szereg zdarzeń dla zupełnie innej grupy obiektów? Dodam -co jest oczywiste- że wchodzi tu w grę dostępność metod dla określonych obiektów. Nie można mieszać typów obiektów! W wypadku gdy chce się aby zdarzenie inicjowało zdarzenia w obiektach innego typu niż tego spod którego zostało wywołane owo zdarzenie trzeba zainkludować (dołączyć) biblioteki nagłówkowe do pliku zawierającego deklaracje owego zdarzenia-metody. Same metody muszą mieć przedrostek public.
Wiem że to co napisałem jest zagmatwane :/ ale z drugiej strony prośba też jest trochę zagmatwana i niezbyt sprecyzowana.
Proszę autora o to, żeby napisał o co konkretnie chodzi to wtedy podam gotowe rozwiązanie - i od razu proszę, żeby maksymalnie jak się da uprościć prośbę (chodzi o to, żeby nie pisać o wszystkim tylko zająć się sentecją problemu).
Pozdro!
//Edit1:
Źródła gdzie można znaleźć wiedzę:
1. "Symfonia C++ Standard" - autor: Jerzy Grębosz
2. wxForum
3. Dokumenacja dostępna w wxDevCpp IDE -> Pomoc ->index
4. Tutorial do wxDevCpp dla początkujących
Użytkownik dowhilebegin edytował ten post 18 luty 2007, 21:27
Witam chodzilo mi o przypadek kiedy mamy w menu wybór miedzy dwoma opcjami
submenu->AppendCheckItem(ID_SINGLE,"Single","Tryb Single"); submenu->AppendCheckItem(ID_MULTIPLAYER,"Multiplayer","Tryb Multiplayer")
i jak jedną zaznacze to druga ma sie automatycznie odznaczyc i właśnie szukałem rozwiazania jak wywołać te drugie zdarzenie w pierwszej funcji i na odwrot, ale juz rozwiązałem problem i chodzi tak jak chciałem :). Troszke zmieniłem załorzenia ale jest prościej.
void MyOkno::Tryb(wxCommandEvent& event) { int id=event.GetId(); if(id==ID_SINGLE) { submenu->Check(ID_MULTIPLAYER,false); submenu->Check(ID_SINGLE,true); tryb='s'; Reset(event); } else if(id==ID_MULTIPLAYER) { submenu->Check(ID_SINGLE,false); submenu->Check(ID_MULTIPLAYER,true); tryb='m'; Reset(event); } }
dzieki za odpowiedzi i liniki, przepraszam troche mało sprecyzowałem pytanie, jak bede mial następne lepiej je opracuje:), dzieki pozdr
To jeszcze tylko dodam, że można użyć AppendRadioItem zamiast Check i wtedy się będzie samo odznaczało.
Witam mam znów pytanie czy directsound(directx) współpracuje dobrze z wxwidgets? Bo jako temat projektu mam napisać sterownik do karty muzycznej, i napisać aplikacje która bedzie wyświetlac sygnał dzwieku tzn sinus-oide jak w winampie. Oraz drugie czy znacie jakies dobre kursy tutoriale o directsound? owszem w sieci znalazlem kilka ale na temat directdraw itp a nie o directsound, aha ale jakieś po polsku ;)dzieki za kazdy link i odp, pozdr
Użytkownik Sinbad666 edytował ten post 21 luty 2007, 19:14
Jeżeli chodzi o dźwięk to wxWidgets ma standardowo niewiele do zaoferowania (zobacz tutaj).
Niemniej jednak nie powinno być przeszkód w korzystaniu z czegokolwiek innego. Ja osobiście używam w wx funkcji Win32Api i nie ma żadnych konfliktów.