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

[Pytanie] Kliknięcie Obrazka Gdiplu


hfaua

Rekomendowane odpowiedzi

Opublikowano

Siema,

piszę sobie grę i mam problem :/ Chcę wywołać określoną funkcję po kliknięciu na obrazek stworzony za pomocą GDIPlus :)

Jednak pomimo wielu prób, z zarówno GUIRegisterMsg, jak i z GUIGetMsg nie działa :/

Klikam na obrazek (jpg) i nic się nie dzieje :/

Tutaj kod (powycinany) jeśli się przyda:

 

#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
$GUI = GUICreate("aaa", 100, 100)
GUISetState()
_GDIPlus_Startup()
$Komanty = _GDIPlus_GraphicsCreateFromHWND($GUI)
$Temple = _GDIPlus_ImageLoadFromFile("GRA\Img\Temple\Komnata_0100.jpg")
_GDIPlus_GraphicsDrawRect($Komanty, 0, 0, 100, 100)
GUIRegisterMsg(0x000F, "WM_PAINT")
MsgBox(0, "a", $Temple)

While 1
$msg = GUIGetMsg()
If $msg = $Temple Then MsgBox(0, "a", "a")
If $msg = -3 Then Exit
WEnd

Func WM_PAINT($hwnd, $msg, $wParam, $lParam)
_WinAPI_RedrawWindow($GUI, 0, 0, $RDW_UPDATENOW)

_GDIPlus_GraphicsDrawImageRect($Komanty, $Temple, 0, 0, 100, 100)

_WinAPI_RedrawWindow($GUI, 0, 0, $RDW_VALIDATE)

Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_PAINT

 

Od razu piszę, że szukałem na autoitscript.com, ale nie znalazłem :/

Odpowiedź będzie pewnie banalna, ale jestem zbyt zmęczony, żeby dalej próbować :/

 

Pozdrawiam, hfaua B)

Opublikowano

O tym nie pomyślałem :P

Ale, cała gra jest zrobiona WM_COMMAND i wolałbym przy tym zostać :)

Nie ma jakiegoś sposobu, aby wychwycić kliknięcie WM_COMMAND?

 

W przykładzie dałem w While, bo było szybciej ;)

 

#EDIT

Poza tym to mi nie działa :/

Opublikowano

Mogę ci podpowiedzieć, że otrzymujesz wszystkie wiadomości z okna, zaś okno otrzymuje wszystkie wiadomości z pętli procesującej wiadomości, zaś pętla procesująca wiadomości otrzymujesz WSZYSTKIE KLIKNIĘCIA NA ELEMENTY GUI.

 

Zastanów się, co tak naprawdę robisz tworząc ten obrazek.

 

I gdybyś pofatygował się do helpa, wiedziałbyś, że ImageLoadFromFile zwraca 'Handle to the new image object'.

GGM() zwraca tylko kliknięcia na elementy GUI.

Co ma element GUI wspólnego z 'image object'?

 

No, no, po tobie hfaua spodziewałem się więcej...

 

 

@EDIT:

 

Eeh, co mi tam... Aczkolwiek nie znoszę się powtarzać.

 

WM_LBUTTONDOWN

 

STM_SETIMAGE

 

To są dwa zupełnie różne sposoby.

Ta sygnatura jest pusta.

Opublikowano

Dzięki :P

Wczoraj byłem już zmęczony, a dzisiaj spróbowałem tylko GUISetOnEvent :)

 

Przeczytałem, że zwraca zwraca Handle do obrazka, a nie elementu GUI, ale nie wiedziałem jak się za to zabrać (oczywiście przez zmęczenie :rolleyes: )

Zaraz się za to zabiorę :)

 

#EDIT

Jaki jest msgID STM_SETIMAGE? Bo nie ma w Helpie, ani na msdn'ie :/

Opublikowano

nie mysl że w helpie jest całe win api

odp :

msdn.microsoft.com/en-us/library/bb760782(v=vs.85).aspx

 

@down

jednak komuś się nie podoba

Opublikowano

Bardzo ładnie Rand, bo hfaua nie umie używać google'a --.--

 

Sam się zdziwiłem, że nie ma tam tego kodu.

 

0x0172

 

Ale prędzej dojdziesz do rozwiązania korzystając z WM_LBUTTONDOWN, jak w przykładzie, który niedawno tutaj zamieszczałem. wParam posiada informację o koordach X i Y kliknięcia.

Ta sygnatura jest pusta.

Opublikowano

skoro zwraca tylko x y to nie będzie to czytelne ani optymalne

4 ify bedą potrzebne

Opublikowano

skoro zwraca tylko x y to nie będzie to czytelne ani optymalne

4 ify bedą potrzebne

Opublikowano

@Rand

Jak to nie? o.O

Wystarczy, że sobie podzielę przez 50 (rozmiar obrazka), zaokrągle i już będę miał gotowe współrzędne obrazka :)

 

@4ggr

Umiem! :P Znalazłem to minutkę po tym jak to podałeś :)

MsgID (0x0172), znalazłem 5 min później, też szukając w googlu, ale uznałem, że lepiej się o to spytać, bo mi nie działało i nie wiedziałem, czy jest dobre :]

 

Dzięki za pomoc :D już to skończyłem :)

 

BTW. Nareszcie ferie! Idę się wyspać :D

Opublikowano

Z lenistwa to pierwsze, bo nie chce mi się szukać jak użyć drugiego :)

W tym kodzie na razie jest tylko tworzenie mapy z pliku (pracuje jednocześnie nad grą i edytorem do niej :)), daje kod, bo nie wiem czemu mi się jebie GUIRegisterMsg(0x0100, "aaa")...

Jak zwinę okno, to nie wychwytuje już klawiszy :/

 

 

#include <GUIButton.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <GDIPlus.au3>
#include <StaticConstants.au3>
#include <WinAPI.au3>

Dim $Temple[14][9][8]; [iNDEX][obiekt, wejscie_gora, wejscie_prawo, wejscie_dol, wejscie_lewo, id _potwora, id_skrzyni, fabuła]

Dim $Player[10]; [obrazek, X, Y, gold, hp, mana, eq1, eq2...]

$GUI = GUICreate("Gra by hfaua", 700, 500); GUI
GUISetBkColor(0x324043); kolor tla
GUISetState(); ustawia status GUI na @SW_SHOW

start(); funkcja zaczynajaca gre

; WSZYSTKIE GUIREGISTERMSG'e
GUIRegisterMsg(0x000F, "WM_PAINT"); WM_PAINT
GUIRegisterMsg(0x0100, "WM_KEYDOWN"); KEYDOWN
GUIRegisterMsg(0x0111, "WM_COMMAND"); COMMAND
GUIRegisterMsg(0x0201, "WM_LBUTTONDOWN"); WM_LBUTTONDOWN

;PETLA WHILE
While 1
Sleep(10)
If GUIGetMsg() = -3 Then Exit
WEnd

Func start()
_GDIPlus_Startup(); startuje GDIPlus
Global $Graphic = _GDIPlus_GraphicsCreateFromHWND($GUI); tworzy grafikę
create("map"); tworzy mapę
create("player"); tworzy gracza
create("panel"); tworzy panel dolny
EndFunc   ;==>start

Func set($element, $id = 0)
Switch $element
	Case ""
EndSwitch
EndFunc   ;==>set

Func create($element)
Switch $element
	Case "player"
		;TWORZENIE OBRAZKA GRACZA
		$Player[0] = _GDIPlus_ImageLoadFromFile("Img\player.png")
		_GDIPlus_GraphicsDrawImageRect($Graphic, $Player[0], 0, 0, 50, 50)

		;DODATKOWE INFORMACJA ODNOSNIE GRACZA:
		;wspolrzedne
		$Player[1] = 0
		$Player[2] = 0

		;gold, hp, mana
		$Player[3] = 10000
		$Player[4] = 100
		$Player[5] = 100

		;eq
		$Player[6] = 0
		$Player[7] = 0
		$Player[8] = 0
		$Player[9] = 0
	Case "map"
		Local $1 = 0, $2 = 0, $3 = 0, $4 = 0
		Local $id = 0
		Local $bin[4]

		;WCZYTYWANIE MAPY Z PLIKU *.MAP
		$file = FileOpen("Maps\Map_01.map", 0)

		For $y = 0 To 8
			For $x = 0 To 13
				;WCZYTANIE WEJSC I WYJSC Z KOMNATY
				$linia = FileReadLine($file, $id + 1)
				$wejscia = StringMid($linia, 1, 4)

				;ZAŁADOWANIE OBRAZKA O PODANYCH ATRYBUTACH
				$Temple[$x][$y][0] = _GDIPlus_ImageLoadFromFile("Img\Temple\Komnata_" & $wejscia & ".jpg")
				_GDIPlus_GraphicsDrawImageRect($Graphic, $Temple[$x][$y][0], $x * 50, $y * 50, 50, 50); rysuje komnaty

				;DODATKOWE INFORMACJE ODNOSNIE KOMNATY
				$Temple[$x][$y][1] = StringMid($linia, 1, 1)
				$Temple[$x][$y][2] = StringMid($linia, 2, 1)
				$Temple[$x][$y][3] = StringMid($linia, 3, 1)
				$Temple[$x][$y][4] = StringMid($linia, 4, 1)

				$Temple[$x][$y][5] = StringMid($linia, 5, 1)
				$Temple[$x][$y][6] = StringMid($linia, 6, 1)
				$Temple[$x][$y][7] = StringMid($linia, 7, 1)

				;ID ++
				$id += 1
			Next
		Next
	Case "panel"
		;PANEL
		Global $Panel = _GDIPlus_ImageLoadFromFile("Img\Panel.png"); ładuje obrazek panelu
		_GDIPlus_GraphicsDrawImageRect($Graphic, $Panel, 0, 450, 700, 50); rysuje obrazek panelu

		;BUTTON
		Global $Postac = _GUICtrlButton_Create($GUI, "POSTAĆ", 600, 460, 90, 30)
		_GUICtrlButton_SetImage($Postac, "Img\Buttons\Postac.jpg")

		;STRINGI
		Global $hBrush = _GDIPlus_BrushCreateSolid(); tworzy pedzel
		Global $hFormat = _GDIPlus_StringFormatCreate(0x0001); tworzy format stringa
		Global $hFamily = _GDIPlus_FontFamilyCreate("Arial"); tworzy rodzine czcionki
		Global $hFont = _GDIPlus_FontCreate($hFamily, 9); tworzy czcionke

		$tLayout = _GDIPlus_RectFCreate(65, 468, 90, 0); tworzy miejsce na string
		$aInfo = _GDIPlus_GraphicsMeasureString($Graphic, $Player[3], $hFont, $tLayout, $hFormat); tworzy info o stringu
		Global $GOLD_string = _GDIPlus_GraphicsDrawStringEx($Graphic, $Player[3], $hFont, $aInfo[0], $hFormat, $hBrush); rysuje string

		$tLayout = _GDIPlus_RectFCreate(207, 469, 25, 0); tworzy miejsce na string
		$aInfo = _GDIPlus_GraphicsMeasureString($Graphic, $Player[4], $hFont, $tLayout, $hFormat); tworzy info o stringu
		Global $HP_string = _GDIPlus_GraphicsDrawStringEx($Graphic, $Player[4], $hFont, $aInfo[0], $hFormat, $hBrush); rysuje string

		$tLayout = _GDIPlus_RectFCreate(301, 469, 25, 0); tworzy miejsce na string
		$aInfo = _GDIPlus_GraphicsMeasureString($Graphic, $Player[5], $hFont, $tLayout, $hFormat); tworzy info o stringu
		Global $MP_string = _GDIPlus_GraphicsDrawStringEx($Graphic, $Player[5], $hFont, $aInfo[0], $hFormat, $hBrush); rysuje string
EndSwitch
EndFunc   ;==>create

Func walka($i)

EndFunc   ;==>walka

Func skrzynia($i)

EndFunc   ;==>skrzynia

Func fabula($i)

EndFunc   ;==>fabula

Func WM_PAINT($hwnd, $msg, $wParam, $lParam)
refresh_screen()

Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_PAINT

Func WM_COMMAND($hwnd, $msg, $wParam, $lParam)
$hiword = _WinAPI_HiWord($wParam)
$loword = _WinAPI_LoWord($wParam)


Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND

Func WM_KEYDOWN($hwnd, $msg, $znak, $lParam)
;~ 	ConsoleWrite(Hex($znak) & @CRLF)

If Hex($znak) = "00000023" Then Exit; END

Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_KEYDOWN

Func refresh_screen()
_WinAPI_RedrawWindow($GUI, 0, 0, $RDW_UPDATENOW)

;TEMPLE
For $y = 0 To 8
	For $x = 0 To 13
		_GDIPlus_GraphicsDrawImageRect($Graphic, $Temple[$x][$y][0], $x * 50, $y * 50, 50, 50); rysuje komnaty
	Next
Next

;PLAYER
_GDIPlus_GraphicsDrawImageRect($Graphic, $Player[0], $Player[1] * 50, $Player[2] * 50, 50, 50)

;PANEL
_GDIPlus_GraphicsDrawImageRect($Graphic, $Panel, 0, 450, 700, 50)

;STRINGI
_GDIPlus_StringFormatDispose($GOLD_string)
$tLayout = _GDIPlus_RectFCreate(65, 468, 90, 0)
$aInfo = _GDIPlus_GraphicsMeasureString($Graphic, $Player[3], $hFont, $tLayout, $hFormat)
Global $GOLD_string = _GDIPlus_GraphicsDrawStringEx($Graphic, $Player[3], $hFont, $aInfo[0], $hFormat, $hBrush)

_GDIPlus_StringFormatDispose($HP_string)
$tLayout = _GDIPlus_RectFCreate(207, 469, 25, 0)
$aInfo = _GDIPlus_GraphicsMeasureString($Graphic, $Player[4], $hFont, $tLayout, $hFormat)
Global $HP_string = _GDIPlus_GraphicsDrawStringEx($Graphic, $Player[4], $hFont, $aInfo[0], $hFormat, $hBrush)

_GDIPlus_StringFormatDispose($MP_string)
$tLayout = _GDIPlus_RectFCreate(301, 469, 25, 0)
$aInfo = _GDIPlus_GraphicsMeasureString($Graphic, $Player[5], $hFont, $tLayout, $hFormat)
Global $MP_string = _GDIPlus_GraphicsDrawStringEx($Graphic, $Player[5], $hFont, $aInfo[0], $hFormat, $hBrush)

_WinAPI_RedrawWindow($GUI, 0, 0, $RDW_VALIDATE)

;~ 	_GUICtrlButton_Show($Postac, 0)
;~ 	_GUICtrlButton_Show($Postac, 1)
EndFunc   ;==>refresh_screen

Func WM_LBUTTONDOWN($hwnd, $msg, $lParam, $wParam)
$x = _WinAPI_LoWord($wParam); pobiera parametr loword z $WParam
$y = _WinAPI_HiWord($wParam); pobiera parametr hiword z $WParam

$x = Round($x, -1); zaokragla $x do czesci dec
$y = Round($y, -1); zaokragla $y do czesci dec

$tmp = $x; zaokragla do 50
If Not ($tmp < 50) Then; zaokragla do 50
	Do; zaokragla do 50
		$tmp -= 50; zaokragla do 50
	Until $tmp < 50; zaokragla do 50
EndIf; zaokragla do 50
$x -= $tmp; zaokragla do 50

$tmp = $y; zaokragla do 50
If Not ($tmp < 50) Then; zaokragla do 50
	Do; zaokragla do 50
		$tmp -= 50; zaokragla do 50
	Until $tmp < 50; zaokragla do 50
EndIf; zaokragla do 50
$y -= $tmp; zaokragla do 50

$x /= 50; ustawia $x jako wspolrzedna
$y /= 50; ustawia $y jako wspolrzedna

If ((($x >= 0) And ($x <= 13)) And (($y >= 0) And ($y <= 8))) Then; sprawdza czy kliknal w mape
	If (($x = $Player[1] - 1) And ($y = $Player[2])) Or (($x = $Player[1]) And ($y = $Player[2] - 1)) Or (($x = $Player[1] + 1) And ($y = $Player[2])) Or (($x = $Player[1]) And ($y = $Player[2] + 1)) Then; sprawdza czy kliknal w komnate obok

		$ok = False; ustawia pozwolenie na poruszenie sie na False (0)

		If (($x = $Player[1] - 1) And ($y = $Player[2])) Then; jesli to jest komnata na lewo
			If $Temple[$x][$y][2] Then $ok = True; jesli jest wejscie to moze wejsc
		EndIf

		If (($x = $Player[1]) And ($y = $Player[2] - 1)) Then; jesli to jest komnata na gorze
			If $Temple[$x][$y][3] Then $ok = True; jesli jest wejscie to moze wejsc
		EndIf

		If (($x = $Player[1] + 1) And ($y = $Player[2])) Then; jesli to jest komnata na prawo
			If $Temple[$x][$y][4] Then $ok = True; jesli jest wejscie to moze wejsc
		EndIf

		If (($x = $Player[1]) And ($y = $Player[2] + 1)) Then; jesli to jest komnata na dole
			If $Temple[$x][$y][1] Then $ok = True; jesli jest wejscie to moze wejsc
		EndIf

		If $ok Then; jesli ma pozwolenie na wejscie to...

			$Player[1] = $x; ustawia wspolrzedne obecnej komnaty
			$Player[2] = $y; ustawia wspolrzedne obecnej komnaty

			refresh_screen(); odswierza ekran

			If $Temple[$x][$y][5] > 0 Then walka($Temple[$x][$y][5]); jesli jest potwor to z nim walczy
			If $Temple[$x][$y][6] > 0 Then skrzynia($Temple[$x][$y][6]); jesli jest skrzynia to otwiera
			If $Temple[$x][$y][7] > 0 Then fabula($Temple[$x][$y][7]); jesli ta komnata to watek fabuly to go odtwarza
		EndIf
	EndIf
;~ 	ElseIf $x = $Player[1] And $y = $Player[2] Then
;~ 		show_menu()
EndIf
;~ 	ToolTip($x & ", " & $y & @CRLF & $obecna_komnata[0] & ", " & $obecna_komnata[1])
EndFunc   ;==>WM_LBUTTONDOWN

Func show_menu()

EndFunc   ;==>show_menu

To jest dopiero początek gry więc jeszcze niedopracowana i prawie nic nie ma :)

 

Problem jest z _GUICtrlButton_Create...

Nie wiem czemu, ale nie mogę tworzyć elementów GUI, bo inaczej mi nie działa GUIRegister :(

Opublikowano

tak nie ,ze jak ktos kliknie w lewy rog obrazka to jak to wykryjesz ?

Musza byc 4 ify ktore sprawdzaja czy klikniecie jest ponizej gornej krawedzi obrazka , sprawdzenie czy powyzej dolnej ,dalej w lewo niz lewa krawedz obrazka,blizej w lewo niz prawa krawedz obrazka ,

wszystkie warunki musza byc spelnione

Opublikowano

Pozwól, że podzielę się z Tobą moją funkcją WM_LBUTTONDOWN :)

 

Func WM_LBUTTONDOWN($hwnd, $msg, $lParam, $wParam)
$x = _WinAPI_LoWord($wParam); pobiera parametr loword z $WParam
$y = _WinAPI_HiWord($wParam); pobiera parametr hiword z $WParam

If $mode = "mapa" Then

	$tmp = $x;zaokragal do 50
	If Not ($tmp < 50) Then;zaokragal do 50
		Do;zaokragal do 50
			$tmp -= 50;zaokragal do 50
		Until $tmp < 50;zaokragal do 50
	EndIf;zaokragal do 50
	$x -= $tmp;zaokragal do 50

	$tmp = $y;zaokragal do 50
	If Not ($tmp < 50) Then;zaokragal do 50
		Do;zaokragal do 50
			$tmp -= 50;zaokragal do 50
		Until $tmp < 50;zaokragal do 50
	EndIf;zaokragal do 50
	$y -= $tmp;zaokragal do 50

	$x /= 50; ustawia $x jako wspolrzedna
	$y /= 50; ustawia $y jako wspolrzedna

	If ((($x >= 0) And ($x <= 13)) And (($y >= 0) And ($y <= 8))) Then; sprawdza czy kliknal w mape
		If (($x = $Player[1] - 1) And ($y = $Player[2])) Or (($x = $Player[1]) And ($y = $Player[2] - 1)) Or (($x = $Player[1] + 1) And ($y = $Player[2])) Or (($x = $Player[1]) And ($y = $Player[2] + 1)) Then; sprawdza czy kliknal w komnate obok

			$ok = False; ustawia pozwolenie na poruszenie sie na False (0)

			If (($x = $Player[1] - 1) And ($y = $Player[2])) Then; jesli to jest komnata na lewo
				If $Temple[$x][$y][2] Then $ok = True; jesli jest wejscie to moze wejsc
			EndIf

			If (($x = $Player[1]) And ($y = $Player[2] - 1)) Then; jesli to jest komnata na gorze
				If $Temple[$x][$y][3] Then $ok = True; jesli jest wejscie to moze wejsc
			EndIf

			If (($x = $Player[1] + 1) And ($y = $Player[2])) Then; jesli to jest komnata na prawo
				If $Temple[$x][$y][4] Then $ok = True; jesli jest wejscie to moze wejsc
			EndIf

			If (($x = $Player[1]) And ($y = $Player[2] + 1)) Then; jesli to jest komnata na dole
				If $Temple[$x][$y][1] Then $ok = True; jesli jest wejscie to moze wejsc
			EndIf

			If $ok Then; jesli ma pozwolenie na wejscie to...

				$Player[1] = $x; ustawia wspolrzedne obecnej komnaty
				$Player[2] = $y; ustawia wspolrzedne obecnej komnaty

				refresh_screen(); odswierza ekran
				walka(1)
				If $Temple[$x][$y][5] > 0 Then walka($Temple[$x][$y][5]); jesli jest potwor to z nim walczy
				If $Temple[$x][$y][6] > 0 Then skrzynia($Temple[$x][$y][6]); jesli jest skrzynia to otwiera
				If $Temple[$x][$y][7] > 0 Then fabula($Temple[$x][$y][7]); jesli ta komnata to watek fabuly to go odtwarza
			EndIf
		ElseIf ($x = $Player[1]) And ($y = $Player[2]) Then
			show_menu()
		Else
			ToolTip($x & ", " & $y & @CRLF & $Player[1] & ", " & $Player[2])
		EndIf
	EndIf

ElseIf $mode = "walka" Then

	If $can_attack Then
		If ($x > 10 And $x < 130) Then
			If ($y > 110 And $y < 160) Then; KLIKA ATAK
				MsgBox(0, "Klikanales", "ATAK")
			ElseIf ($y > 169 And $y < 219) Then; KLIKA CZAR I
				MsgBox(0, "Klikanales", "CZAR I")
			ElseIf ($y > 228 And $y < 278) Then; KLIKA CZAR II
				MsgBox(0, "Klikanales", "CZAR II")
			ElseIf ($y > 287 And $y < 337) Then; KLIKA CZAR III
				MsgBox(0, "Klikanales", "CZAR III")
			ElseIf ($y > 346 And $y < 396) Then; KLIKA UCIECZKE
				MsgBox(0, "Klikanales", "Ucieczke")
				wstecz("walka")
			EndIf
		EndIf
	EndIf

ElseIf $mode = "menu" Then

	;JESLI KLIKNIE WSTECZ
	If (($x > 33 And $x < 182) And ($y > 421 And $y < 481)) Then wstecz("menu")

	;DODAWANIA ATRYBUTOW
	If ($x > 11 And $x < 31) Then
		If ($y > 181 And $y < 199) Then atr_add(1); SILA
		If ($y > 247 And $y < 265) Then atr_add(2); WITALNOSC
		If ($y > 313 And $y < 331) Then atr_add(3); INTELIGENCJA
		If ($y > 379 And $y < 397) Then atr_add(4); ZRECZNOSC
	EndIf

EndIf
EndFunc   ;==>WM_LBUTTONDOWN

 

Wszystko pięknie śmiga już od dawna :)

Opublikowano

[qute name=hfaua]Nie wiem czemu, ale nie mogę tworzyć elementów GUI, bo inaczej mi nie działa GUIRegister

 

Możesz, tylko wtedy focusa będą miały te elementy, ergo focua nie będzie miało GUI ergo WM_KEYDOWN będzie wysyłany do elementów gui a nie do samego gui, gdzie go zarejetrowałeś...

 

Podawałem ci rozwiązanie - jedyne tego - używając setwindowhook...

 

- - - -

 

tak nie ,ze jak ktos kliknie w lewy rog obrazka to jak to wykryjesz ?

Musza byc 4 ify ktore sprawdzaja czy klikniecie jest ponizej gornej krawedzi obrazka , sprawdzenie czy powyzej dolnej ,dalej w lewo niz lewa krawedz obrazka,blizej w lewo niz prawa krawedz obrazka ,

wszystkie warunki musza byc spelnione

 

O nie, cztery ify w programie! Wszyscy zginiemy, a nasze szczątki spłoną w ogniach palącego się procesora!

Ta sygnatura jest pusta.

Opublikowano

co tu dużo mówic ale 4 ify przy 20 elementach to 60 ifów

pomijająć czytelność to optymalność znacznie spada

a takie nastawienie jakie ty 4gr prezentujesz powinno się tępić

'co mnie obchodzi wydajność, dzisiejsze procesory są tak szybkie ze nie będzie różnicy'

nic bardziej mylnego

Opublikowano

haufa nie , mylisz sie to 4gr zaproponowała ,a ja napisałem że to jest be

Opublikowano

Dopiero teraz napisałeś, że jest be :)

Musza byc 4 ify ktore sprawdzaja czy klikniecie jest ponizej gornej krawedzi obrazka , sprawdzenie czy powyzej dolnej ,dalej w lewo niz lewa krawedz obrazka,blizej w lewo niz prawa krawedz obrazka ,

wszystkie warunki musza byc spelnione

Opublikowano

mpcforum.pl/topic/275155-klikniecie-obrazka-gdiplus/page__view__findpost__p__1903172

 

potem tłumaczyłem dlaczego 4 ify bo twierdziłeś że to bzdura

Opublikowano
co tu dużo mówic ale 4 ify przy 20 elementach to 60 ifów

 

Kurde, usiadłem sobie do kalkulatorka, i tak sobie liczę, liczę i ciągle wychodzi mi 80 :|

 

Z jakiego korzystasz? Bo może pora się przerzucić z windowsowskiego na coś bardziej zaawansowanego?

 

W każdym razie:

60 ifów - wszyscy zginiemy...

 

Wiem, że mi się nie uda, dlatego nawet nie zaczynam prób wytłumaczenia Ci irracjonalnego twojego strachu przed dużą ilością instrukcji warunkowych. Związek między optymalnością a różnymi rozwiązaniami tego problemu jest praktycznie zerowy.

Ta sygnatura jest pusta.

Opublikowano

'Wiem, że mi się nie uda, dlatego

nawet nie zaczynam prób

wytłumaczenia Ci irracjonalnego

twojego strachu przed dużą

ilością instrukcji warunkowych.'

 

Chcesz tłumaczyć mi irracjonalny mój strach?

 

Nie próbuj , choć mogłoby być śmiesznie

 

A, i jeszcze jedno , jeżeli myślisz że jestes zajebisty bo zgnoisz paru początkujących to się mylisz , jeśli myslisz że jesteś zajebista w autoit i ogólnie we wszystkim to też się mylisz

 

 

jeżeli myślisz że nabierasz wszystkich że jestes kobietą to przykro za głupi jestes by to mogło się udać

 

nie wiem , dowartościowujesz się?

Sprawia ci przyjemność wyśmiewanie sie z słabszych ?

Lubisz te uczucie wyższości?

Podnieca cie to ?

WYPIERDALAJ, PORADZIMY SOBIE BEZ CIEBIE

Opublikowano

nie potrzebnie zaczynacie flamewara... za off nie polecą % lecz za obrazy rażące w oczy tak

jeżeli myślisz że nabierasz wszystkich że jestes kobietą to przykro za głupi jestes by to mogło się udać

jednak się udaje

jeśli myslisz że jesteś zajebista w autoit i ogólnie we wszystkim to też się mylisz
bo zgnoisz paru początkujących to się mylisz

wybacz ale to jest bardzo potrzebne w tym dziale... lecz jeżeli nic nie wnosi do tematu to co innego

patrząc na post #16 temat do zamknięcia

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...