Skocz do zawartości

7. GUI ciąg dalszy...


# CSH External VIP Project

Masz dosyć problemów z czynnikiem zaufania w CS2 lub notorycznymi banami?

Sprawdź CSH External VIP Project.


Więcej informacji  

Rekomendowane odpowiedzi

Na początku poznamy więc drugi sposób kontroli elementów programu (w poprzedniej lekcji poznaliśmy sposób GuiGetMsg() )- tak jak obiecałem na poprzedniej lekcji .

 

A więc tak:

#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)

GuiCreate("Sample GUI", 400, 400)
GUISetOnEvent($GUI_EVENT_CLOSE, "Wyjscie")
GUISetState(@SW_SHOW)

Func Wyjscie()
     Exit
EndFunc

While 1
     Sleep(100)
WEnd

Strach pewnie Was obleciał widząc ten kod . Jest on trochę większy niż poprzednie, ale i z nim sobie poradzimy krok po kroku:

 

-Pierwsza linijka to znana nam dyrektywa #include, która dołącza znaną nam bibliotekę GUIConstantsEx.au3.

-Kolejna linijka to funkcja Opt(). Jest to funkcja która może przyjmować dużo argumentów (zresztą sami zobaczcie w helpie). Za jej pomocą możemy zmieniać różne domyślne opcje/parametry naszego programu. W naszym wypadku jest to zezwolenie na używanie OnEvent mode czyli wszystkich funkcji zawierających w nazwie OnEvent (są to dość specyficzne funkcje i dla tego trzeba zezwalać na ich działanie ). Domyślnie w autoit ustawione jest:

Opt("GUIOnEventMode", 0)
czyli funkcje OnEvent nie działają.

-Następna nie znana nam jeszcze linijka to:

GUISetOnEvent($GUI_EVENT_CLOSE, "Wyjscie")
Jest to właśnie ta funkcja, na którą musieliśmy się zgodzić.

Działa ona na tej zasadzie, że na stałe przypisuje "krzyżykowi" ($GUI_EVENT_CLOSE) funkcje Wyjście(). Uwaga: jeśli mamy jakąś swoją funkcje np. Kurs() to w funkcji OnEvent musimy wpisać ją w formacie "Kurs" tak już jest niestety i wiąże się z tym jeden minus - nie można w funkcji OnEvent podawać argumentów funkcji do których przypisujemy dany element np.

"Kurs($argument,$argument2)" ( bynajmniej ja nie znam sposobu na wpisywanie argumentów ).

Trochę to pogmatwane ale tak już jest niestety w tym programowaniu .

Oczywiście tym uważniejszym czytelnikom kursu nasuwa się pytanie: Jakie są więc plusy tej pogmatwanej funkcji

JEST JEDEN WIELKI PLUS

aby go wytłumaczyć przedstawię wam 2 skrypty:

#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)

GuiCreate("Sample GUI", 400, 400)
GUISetOnEvent($GUI_EVENT_CLOSE, "Wyjscie")
GUISetState(@SW_SHOW)

Func Wyjscie()
     Exit
EndFunc

While 1
     Sleep(1000)
WEnd
i drugi:

#include <GUIConstantsEx.au3>

GuiCreate("Sample GUI", 400, 400)
GUISetState(@SW_SHOW)

While GUIGetMsg()<>$GUI_EVENT_CLOSE
     Sleep(1000)
WEnd
Pierwszy skrypt jest napisany nowo poznaną metodą czyli OnEvent. Drugi zaś napisany jest starą metodą GuiGetMsg(). Obydwa wykonują podczas swojego działania jedną funkcje - Sleep(1000). Jest to funkcja pauzująca program na 1 sek (1000ms). Uruchomcie zatem oba skrypty osobno i na pewno zauważycie jedną rzecz. W pierwszym skrypcie zamykanie programu działa jak należy. W drugim zaś pojawił się problem z zamykaniem. Właściwie program w ogóle nie chce się zamknąć albo zamknie się gdy zrobimy porządną serie kliknięć w "krzyżyk". Jeśli już domyślasz się czemu tak jest to punkt dla Ciebie jeśli nie to nic straconego wytłumaczę. Funkcja OnEvent ustala na stałe funkcje Wyjście() na "krzyżyk" niezależnie czy program wykonuje jakąś czynność czy nie. Natomiast GuiGetMsg() jest sprawdzane tylko przy każdym kolejnym cyklu pętli po czym następuje pauza na 1 sek i znowu następuje sprawdzenie. Tyle, że to sprawdzenie trwa ułamek sek. i musielibyśmy w tej chwili wcisnąć krzyżyk. Inaczej program zamknięcia nie załapie.

Tak więc powinniśmy używać tych 2 sposobów zamiennie w zależności od naszych potrzeb.

 

To wszystko na tą lekcje. W następnej powiemy sobie o elementach GUI- jak ich używać.

Po tej lekcji powinieneś znać podstawy funkcji OnEvent (jest ich jeszcze kilka i poznamy jedną z nich w następnej lekcji)

 

Pozdrawiam,

Yubasek.

Odnośnik do komentarza

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Regulamin. Polityka prywatności