Ir para conteúdo


Pedro Pinheiro

Cadastrado: 26 Jan 2016
Offline Última atividade: Ontem, 12:28
-----

Tópicos que criei

Trabalhando com GDI+ exemplo

13 junho 2017 - 03:57

Eu fiz esse exemplo simples para mostrar um modo de trabalhar com GDI+. Eu colquei para o programa só redesenhar quando executar uma determinada função, assim evitando o consumo excessivo de memoria.

Eu upei a barra, mas não consegui upar o background (skin.png), mas vc pode colocar qualer imagem para ver o funcionamento.


  1. #include <GDIPlus.au3>
  2. #include <WindowsConstants.au3>
  3. #include <Misc.au3>
  4. #include <File.au3>
  5.  
  6.  
  7. ;~ -ATENÃÃO-
  8. ;~ Coloquei uma lista de ROMS simples que mostra só a ROMS selecionada nas 10 colunas. (Motivo- manter o código pequeno para não complicar muito o exemplo)
  9.  
  10.  
  11. _GDIPlus_Startup()
  12.  
  13. Const $TAMANHO[2] = [800,600]
  14. Const $BARRA = "select.png" ;IMAGEM DA BARRA DE SELEÃÃO
  15. Const $BACKGROUND = "skin.png" ;IMAGEM DE FUNDO DO PROGRAMA
  16. Const $PATHROMS = "roms" ;ARQUIVOS ROMS - ZIP
  17. Const $ROMS = _FileListToArrayRec($PATHROMS, "*.zip", 1, $FLTAR_NORECUR, $FLTAR_SORT, $FLTAR_NOPATH)
  18. MsgBox("","ERRO!", 'Indique uma pasta com arquivos ".zip"')
  19.  
  20. ;BARRA DE SELEÃÃO
  21. Local $TOP_BAR = 115
  22. Const $LEFT_BAR = 28
  23. Const $W_BAR = 321
  24. Const $H_BAR = 49
  25.  
  26. Const $ESPACO_BAR = 41
  27. Const $CONST_BAR = $TOP_BAR
  28. Const $FINAL_BAR = 484
  29.  
  30. Local $POS_ITEM = 1
  31. Const $POS_ITEM_MAX = $ROMS[0]
  32. Const $MAX_ITENS = 10
  33.  
  34. ;LISTA DE JOGOS
  35. Local $TOP_LIST = 123
  36. Const $LEFT_LIST = 28
  37. Const $W_LIST = 321
  38. Const $H_LIST = 49
  39.  
  40. Const $ESPACO_LIST = 41
  41. Const $CONST_LIST = $TOP_LIST
  42. Const $FINAL_LIST = 484
  43. ;============>
  44. Global $GUI = GUICreate("Example", $TAMANHO[0], $TAMANHO[1],-1,-1,$WS_POPUP)
  45. ;============>
  46. Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($GUI)
  47. Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics($TAMANHO[0],$TAMANHO[1] , $hGraphic)
  48. Global $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
  49. Global $hImageBg = _GDIPlus_ImageLoadFromFile($BACKGROUND)
  50. Global $hImageTop = _GDIPlus_ImageLoadFromFile($BARRA)
  51.  
  52. ;TEXTO
  53. Global $hFormat = _GDIPlus_StringFormatCreate()
  54. Global $hBrush_Branco = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
  55. Global $hFamily = _GDIPlus_FontFamilyCreate("impact")
  56. Global $hFont = _GDIPlus_FontCreate($hFamily, 18, 0)
  57. ;LAYOUT -0/100
  58. Global $tLayout = _GDIPlus_RectFCreate(740,25)
  59.  
  60.  
  61. Redraw()
  62. Case GUIGetMsg() = -3
  63. _exit()
  64. Case _IsPressed(26)
  65. If ($TOP_BAR > $CONST_BAR and $TOP_BAR <= $FINAL_BAR) Then $TOP_BAR-=$ESPACO_BAR ;CIMA
  66. if $POS_ITEM > 1 then $POS_ITEM-=1
  67. Redraw()
  68. Case _IsPressed(28)
  69. if ($TOP_BAR >=$CONST_BAR and $TOP_BAR < $FINAL_BAR) Then $TOP_BAR+=$ESPACO_BAR ;BAIXO
  70. if $POS_ITEM < $POS_ITEM_MAX Then $POS_ITEM+=1
  71. Redraw()
  72.  
  73.  
  74. Func Redraw()
  75. ;Limpa tudo
  76. _GDIPlus_GraphicsClear($hBuffer)
  77. ;Background
  78. _GDIPlus_GraphicsDrawImageRect($hBuffer, $hImageBg, 0, 0,$TAMANHO[0], $TAMANHO[1])
  79. ;Barra
  80. _GDIPlus_GraphicsDrawImageRect($hBuffer, $hImageTop, $LEFT_BAR, $TOP_BAR,$W_BAR,$H_BAR)
  81. ;Texto
  82. _GDIPlus_StringFormatSetAlign($hFormat, 2)
  83. _GDIPlus_GraphicsDrawStringEx($hBuffer,$POS_ITEM & "/" & $POS_ITEM_MAX , $hFont , $tLayout , $hFormat, $hBrush_Branco)
  84.  
  85.  
  86. ;LAYOUT LISTA
  87. _GDIPlus_StringFormatSetAlign($hFormat, 1)
  88. For $i=1 to $MAX_ITENS
  89. $tLayout_Lista = _GDIPlus_RectFCreate($LEFT_LIST,$TOP_LIST,$W_LIST,$H_LIST)
  90. _GDIPlus_GraphicsDrawStringEx($hBuffer,$ROMS[$POS_ITEM], $hFont , $tLayout_Lista , $hFormat, $hBrush_Branco)
  91. $TOP_LIST+=$ESPACO_LIST
  92. $TOP_LIST=$CONST_LIST
  93. ;Desenha o grafico
  94. _GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
  95.  
  96. Func _exit()
  97. GUIDelete($GUI)
  98. _GDIPlus_ImageDispose($hImageBg)
  99. _GDIPlus_ImageDispose($hImageTop)
  100. _GDIPlus_Shutdown()

Resolução e SDL.dll

09 maio 2017 - 06:18

Por muito tempo eu sempre tive a curiosidade de colocar uma GUI em fullscreen, ai um tempo atrás eu achei o Qres (programa que altera a resolução do pc). Ai de boa. A resoluçao mudava de acordo com a GUI do programa, mas e quando o programa é fechado inesperadamente? Como fica? Ai o usuário vai ter de voltar a resolução antiga manualmente. Ai eu pensei...porque não usar uma DLL para isso?..dei uma olhada nas dlls de alguns programas e acabei encontrando a SDL.DLL. Olhando suas funcoes eu encontrei SDL_wm_toggleFullscreentoggleFullscreen. Alguem ja estudou sobre essa DLL? Queria escrever mais, mas o celular não deixa por causa da limitacao de caracteres

Mover label baseado na posição do mouse na gui

16 abril 2017 - 08:32

Eu fiz um sistema de janelas para um joguinho que estou fazendo em autoit para pegar mais noção de programação. Hoje eu me deparei com uma conta que não bate de jeito nenhum. Meu cerebro meio que bugou e eu passei horas tentando resolver isso sem sucesso. Enfim...eu fiz esse sistema de janelas para um joguinho em autoit que eu fiz. Os demais elementos da janela não importa. Eu só preciso movimentar o label titulo de acordo com a posição do mouse no control "Me Mova"...como na janelas do windows..em qualquer lugar que eu clico na barra de uma janela no windows eu movo a janela do ponto que o mouse está...no meu exemplo eu não consegui...eu só consegui mover a janela da posição do mouse. Olhem o exemplo que eu anexei. Vocês vão entender...vcs vão reparar que ao clicar na janela ela se desloca toda para onde o mouse está...a conta fica no controlmove que eu adicionei um comentario. Alguem por favor me ajude kkk fiquei mais de 4 horas empacado nisso.

Preciso desse valor já que os outros elementos da janela vão se mover de acordo com a label de titulo. Vlw kk


[attachment=567:Sistema de janela.au3]




ps. Alguem sabe se algum projeto de rpg em autoit? eu tinha visto algo a uns 5 anos atras, mas acabei perdendo. Era um rpg feito em autoit com um servidor e um clente. Muito bem feito. Nunfa mais achei

ProcessWait

12 abril 2017 - 07:37

Bom dia pessoal. Queria saber se existe alguma forma de capturar um processo caso ele tenha alguma Gui ativa. Tipo o WinWaitActive, mas eu não posso colocar a classe da janela do programa já que a função tera uma articulação de processos. Eu só posso pegar o nome do executavel ou o PID. É porque eu só posso executar algo nesse programa se a janela dele estiver aberta e o ProcessWait não irá funcionar nesse caso.

Escrevi meio rapido pq estou do celular carroça.

Sons do windows ao digitar em um GUI

26 março 2017 - 10:59

Uns anos atrás eu tive um problema com um programa ao Digitar algo na GUI mesmo não tendo nenhum Edit box ou algo do tipo que captura o texto, esse mês esse problema voltou a acontecer, pois parei de usar o hotkeySet e agora eu estou capturando teclas com o _IsPressed e sempre que eu aperto uma tecla o windows volta o som de erro. Como o primeiro som do vídeo abaixo. Tipo, a partir do momento que eu crio qualquer coisa na GUI, ex: Um label qualquer o windows já volta o som "Windows Background.wav" quando eu tento digitar algo. Alguem já teve esse problema ou sabe como resolver? Tentei deixar os elementos em Disable, mas o som continuou a ser executado ao pressionar alguma tecla.