Что нового

[Элементы GUI] Наслаивание одной картинки на другую при перемещении, передний, задний план

Статус
Закрыто для дальнейших ответов.

mmsgeorge

Новичок
Сообщения
96
Репутация
0
Здравствуйте! Я создал 10 картинок, при перемещении первой , она всегда идет за другими, то есть на заднем плане. То есть все картинки , которые были созданы, позже предыдущей, идут на переднем плане, а те которые были созданы ранее , идут на заднем плане.
Вопрос: как сделать, чтобы картинка , когда я ее захватываю и перемещаю , шла на передний план?
 
Автор
M

mmsgeorge

Новичок
Сообщения
96
Репутация
0
не уж то никто не знает? я и пробовал в цикле выключать все остальные картинки GUICtrlSetState ( $fotka[$i],$GUI_DISABLE) , а та которая сейчас перемещается мышкой, активируется GUICtrlSetState ( @GUI_CtrlId,$GUI_ENABLE). все равно , та фотография , которые была создана ранее, идет на заднем плане перед другими, которые созданы после этой. Может есть функция, которая создает порядок (передний , задний план) для фотографий. Фотографии просто создаются на фон (GUI окно, на котором другая картинка с параметром GUICtrlSetState ( $pic_dobavit_kartinku1,$GUI_DISABLE)
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
mmsgeorge
исходный код сюда и тогда, может быть, что-то можно придумать
 
Автор
M

mmsgeorge

Новичок
Сообщения
96
Репутация
0
joiner
а толку то от кода, он очень большой , с разными функциями, я не знаю даже как удобно и вырезать, что надо и что не надо. Просто рылся и вообще ничего не нашел по поводу картинок и перемещения на передний задний план, но раз просите код, выложу, но это без смысла. Выкладывать буду кусками.
Код:
Func OK_dovavit_list()
	GUIDelete($GLNovosti)
	global $GL_dobavit_novost = GUICreate("Добавить новость",  860, 580, -1, -1, -1, $WS_EX_ACCEPTFILES) 
	GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSE_okno_dobavit_novosti")
global $pic_dobavit_kartinku = GUICtrlCreatePic("", 0, 0, 860, 580)
GUISetOnEvent($GUI_EVENT_DROPPED, "peretaskivanie_dobavit_kartinku")
 GUICtrlSetState ( $pic_dobavit_kartinku,$GUI_DISABLE)

$pic_dobavit_kartinku1 = GUICtrlCreatePic("C:\Users\Lilu\Pictures\Проблема1.jpg", 50, 0, 860, 300)

 GUICtrlSetState ( $pic_dobavit_kartinku1,$GUI_DISABLE)

global $label_suda = GUICtrlCreateLabel("Перетащите сюда картинки", 20, 20, 660,200,$SS_CENTER)
GUICtrlSetBkColor($label_suda, $GUI_BKCOLOR_TRANSPARENT)
 GUICtrlSetFont ( $label_suda,30 )
GUICtrlSetState ( $pic_dobavit_kartinku , $GUI_DROPACCEPTED)
GUISwitch($GL_dobavit_novost)
GUISetState(@SW_SHOW)
EndFunc


Код:
Func peretaskivanie_dobavit_kartinku()
global $schet
local $ii,$jj,$x,$y
	For $i = 0 To UBound($gaDropFiles) - 1 ; ubound - количество элементов при перетаскивании

	 if $schet>5 then
		  $x=($schet-6)*130
		  $y=130
	 else
		 $x=($schet-1)*130
		  $y=0
	 EndIf
$fotka[$schet]=GUICtrlCreatePic ($gaDropFiles[$i],10+$x, 10+$y, 120,120,-1,$WS_EX_TOPMOST)
GUICtrlSetCursor($fotka[$schet], 0)
 GUICtrlSetStyle ($fotka[$schet],-1,$WS_EX_TOPMOST )
 GUICtrlSetOnEvent ( $fotka[$schet], "peremeshenie_kartinki" )
 $schet=$schet+1
	Next
if $schet>0 then
GUICtrlSetState ( $label_suda,$GUI_HIDE)
Else
GUICtrlSetState ( $label_suda,$GUI_SHOW)
EndIf

GUISetState()
GUISetState(@SW_SHOW)
EndFunc


Код:
Func peremeshenie_kartinki()
 Local $regim_koordinat_mouse = Opt("MouseCoordMode", 2)

    Local $informaciya_okna = GUIGetCursorInfo($GL_dobavit_novost)
    Local $informaciya_objekta, $informaciya_mouse, $novaya_x_pos, $novaya_y_pos

    If IsArray($informaciya_okna) And $informaciya_okna[2] = 1 And $informaciya_okna[4] = @GUI_CtrlId Then
GUICtrlSetPos ( @GUI_CtrlId, -1 ,-1,75,75)

		  $informaciya_okna = GUIGetCursorInfo($GL_dobavit_novost)
            $informaciya_objekta = ControlGetPos($GL_dobavit_novost, "", @GUI_CtrlId)
            $informaciya_mouse = MouseGetPos()
		$velx= $informaciya_mouse[0]-$informaciya_objekta[0]
$vely= $informaciya_mouse[1]-$informaciya_objekta[1]
        While IsArray($informaciya_okna) And $informaciya_okna[2] = 1

            $informaciya_okna = GUIGetCursorInfo($GL_dobavit_novost)
            $informaciya_objekta = ControlGetPos($GL_dobavit_novost, "", @GUI_CtrlId)
            $informaciya_mouse = MouseGetPos()

            $novaya_x_pos = $informaciya_mouse[0]-($informaciya_objekta[2]/2)
            $novaya_y_pos = $informaciya_mouse[1]-($informaciya_objekta[3]/2)

if $novaya_x_pos <> $informaciya_objekta[0] or  $novaya_x_pos <> $informaciya_objekta[1] then
                GUICtrlSetPos(@GUI_CtrlId, $novaya_x_pos, $novaya_y_pos)

                Sleep(50)
Else
			 Sleep(10)
EndIf
        WEnd
    EndIf

GUICtrlSetPos ( @GUI_CtrlId, -1 ,-1,120,120)

   Opt("MouseCoordMode", $regim_koordinat_mouse)
EndFunc
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
думаю, как самый простой вариант

Код:
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <Misc.au3>
Global $oDict = ObjCreate('Scripting.Dictionary')
$oDict.CompareMode = 1
HotKeySet('{ESC}', '_exit')
Local $hDLL = DllOpen("user32.dll")
Local $PP = @ScriptDir & '\'
Local $array[6] = [$PP & '1.jpg', $PP & '2.jpg', $PP & '3.jpg', $PP & '4.jpg', $PP & '5.jpg', $PP & '6.jpg']
Global $aInfo, $msg, $WX, $WY, $PC, $pic, $XD, $YD, $WX1 = 0, $WY1, $XDD, $YDD, $KV
Local $Form1 = GUICreate("Form1", 500, 500, -1, -1,$WS_CLIPCHILDREN + $WS_CLIPSIBLINGS), $n = 0
GUISetState()
Local $pic

For $i = 0 To 5
	$pic = GUICtrlCreatePic('', $WX1, $WY1, 100, 100)
	GUICtrlSetState(-1,$GUI_DISABLE)
	GUICtrlSetImage($pic, $array[$i])
	$oDict.Add($pic, $array[$i])
	If $WX1 = 400 Then
		$WX1 = 0
		$WY1 += 100
	Else
		$WX1 += 100
	EndIf
Next

While 1
	If _IsPressed('01', $hDLL) Then
		$aInfo = GUIGetCursorInfo($Form1)
		If $aInfo[4] Then
			If $oDict.Exists($aInfo[4]) Then
				$ID = $aInfo[4]
				$KV = $oDict.Item($ID)
				$oDict.Remove($ID)
				$PC = ControlGetPos($Form1, '', $ID)
				$XD = $aInfo[0] - $PC[0]
				$YD = $aInfo[1] - $PC[1]
				GUICtrlDelete($ID)
				$ID = GUICtrlCreatePic($KV, $aInfo[0], $aInfo[1], $PC[2], $PC[3])
				GUICtrlSetState(-1,$GUI_DISABLE)
				$oDict.Add($ID, $KV)
				While _IsPressed('01', $hDLL)
					GUICtrlSetPos($ID, $XDD, $YDD, $PC[2], $PC[3])
					$aInfo = GUIGetCursorInfo($Form1)
					$XDD = $aInfo[0] - $XD
					$YDD = $aInfo[1] - $YD
					If $XDD <= 0 Then
						$XDD = 0
					ElseIf $XDD >= 500 - $PC[2] Then
						$XDD = 500 - $PC[2]
					EndIf
					If $YDD <= 0 Then
						$YDD = 0
					ElseIf $YDD >= 500 - $PC[3] Then
						$YDD = 500 - $PC[3]
					EndIf
					Sleep(1)
				WEnd
			EndIf
		EndIf
	EndIf
	Sleep(1)
WEnd

Func _exit()
	Exit
EndFunc   ;==>_exit
здесь я использовал картинки 100х100.

еще вариант - создать дочернее окно
Код:
$GP = GUICreate('', 0, 0, 0, 0,  $WS_POPUP,  $WS_EX_MDICHILD, $Form1)
$PGP = GUICtrlCreatePic('', 0, 0, 0, 0); размеры элемента должны быть равны размерам окна и равны размерам картинки
GUISetState(@SW_HIDE, $GP)

при перетаскивании картинки прятать исходную картинку , показать дочернее окно и в это окно вставить саму картинку, как только отпустили клавишу мыши,удаляем скрытый объект с картинкой и создаем новый по новым координатам, вставляем картинку, прячем дочернее окно. ну и так далее.
есть визуальная "неприятность" - будет мигать заголовок родительского окна, так как при появлении дочернего родительское потеряет фокус, но можно и родительское окно сделать со стилем $WS_POPUP и доделать ему заголовок
 
Автор
M

mmsgeorge

Новичок
Сообщения
96
Репутация
0
joiner
Благодарю, буду реализовывать. А можешь пожалуйста подкинуть информацию про библиотеку user32.dll, для меня пока темный лес. Твой скрипт понял, сейчас буду подстраивать, видоизменять.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
mmsgeorge
смотри в справке функцию
Код:
_IsPressed
 
Автор
M

mmsgeorge

Новичок
Сообщения
96
Репутация
0
joiner
именно про библиотеки и именно про эту, так как я понял, что $ID там не с первого начинается, охота структуру понять, так как в будущем пригодятся функции winapi, в кликермане вообще удобно было сделано, а тут нужно как через dllcal вызывать, то есть чтобы в привязке делать, параллельно работе за компьютером.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
в данном примере библиотека используется только для проверки нажатия мыши.
$ID - это идентификатор элемента. элементы пересоздаются при клике. в окне "верхний" элемент это созданный последним. все остальное это регистрирование перемещения внутри окна.
по winapi масса материала на форуме.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
mmsgeorge
раз просите код, выложу, но это без смысла
От этих кусков кода действительно смысла нет. Вас просили сделать небольшой рабочий пример, который бы помог увидеть вашу проблему.

Вот вариант создания и перемещения картинок. Смысл в создании дочернего окна со стилем $WS_EX_CONTROLPARENT, позволяющим перетаскивать окно за клиентскую область. Но картинка в этом случае должна быть заблокирована. Функции WinAPI в данном случае перемещают дочернее окно на самый верх
Код:
#include <GuiConstants.au3>
#include <ScreenCapture.au3>

For $i = 0 To 3
  _ScreenCapture_Capture(@ScriptDir & "\TempScr" & $i & ".jpg", $i * 100, $i * 100, $i * 100 + 100, $i * 100 + 100)
Next

Global $aPics[4]

$GUI = GUICreate("")
GUISetState()
For $i = 0 To 3
  GUICreate("", 100, 100, 100 * $i, 100 * $i, $WS_CHILD, $WS_EX_CONTROLPARENT, $GUI)
  $aPics[$i] = GUICtrlCreatePic(@ScriptDir & "\TempScr" & $i & ".jpg", 0, 0, 0, 0)
  GUISetState()
Next

Do
  $Msg = GUIGetMsg()
  Switch $Msg
    Case $aPics[0] To $aPics[3]
      $aRet = DllCall("user32.dll", "hwnd", "GetParent", "hwnd", GUICtrlGetHandle($Msg))
      If Not @error Then DllCall("user32.dll", "bool", "BringWindowToTop", "hwnd", $aRet[0])
      GUICtrlSetState($Msg, $GUI_DISABLE)
      MouseDown("left")
      Do
        Sleep(10)
      Until Not GUIGetCursorInfo($GUI)[2]
      GUICtrlSetState($Msg, $GUI_ENABLE)
    Case -3
      Exit
  EndSwitch
Until 0
 
Автор
M

mmsgeorge

Новичок
Сообщения
96
Репутация
0
Вообщем, вы меня не поняли, я просил вообщем прочитать про библиотеку, а не про данный случай. Как пока интуитивно я понимаю , она отвечает за обьекты. Просто я в гугле вбил, а там все про вирусы связанные с этой библиотекой.


Добавлено:
Сообщение автоматически объединено:

InnI
Благодарю, посмотрю, буду использовать вариант joiner так-как уже сделал его. Только вот интересует зачем у него в окде такие моменты GUICtrlSetState(-1,$GUI_DISABLE) если я отключу картинку , то у меня фон выйдет на передний план. хотя буду еще разбираться. если оставить стили Local $Form1 = GUICreate("Form1", 500, 500, -1, -1,$WS_CLIPCHILDREN + $WS_CLIPSIBLINGS) - WS_CLIPCHILDREN + $WS_CLIPSIBLINGS, то появляется шлейф при перемещении.
Смотрите , я включал , режимы для drag&drop + режим использовался, чтобы перетаскивать сразу несколько файлов. Если включать WS_CLIPCHILDREN + $WS_CLIPSIBLINGS, все глючит, но за то нету мерцания и плавно, завтра буду еще химичить, а то без них мерцаниия, если ставить задержку. пропадает плавность.


Добавлено:
Сообщение автоматически объединено:

InnI
Посмотри вот так, твой код но под то, что мне надо. Посмотри что происходит.
Код:
#include <GuiConstants.au3>
#include <ScreenCapture.au3>

For $i = 0 To 3
  _ScreenCapture_Capture(@ScriptDir & "\TempScr" & $i & ".jpg", $i * 100, $i * 100, $i * 100 + 100, $i * 100 + 100)
Next
For $h = 0 To 1
  _ScreenCapture_Capture(@ScriptDir & "\TempScr" & $i & ".jpg", $i * 100, $i * 100, $i * 100 + 100, $i * 100 + 100)
Next

Global $aPics[4]

$GUI = GUICreate("",-1, -1, -1, -1,-1,  $WS_EX_ACCEPTFILES)
global $pic_dobavit_kartinku = GUICtrlCreatePic(@ScriptDir & "\TempScr" & $h & ".jpg", 0, 0, 860, 580)
 GUICtrlSetState ( $pic_dobavit_kartinku,$GUI_DISABLE)
 GUICtrlSetState ( $pic_dobavit_kartinku , $GUI_DROPACCEPTED)
GUISetState()
For $i = 0 To 3
  GUICreate("", 100, 100, 100 * $i, 100 * $i, $WS_CHILD, $WS_EX_CONTROLPARENT, $GUI)
  $aPics[$i] = GUICtrlCreatePic(@ScriptDir & "\TempScr" & $i & ".jpg", 0, 0, 0, 0)
  GUISetState()
Next

Do
  $Msg = GUIGetMsg()
  Switch $Msg
    Case $aPics[0] To $aPics[3]
      $aRet = DllCall("user32.dll", "hwnd", "GetParent", "hwnd", GUICtrlGetHandle($Msg))
      If Not @error Then DllCall("user32.dll", "bool", "BringWindowToTop", "hwnd", $aRet[0])
      GUICtrlSetState($Msg, $GUI_DISABLE)
      MouseDown("left")
      Do
        Sleep(10)
      Until Not GUIGetCursorInfo($GUI)[2]
      GUICtrlSetState($Msg, $GUI_ENABLE)
    Case -3
      Exit
  EndSwitch
Until 0

Добавление картинок, происходит по такому скрипту, который брал с форума.
Код:
Func WM_DROPFILES_FUNC($hWnd, $msgID, $wParam, $lParam)

	;GUICtrlSetState($otobragenie_kartinki,$GUI_ENABLE)
    Local $nSize, $pFileName
   Local $nAmt = DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", 0xFFFFFFFF, "ptr", 0, "int", 255)

	For $i = 0 To $nAmt[0] - 1
		 ;$schet=$schet+1
        $nSize = DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", $i, "ptr", 0, "int", 0)
        $nSize = $nSize[0] + 1
        $pFileName = DllStructCreate("char[" & $nSize & "]")
        DllCall("shell32.dll", "int", "DragQueryFile", "hwnd", $wParam, "int", $i, "ptr", DllStructGetPtr($pFileName), "int", $nSize)
        ReDim $gaDropFiles[$i+1]
        $gaDropFiles[$i] = DllStructGetData($pFileName, 1)
        $pFileName = 0
    Next
EndFunc
ну то есть нахождение пути
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
mmsgeorge
вы меня не поняли
- Между прочим, Вы меня не так поняли.
- Да как же тебя понять, коль ты не говоришь ничего.
("Иван Васильевич меняет профессию")


зачем у него в коде такие моменты
Так вы у него и спросите.

код под то, что мне надо
Пробуйте. Поддержка перетаскивания файлов без доп. функций
Код:
#include <GuiConstants.au3>
#include <ScreenCapture.au3>

Global $aPics[4], $iW = 400, $iH = 400

_ScreenCapture_Capture(@ScriptDir & "\TempScrBack.jpg", 100, 100, $iW, $iH)
For $i = 0 To 3
  _ScreenCapture_Capture(@ScriptDir & "\TempScr" & $i & ".jpg", $i * 100, $i * 100, $i * 100 + 100, $i * 100 + 100)
Next

$GUI = GUICreate("", $iW, $iH, -1, -1, -1, $WS_EX_ACCEPTFILES)
GUICreate("", $iW, $iH, 0, 0, $WS_CHILD, -1, $GUI)
$pic_dobavit_kartinku = GUICtrlCreatePic(@ScriptDir & "\TempScrBack.jpg", 0, 0, $iW, $iH)
GUICtrlSetState(-1, BitOR($GUI_DISABLE, $GUI_DROPACCEPTED))
GUISetState()
For $i = 0 To 3
  GUICreate("", 100, 100, 100 * $i, 100 * $i, $WS_CHILD, $WS_EX_CONTROLPARENT, $GUI)
  $aPics[$i] = GUICtrlCreatePic(@ScriptDir & "\TempScr" & $i & ".jpg", 0, 0, 0, 0)
  GUISetState()
  ChildToTop($aPics[$i])
Next
GUISetState(@SW_SHOW, $GUI)

Do
  $Msg = GUIGetMsg()
  Switch $Msg
    Case $aPics[0] To $aPics[3]
      ChildToTop($Msg)
      GUICtrlSetState($Msg, $GUI_DISABLE)
      MouseDown("left")
      While GUIGetCursorInfo($GUI)[2]
      WEnd
      GUICtrlSetState($Msg, $GUI_ENABLE)
    Case $GUI_EVENT_CLOSE
      Exit
    Case $GUI_EVENT_DROPPED
      MsgBox(0, "Drag", @GUI_DragFile, 0, $GUI)
  EndSwitch
Until 0

Func ChildToTop($ChildId)
  Local $aRet = DllCall("user32.dll", "hwnd", "GetParent", "hwnd", GUICtrlGetHandle($ChildId))
  If Not @error Then DllCall("user32.dll", "bool", "BringWindowToTop", "hwnd", $aRet[0])
EndFunc
 
Автор
M

mmsgeorge

Новичок
Сообщения
96
Репутация
0
InnI
мне показалось или так передается 1 файл, в твоем примере? + добавленная картинка не отображается....


Добавлено:
Сообщение автоматически объединено:

InnI
про библиотеку, мои слова, к твоим, что я ничего не говорю...
"А можешь пожалуйста подкинуть информацию про библиотеку user32.dll, для меня пока темный "
"Вообщем, вы меня не поняли, я просил вообщем прочитать про библиотеку, а не про данный случай" к этому -
в данном примере библиотека используется только для проверки нажатия мыши.
Кароче, проехали, я просто просил дать почитать про библиотеку user32.dll, завтра подольше поползаю по гуглу.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
mmsgeorge
или так передается 1 файл
Файлы передаются все, а макрос @GUI_DragFile возвращает один путь к файлу.

добавленная картинка не отображается
Если вы про картинку, полученную окном при помощи Drag'n'Drop, то в пример нужно добавить соответствующий код по созданию и отображению принятой картинки.
 
Автор
M

mmsgeorge

Новичок
Сообщения
96
Репутация
0
InnI
я имею ввиду, за раз, в мое случает, передается за раз к примеру сразу 3 фотки, а в твоем варианте сколько передается за раз?


Добавлено:
Сообщение автоматически объединено:

joiner
Все отлично работает, шлейфы оставались в том случае, если картинку добавить пустую без изображения! Огромная благодарность!
Код:
For $i = 0 To 5
    $pic = GUICtrlCreatePic('', $WX1, $WY1, 100, 100)
    GUICtrlSetState(-1,$GUI_DISABLE)
    GUICtrlSetImage($pic, $array[$i])
    $oDict.Add($pic, $array[$i])
    If $WX1 = 400 Then
        $WX1 = 0
        $WY1 += 100
    Else
        $WX1 += 100
    EndIf
Next

только поясни пожалуйста, зачем ты отключаешь картинку? - GUICtrlSetState(-1,$GUI_DISABLE)
 
Автор
M

mmsgeorge

Новичок
Сообщения
96
Репутация
0
InnI
то есть, если захватил за раз 3 картинки, сразу 3 картинки и передадутся на фон окна(замещенный картинкой)?
Про инпут я знаю, но его во первых где то располагать надо, думал о таком варианте, по сути потом можно из него вытащить пути картинок и через цикл создать картинки, но его же где то располагать надо, Можно ли его убрать, не отключать(а то не перетащить на него), а убрать из видимости(сделать полностью прозрачным)?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
mmsgeorge
где то располагать надо
Код:
#include <GuiConstants.au3>
#include <ScreenCapture.au3>

Global $aPics[4], $iW = 400, $iH = 400

_ScreenCapture_Capture(@ScriptDir & "\TempScrBack.jpg", 100, 100, $iW, $iH)
For $i = 0 To 3
  _ScreenCapture_Capture(@ScriptDir & "\TempScr" & $i & ".jpg", $i * 100, $i * 100, $i * 100 + 100, $i * 100 + 100)
Next

$GUI = GUICreate("", $iW, $iH, -1, -1, -1, $WS_EX_ACCEPTFILES)
GUICreate("", $iW, $iH, 0, 0, $WS_CHILD, -1, $GUI)
$Edit = GUICtrlCreateEdit("", 0, 0, $iW, $iH)
GUICtrlSetState(-1, BitOR($GUI_DISABLE, $GUI_DROPACCEPTED))
$pic_dobavit_kartinku = GUICtrlCreatePic(@ScriptDir & "\TempScrBack.jpg", 0, 0, $iW, $iH)
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()
For $i = 0 To 3
  GUICreate("", 100, 100, 100 * $i, 100 * $i, $WS_CHILD, $WS_EX_CONTROLPARENT, $GUI)
  $aPics[$i] = GUICtrlCreatePic(@ScriptDir & "\TempScr" & $i & ".jpg", 0, 0, 0, 0)
  GUISetState()
  ChildToTop($aPics[$i])
Next
GUISetState(@SW_SHOW, $GUI)

Do
  $Msg = GUIGetMsg()
  Switch $Msg
    Case $aPics[0] To $aPics[3]
      ChildToTop($Msg)
      GUICtrlSetState($Msg, $GUI_DISABLE)
      MouseDown("left")
      While GUIGetCursorInfo($GUI)[2]
      WEnd
      GUICtrlSetState($Msg, $GUI_ENABLE)
    Case $GUI_EVENT_CLOSE
      Exit
    Case $GUI_EVENT_DROPPED
      GUICtrlSetState($pic_dobavit_kartinku, $GUI_SHOW)
      MsgBox(0, "Drag", GUICtrlRead($Edit), 0, $GUI)
  EndSwitch
Until 0

Func ChildToTop($ChildId)
  Local $aRet = DllCall("user32.dll", "hwnd", "GetParent", "hwnd", GUICtrlGetHandle($ChildId))
  If Not @error Then DllCall("user32.dll", "bool", "BringWindowToTop", "hwnd", $aRet[0])
EndFunc
 
Автор
M

mmsgeorge

Новичок
Сообщения
96
Репутация
0
InnI
Норм, пригодится! Благодарю!


Добавлено:
Сообщение автоматически объединено:

InnI
А как сделать, что к примеру, у меня 10 картинок, потом я хватаю одну из них и при отпускании мышки(под ней другая картинка), она становится на ее координаты интересует , как определить, что за картинка, под той которую перемещаю.
 
Статус
Закрыто для дальнейших ответов.
Верх