Post by Gio » 01 Oct 2020, 16:34
Bom, sua pergunta não é sobre colocar binários de imagens dentro do script certo?
Então vamos simplificar o código do tutorial para a parte que interessa.
Salve os três arquivos de imagen anexos na mesma pasta do script abaixo e depois execute o script abaixo. A parte das imagens vai ficar clara para você (e eu ainda deixei no código a parte da troca do cursor pra mãozinha, mas se ainda estiver complicado de analisar, podemos tirar isso também).
Code: Select all
Message_Monitor() ; Esta função vai acionar funções OnMessage() que monitorarão o movimento e os cliques do moue na tela (executando algumas ações se isso ocorrer dentro da área da imagem).
; A rotina abaixo cria a tela com a imagem do botão simples que reescrevemos logo acima.
CREATE_WINDOW:
Gui, add, text, x20 y20 w360 Center, A imagem abaixo é um botão
Gui, add, picture, BackGroundTrans x156 y50 Center, %A_ScriptDir%/solto.png
gui, show, w400 h300, Exemplo de botão usando controle to tipo imagem
WinHwnd := WinExist()
HandCursor := DllCall("LoadCursor", "Uint", WinHwnd, "Uint", 32649)
Return
; Esta função monitora movimentos do mouse e cliques. Ela aciona as funções abaixo dela conforme ocorram as ações na tela (movimento ou clique).
Message_Monitor()
{
OnMessage(0x200, "CheckCursor")
OnMessage(0x201, "CheckClick")
}
Return
; A função abaixo monitora a posição do mouse. Se o cursor passar sobre a imagem, a função muda o cursor do mouse para uma mãozinha e também muda a imagem do botão (Efeitos estéticos de animação).
CheckCursor(WParam, LParam, Msg)
{
Global
MouseGetPos, Xcoord, YCoord
If (A_Gui = 1 AND XCoord >= 156 AND XCoord <= 243 AND YCoord >= 70 AND YCoord <= 150) ; Esta é a matemática que determina se o cursor está sobre a área da imagem.
{
DllCall("SetCursor", "Uint", HandCursor)
If (Botao_Aceso = 1)
{
Return
}
GuiControl,, Static2, %A_ScriptDir%/mouse_em_cima.png
Botao_Aceso := 1
}
else
{
If (Botao_Aceso)
{
GuiControl,, Static2, %A_ScriptDir%/solto.png
Botao_Aceso := 0
}
}
}
Return
; A função abaixo monitora os cliques na tela. Se um clique for feito dentro da área da imagem, ela muda a imagem do botão (efeito estético) e aciona uma ação (um msgbox, somente para exemplo.)
CheckClick(WParam, LParam, Msg)
{
Global
Gui +OwnDialogs
MouseGetPos, Xcoord, YCoord
If (A_Gui = 1 AND XCoord >= 156 AND XCoord <= 243 AND YCoord >= 70 AND YCoord <= 150) ; Esta é a matemática que determina se o clique ocorreu dentro da área da imagem.
{
GuiControl,, Static2, %A_ScriptDir%/apertado.png
Msgbox % "Você clicou no botão! `n(Indique a ação correspondente no lugar desse comando de msgbox)"
Sleep 200
GuiControl,, Static2, %A_ScriptDir%/solto.png
}
}
Return
Imagens:
- apertado.png (4.05 KiB) Viewed 547 times
- solto.png (778 Bytes) Viewed 547 times
- mouse_em_cima.png (1.52 KiB) Viewed 547 times
Bom, sua pergunta não é sobre colocar binários de imagens dentro do script certo?
Então vamos simplificar o código do tutorial para a parte que interessa.
Salve os três arquivos de imagen anexos na mesma pasta do script abaixo e depois execute o script abaixo. A parte das imagens vai ficar clara para você (e eu ainda deixei no código a parte da troca do cursor pra mãozinha, mas se ainda estiver complicado de analisar, podemos tirar isso também).
[code]Message_Monitor() ; Esta função vai acionar funções OnMessage() que monitorarão o movimento e os cliques do moue na tela (executando algumas ações se isso ocorrer dentro da área da imagem).
; A rotina abaixo cria a tela com a imagem do botão simples que reescrevemos logo acima.
CREATE_WINDOW:
Gui, add, text, x20 y20 w360 Center, A imagem abaixo é um botão
Gui, add, picture, BackGroundTrans x156 y50 Center, %A_ScriptDir%/solto.png
gui, show, w400 h300, Exemplo de botão usando controle to tipo imagem
WinHwnd := WinExist()
HandCursor := DllCall("LoadCursor", "Uint", WinHwnd, "Uint", 32649)
Return
; Esta função monitora movimentos do mouse e cliques. Ela aciona as funções abaixo dela conforme ocorram as ações na tela (movimento ou clique).
Message_Monitor()
{
OnMessage(0x200, "CheckCursor")
OnMessage(0x201, "CheckClick")
}
Return
; A função abaixo monitora a posição do mouse. Se o cursor passar sobre a imagem, a função muda o cursor do mouse para uma mãozinha e também muda a imagem do botão (Efeitos estéticos de animação).
CheckCursor(WParam, LParam, Msg)
{
Global
MouseGetPos, Xcoord, YCoord
If (A_Gui = 1 AND XCoord >= 156 AND XCoord <= 243 AND YCoord >= 70 AND YCoord <= 150) ; Esta é a matemática que determina se o cursor está sobre a área da imagem.
{
DllCall("SetCursor", "Uint", HandCursor)
If (Botao_Aceso = 1)
{
Return
}
GuiControl,, Static2, %A_ScriptDir%/mouse_em_cima.png
Botao_Aceso := 1
}
else
{
If (Botao_Aceso)
{
GuiControl,, Static2, %A_ScriptDir%/solto.png
Botao_Aceso := 0
}
}
}
Return
; A função abaixo monitora os cliques na tela. Se um clique for feito dentro da área da imagem, ela muda a imagem do botão (efeito estético) e aciona uma ação (um msgbox, somente para exemplo.)
CheckClick(WParam, LParam, Msg)
{
Global
Gui +OwnDialogs
MouseGetPos, Xcoord, YCoord
If (A_Gui = 1 AND XCoord >= 156 AND XCoord <= 243 AND YCoord >= 70 AND YCoord <= 150) ; Esta é a matemática que determina se o clique ocorreu dentro da área da imagem.
{
GuiControl,, Static2, %A_ScriptDir%/apertado.png
Msgbox % "Você clicou no botão! `n(Indique a ação correspondente no lugar desse comando de msgbox)"
Sleep 200
GuiControl,, Static2, %A_ScriptDir%/solto.png
}
}
Return[/code]
Imagens:
[attachment=2]apertado.png[/attachment]
[attachment=1]solto.png[/attachment]
[attachment=0]mouse_em_cima.png[/attachment]