Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Nieklikane myszką menu + pauza programu


Rekomendowane odpowiedzi

Opublikowano
Sieeeeeema !

Robię tak Sobie menu do minigierki która nie wiem czy powstanie ( nie klikane menu) w którym wykorzystałem kilka ciekawych rozwiązań różnych problemów które tu omówię ;)/>/>

A nuż komuś się przyda.








#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <misc.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 323, 378, 372, 390)
$Label1 = GUICtrlCreateLabel("(Graj)", 80, 0, 166, 83, $SS_CENTER)
GUICtrlSetFont(-1, 34, 800, 0, "Segoe Print")
GUICtrlSetColor(-1, 0x192e5b)

$Label2 = GUICtrlCreateLabel("Opcje", 80, 96, 161, 83, $SS_CENTER)
GUICtrlSetFont(-1, 34, 800, 0, "Segoe Print")
GUICtrlSetColor(-1, 0x000000)

$Label3 = GUICtrlCreateLabel("Autor", 80, 192, 167, 83, $SS_CENTER)
GUICtrlSetFont(-1, 34, 800, 0, "Segoe Print")
GUICtrlSetColor(-1, 0x000000)

$Label4 = GUICtrlCreateLabel("Wyjscie", 56, 288, 216, 83, $SS_CENTER)
GUICtrlSetFont(-1, 34, 800, 0, "Segoe Print")
GUICtrlSetColor(-1, 0x000000)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$wybor = 1

;hotkeyset ("{s}", "Mdown")
;hotkeyset ("{w}", "Mup")
;hotkeyset ("{enter}", "Accept")

While 1 ; ______________________________________________pętla główna

;____________________________________nawigacja po menu
if _IsPressed(26) then ;up arrow
Mup()
sleep (250)
elseif _IsPressed(28) then ;down arrow
Mdown()
sleep (250)
elseif _IsPressed("0D") then ; enter
Accept()
sleep (250)
endif
;___________________________________koniec nawigacji po menu

$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit

;___________________________ pauza programu gdy go minimalizujemy
Case $GUI_EVENT_MINIMIZE
while 1
sleep (1)

$nMsg = GUIGetMsg()
if $nMsg = $GUI_EVENT_RESTORE then
ExitLoop
endif
WEnd
;_________________________koniec pauzy



EndSwitch

WEnd ; ______________________________________________koniec pętli głównej



func Mdown()
switch $wybor
case 1
guictrlsetdata ($label1, "Graj")
guictrlsetdata ($label2, "(Opcje)")
GUICtrlSetColor($label2, 0x192e5b)
GUICtrlSetColor($label1, 0x000000)
$wybor = 2

case 2
guictrlsetdata ($label2, "Opcje")
guictrlsetdata ($label3, "(Autor)")
GUICtrlSetColor($label3, 0x192e5b)
GUICtrlSetColor($label2, 0x000000)
$wybor = 3

Case 3
guictrlsetdata ($label3, "Autor")
guictrlsetdata ($label4, "(Wyjscie)")
GUICtrlSetColor($label4, 0x192e5b)
GUICtrlSetColor($label3, 0x000000)
$wybor = 4
Case 4
guictrlsetdata ($label4, "Wyjscie")
guictrlsetdata ($label1, "(Graj)")
GUICtrlSetColor($label1, 0x192e5b)
GUICtrlSetColor($label4, 0x000000)
$wybor = 1

EndSwitch

endfunc

func Mup()
switch $wybor
Case 1
guictrlsetdata ($label1, "Graj")
guictrlsetdata ($label4, "(Wyjscie)")
GUICtrlSetColor($label4, 0x192e5b)
GUICtrlSetColor($label1, 0x000000)
$wybor = 4

case 2
guictrlsetdata ($label1, "(Graj)")
guictrlsetdata ($label2, "Opcje")
GUICtrlSetColor($label1, 0x192e5b)
GUICtrlSetColor($label2, 0x000000)
$wybor = 1

case 3
guictrlsetdata ($label2, "(Opcje)")
guictrlsetdata ($label3, "Autor")
GUICtrlSetColor($label2, 0x192e5b)
GUICtrlSetColor($label3, 0x000000)
$wybor = 2

Case 4
guictrlsetdata ($label3, "(Autor)")
guictrlsetdata ($label4, "Wyjscie")
GUICtrlSetColor($label3, 0x192e5b)
GUICtrlSetColor($label4, 0x000000)
$wybor = 3

EndSwitch

endfunc

func Accept()
switch $wybor
case 1
msgbox (0, "","Wybrales 'graj'")
case 2
msgbox (0, "","Wybrales 'opcje'")
case 3
msgbox (0, "","Wybrales 'autor'")
case 4
msgbox (0, "","Wybrales 'wyjscie'")
EndSwitch


endfunc
;25 LEFT ARROW key
;26 UP ARROW key
;27 RIGHT ARROW key
;28 DOWN ARROW key





Ogólnie wszystko jest dość klarowne i opisane w kodzie komentarzami więc omówię właściwie tylko pauze programu.

Pauza w tym wypadku to taki bajer która zajmuje program funkcją sleep(1) gdy zminimalizujemy okienko. Po co ? A no po to byśmy mogli w spokoju odpisać komuś na FB czy cokolwiek. Oczywiście możemy to zrobić bez tej pauzy, zwyczajnie minimalizując okienko, ale funkcje podpięte do _IsPressed się wykonają (góra, dół i enter).

WARNING !!! pauza nie działa z hotkeyami które są tam w komentarzach (próbowałem ) ponieważ (to moja analiza) HotKeySet jest ponad wszystkim czy program jest zajęty czy nie jest wykonywany.


wytłumaczę teraz jak to działa:




$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit



to jest kawałek kodu który odpowiada za zamknięcie programu po kliknięciu {X}.

oczywiście zamiast "exit" może być tam każda inna funkcja.

dokłaniej się nie będę chyba rozpisywał na ten temat, chyba że kto bardzo chce wiedzieć jak to działa (acz proste to do zrozumienia )


a teraz kawałek od pauzy;





;___________________________ pauza programu gdy go minimalizujemy
Case $GUI_EVENT_MINIMIZE
while 1
sleep (1)

$nMsg = GUIGetMsg()
if $nMsg = $GUI_EVENT_RESTORE then
ExitLoop
endif
WEnd
;_________________________koniec pauzy



najpierw taka mała lista "statusów (?)" okna:


$GUI_EVENT_CLOSE

$GUI_EVENT_MINIMIZE

$GUI_EVENT_RESTORE

$GUI_EVENT_MAXIMIZE

$GUI_EVENT_PRIMARYDOWN

$GUI_EVENT_PRIMARYUP

$GUI_EVENT_SECONDARYDOWN

$GUI_EVENT_SECONDARYUP

$GUI_EVENT_MOUSEMOVE

$GUI_EVENT_RESIZED

$GUI_EVENT_DROPPED


no więc to też jest banalne, GuiGetMsg() pobiera status okna, jeśli jest zminimalizowane wtedy wykonuje funkcje sleep(1) ( więcej nie dawajcie, bo po 'wznowieniu' program będzie musiał przecież tego sleepa wykonać = strata czasu) i sprawdza czy okienko nie zostało przywrócone za co odpowiada $GUI_EVENT_RESTORE.


WARNING !!! Jeśli zminimalizujemy okienko poprzez zwyczajną zmiane okna na topie ( klikniemy na pasku windows na np. przeglądarkę i ją zmaksymalizujemy, niestety pauza nie działa bo okno nie jest zminimalizowane do paska tylko schowane za oknem przeglądarki.


zapraszam do samodzielnej analizy reszty kodu!


Dziękuje za uwagę, pytania śmiało walcie tutaj :D


_____________________________________________EDIT _________________________________________

Dodałem zły prefix, powinno być [source], przepraszam za to i proszę moderatora o zmianę nazwy tematu na ten co jest z odpowiedni prefixem :P

Sygna.png


  • 1 miesiąc temu...
Opublikowano

 

Sieeeeeema !
Robię tak Sobie menu do minigierki która nie wiem czy powstanie ( nie klikane menu) w którym wykorzystałem kilka ciekawych rozwiązań różnych problemów które tu omówię ;)/>/>
A nóż komuś się przyda.

 

Ale jaki nóż?

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...