Что нового

Как реализовать Drag&Drop для окна AutoIt

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Есть скрипт:
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#NoTrayIcon

#Region ### START Koda GUI section ### Form=C:\Users\Lexa\Desktop\WinMIF.kxf
$Form1 = GUICreate("WinMIF", 302, 110, 190, 120, -1, 0x00000010, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
$PageControl1 = GUICtrlCreateTab(0, 0, 395, 255)
$TabSheet1 = GUICtrlCreateTabItem("Создать")
$Group2 = GUICtrlCreateGroup("Файлы", 175, 23, 120, 80)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label1 = GUICtrlCreateLabel("список", 182, 40, 107, 55, $SS_SUNKEN)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Group1 = GUICtrlCreateGroup("Сюда ложить файлы", 8, 23, 160, 80)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Label2 = GUICtrlCreateLabel("", 15, 40, 147, 55, BitOR($SS_SUNKEN,$WS_BORDER))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$stroka1 = GUICtrlCreateLabel('Положите файлы', 150, 5, 100, 25)

$TabSheet2 = GUICtrlCreateTabItem("Открыть")
$Group3 = GUICtrlCreateGroup("Файлы", 8, 23, 160, 80)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Label4 = GUICtrlCreateLabel("список", 15, 40, 147, 55, BitOR($SS_SUNKEN,$WS_BORDER))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateButton("Открыть", 175, 28, 120, 35)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label1 = GUICtrlCreateButton("Извлечь", 175, 67, 120, 35)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$stroka2 = GUICtrlCreateLabel('Откройте архив', 150, 5, 100, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
   $nMsg = GUIGetMsg()
   Select
		 Case $nMsg = -3
			Exit
		 Case $nMsg = -13
			GUICtrlSetData($stroka1, @GUI_DRAGFILE)
			$filename=StringRegExp(@GUI_DRAGFILE,'(^.*)\\(.*)\.(.*)$',3)
			$ScrBin='0x'&@CRLF
			$file = FileOpen(@GUI_DRAGFILE, 16)
			While 1
			   $Bin = FileRead($file, 2040)
			   If @error = -1 Then ExitLoop
			   $ScrBin&=""&StringTrimLeft($Bin,2)&""""&@CRLF
			   Sleep(1)
			WEnd
			FileClose($file)
			If FileExists($filename[1]&'.mif') Then
			MsgBox(64, '', 'Такой файл уже есть')
			Exit
			EndIf
			$Output = $filename[1]&'.mif'
			$file = FileOpen($Output,2)
			FileWrite($file, "-----"&$filename[1]&"."&$filename[2]&'-----'&@CRLF& _
			$ScrBin&@CRLF)
			FileClose($file)
   EndSelect
WEnd

Почему когда я переношу файл ничего не происходит?


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

Помогите кто нибудь, срочно надо :(
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: Неработает drag\'n\'drop

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"Неработает drag'n'drop" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Администратор.
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Re: Ошибка с drag\'n\'drop

CreatoR
Больше не знаю как назвать :(
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: Ошибка с drag\'n\'drop

_Lexa98_ [?]
Больше не знаю как назвать
Читай внимательнее то что написано в предупреждении (включая темы по ссылкам).
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Re: Ошибка с drag\'n\'drop

_Lexa98_

А мне вообще не понятен вопрос. Как может работать или не работать Drag&Drop, если он вообще у тебя не реализован.

Название темы должно быть таким, чтобы я, не заходя в ветку, понял о чем пойдет речь. В противном случае, пользоваться поиском на форуме становится очень затруднительно.

"Как реализовать Drag&Drop для окна AutoIt"

А еще лучше воспользоваться поиском, т.к. это многократно уже обсуждалось. Не нашлось? Так винить нужно только себя, поскольку, видимо, название той темы тоже не несло в себе смысловой нагрузки... Теперь понятно, для чего мы так любим придираться к названиям тем.
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Yashied
Спасибо, сменил. А можете как нибудь помочь по теме?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Могу.

Более продвинутый вариант см. в примере к функции _WinAPI_DragQueryFileEx() из WinAPex.
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Не получается связать с моим скриптом. Помогите кто нить. :'(
 

rollin

Новичок
Сообщения
15
Репутация
1
Почитай в справке о стиле окон $WS_EX_ACCEPTFILES, а так же о событии $GUI_EVENT_DROPPED и о макросах @GUI_DRAGFILE, @GUIDROPID. Должно помочь.
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
_Lexa98_
Попробуй начать "От простого - к сложному".
Вот простой пример. В дизайнере форм Koda я это набрал.

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 296, 88, 192, 114)
$Input1 = GUICtrlCreateInput("Input1", 8, 8, 121, 21)
$Input2 = GUICtrlCreateInput("Input2", 144, 8, 137, 21)
$Button1 = GUICtrlCreateButton("Button1", 8, 48, 121, 25)
$Button2 = GUICtrlCreateButton("Button2", 144, 48, 137, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit		
		 Case $Button1
			MsgBox(64, "Клавиша - 1", "Однако - 11111")
		 Case $Button2
			MsgBox(64, "Клавиша - 2", "Теперь - 22222")
	EndSwitch
WEnd
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#NoTrayIcon

#Region ### START Koda GUI section ### Form=C:\Users\Lexa\Desktop\WinMIF.kxf
$Form1 = GUICreate("WinMIF", 302, 110, 190, 120, -1, 0x00000010, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE,$WS_EX_ACCEPTFILES))
$PageControl1 = GUICtrlCreateTab(0, 0, 395, 255)
$TabSheet1 = GUICtrlCreateTabItem("Создать")
$Group2 = GUICtrlCreateGroup("Файлы", 175, 23, 120, 80)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label1 = GUICtrlCreateLabel("список", 182, 40, 107, 55, $SS_SUNKEN)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Group1 = GUICtrlCreateGroup("Сюда ложить файлы", 8, 23, 160, 80)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Label2 = GUICtrlCreateLabel("", 15, 40, 147, 55, BitOR($SS_SUNKEN,$WS_BORDER))
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$stroka1 = GUICtrlCreateLabel('Положите файлы', 150, 5, 100, 25)
$TabSheet2 = GUICtrlCreateTabItem("Открыть")
$Group3 = GUICtrlCreateGroup("Файлы", 8, 23, 160, 80)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$Label4 = GUICtrlCreateLabel("список", 15, 40, 147, 55, BitOR($SS_SUNKEN,$WS_BORDER))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateButton("Открыть", 175, 28, 120, 35)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label1 = GUICtrlCreateButton("Извлечь", 175, 67, 120, 35)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$stroka2 = GUICtrlCreateLabel('Откройте архив', 150, 5, 100, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
   $nMsg = GUIGetMsg()
   Select
         Case $nMsg = -3
            Exit
         Case $nMsg = -13
            GUICtrlSetData($stroka1, @GUI_DRAGFILE)
            $filename=StringRegExp(@GUI_DRAGFILE,'(^.*)\\(.*)\.(.*)$',3)
            $ScrBin='0x'&@CRLF
            $file = FileOpen(@GUI_DRAGFILE, 16)
            While 1
               $Bin = FileRead($file, 2040)
               If @error = -1 Then ExitLoop
               $ScrBin&=""&StringTrimLeft($Bin,2)&""""&@CRLF
               Sleep(1)
            WEnd
            FileClose($file)
            If FileExists($filename[1]&'.mif') Then
            MsgBox(64, '', 'Такой файл уже есть')
            Exit
            EndIf
            $Output = $filename[1]&'.mif'
            $file = FileOpen($Output,2)
            FileWrite($file, "-----"&$filename[1]&"."&$filename[2]&'-----'&@CRLF& _
            $ScrBin&@CRLF)
            FileClose($file)
   EndSelect
WEnd
 
Верх