Что нового

Одновременное изменение параметров картинки при изменении размеров окна

mmsgeorge

Новичок
Здравствуйте! Помогите пожалуйста реализовать одновременное изменение параметров картинки (положение, размер) при изменении размеров окна. К примеру если я нажимаю, развернуть окно до максимума(где значки свернуть, развернуть ,закрыть), не срабатывает условие нажатия левой кнопки мыши и в итоге не происходит изменения параметров картинки.
Код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <ListBoxConstants.au3>
#include <StaticConstants.au3>
#include <Misc.au3>
#include <GuiButton.au3>
#include <WinAPI.au3>
#include <Array.au3>
#include <GuiEdit.au3>
#include <SendMessage.au3>
#include <String.au3>
#include <File.au3>
#include <Date.au3>
#include <GuiListBox.au3>

#include <GuiImageList.au3>
#include <GuiButton.au3>
;///////////////Nachalo vkluchenie module\\\\\\\\\\\\\\\\\\\;
Opt("GUIOnEventMode", 1)
;((((((((((((((((((((ПЕРЕМЕННЫЕ ГЛОБАЛ)))))))))))))))))))));
;(Информация Окна);
Global $Informaciya_okna
;(Координаты Начальные);
Global $xx = 0
Global $yy = 0
;(Координаты 1);
Global $xx_1
Global $yy_1
Global $Razmer_Shirina_1
Global $Razmer_Visota_1
;(Координаты 2);
Global $xx_2
Global $yy_2
Global $Razmer_Shirina_2
Global $Razmer_Visota_2
;(Координаты 3);
Global $xx_3
Global $yy_3
Global $Razmer_Shirina_3
Global $Razmer_Visota_3
;(Координаты 4);
Global $xx_4
Global $yy_4
Global $Razmer_Shirina_4
Global $Razmer_Visota_4
;(Координаты 5);
Global $xx_5
Global $yy_5
Global $Razmer_Shirina_5
Global $Razmer_Visota_5
;(Координаты 6);
Global $xx_6
Global $yy_6
Global $Razmer_Shirina_6
Global $Razmer_Visota_6
;(Координаты 7);
Global $xx_7
Global $yy_7
Global $Razmer_Shirina_7
Global $Razmer_Visota_7
;(Координаты 8);
Global $xx_8
Global $yy_8
Global $Razmer_Shirina_8
Global $Razmer_Visota_8
;(Координаты 9);
Global $xx_9
Global $yy_9
Global $Razmer_Shirina_9
Global $Razmer_Visota_9
;(Координаты 10);
Global $xx_10
Global $yy_10
Global $Razmer_Shirina_10
Global $Razmer_Visota_10
;(Кartinki);
;Global $Kartinka_1[1]
Global $xx_Kartinka_1
Global $yy_Kartinka_1
Global $Razmer_Kartinka_Shirina_1
Global $Razmer_Kartinka_Visota_1
Global $Kolichestvo_kartinok_vstroke
Global $Otstup_kartinok = 10
;(Кartinki);
Global $Karta_Massiv = ObjCreate('Scripting.Dictionary')
$Karta_Massiv.CompareMode = 1
Global $hDLL = DllOpen("user32.dll")
Global $Massiv_Kartinka_ID

;/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\////\\\\;
;\\\\\/////\\\\\/////(0)ОКНО(НАЧАЛЬНОЕ)(0)\\\\/////\\\\\///;
;/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\;
;_________________________ОПЦИИ____________________________;
;((((((((((((((ПЕРЕМЕННЫЕ))))))))))))))));
;[[[[[[[[[[[[Глобал]]]]]]]]]]];
;(Главное окно);
Global $Okno_Glavnoe
;(Кнопка ИГРА);
Global $Kn_Igra_1
;(Кнопка КОЛОДА);
Global $Kn_Koloda_1
;(Кнопка НАСТРОЙКА);
Global $Kn_Nastroiki_1
;[[[[[[[[[[[[Локал]]]]]]]]]]]];

;<<<<<<<<<<<<<<ПАРАМЕТРЫ>>>>>>>>>>>>>>>>>;
;Главное окно);
$xx_1 = 0
$yy_1 = 0
$Razmer_Shirina_1 = 200
$Razmer_Visota_1 = 200
;(Кнопка Игра);
$xx_2 = $xx_1 + 40
$yy_2 = $yy_1 + 60
$Razmer_Shirina_2 = 120
$Razmer_Visota_2 = 28
;(Кнопка Колода);
$xx_3 = $xx_2
$yy_3 = $yy_2 + $Razmer_Visota_2 + 7
$Razmer_Shirina_3 = 120
$Razmer_Visota_3 = $Razmer_Visota_2
;(Кнопка Настройки);
$xx_4 = $xx_2
$yy_4 = $yy_3 + $Razmer_Visota_2 + 7
$Razmer_Shirina_4 = 120
$Razmer_Visota_4 = $Razmer_Visota_2
;__________________________________________________________;
Global $Okno_Glavnoe = GUICreate("1488", $Razmer_Shirina_1, $Razmer_Visota_1) ;создает главное окно
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSE_Okno_Glavnoe") ;создает функцию для главного окна
;кнопка запуск
Global $Kn_Igra_1 = GUICtrlCreateButton("Игра", $xx_2, $yy_2, $Razmer_Shirina_2, $Razmer_Visota_2) ;создание конпки запуск
;кнопка новости
Global $Kn_Koloda_1 = GUICtrlCreateButton("Колода", $xx_3, $yy_3, $Razmer_Shirina_3, $Razmer_Visota_3) ;создание кнопки настройка
GUICtrlSetOnEvent($Kn_Koloda_1, "clik_Kn_Koloda_1")
;GUICtrlSetOnEvent($Novosti, "OK_Novosti") ;создает функцию для конпки настройка
;кнопка настройки
Local $Kn_Nastroiki_1 = GUICtrlCreateButton("Настройки", $xx_4, $yy_4, $Razmer_Shirina_4, $Razmer_Visota_4) ;создание кнопки настройка



GUISwitch($Okno_Glavnoe) ;переключение на главное окно
GUISetState(@SW_SHOW) ;отображение конопок и окон
;;;;;;;;;;/цикл/;;;;;;;;;;;;;
While 1
	Sleep(1000) ; Цикл ожидания
WEnd
;_________________________ОПЦИИ____________________________;
;((((((((((((((ПЕРЕМЕННЫЕ))))))))))))))));
;[[[[[[[[[[[[Глобал]]]]]]]]]]];

;[[[[[[[[[[[[Локал]]]]]]]]]]]];

;<<<<<<<<<<<<<<ПАРАМЕТРЫ>>>>>>>>>>>>>>>>>;

;__________________________________________________________;

;/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\////\\\\;
;\\\\\/////\\\\\/////\\(1)ОКНО(КОЛОДА)(1)\\\\\/////\\\\\///;
;/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\;
Func clik_Kn_Koloda_1()
	;_________________________ОПЦИИ____________________________;
	;((((((((((((((ПЕРЕМЕННЫЕ))))))))))))))));
	;[[[[[[[[[[[[Глобал]]]]]]]]]]];
	Global $Okno_Koloda
	;[[[[[[[[[[[[Локал]]]]]]]]]]]];
	Local $x
	Local $y

	;	Local $Otstup_kartinok_y

	;<<<<<<<<<<<<<<ПАРАМЕТРЫ>>>>>>>>>>>>>>>>>;
	;Главное окно);
	$xx_1 = 0
	$yy_1 = 0
	$Razmer_Shirina_1 = @DesktopWidth * 0.8
	$Razmer_Visota_1 = @DesktopHeight * 0.8
	;(Кнопка Игра);
	$xx_2 = $xx_1 + 40
	$yy_2 = $yy_1 + 60
	$Razmer_Shirina_2 = 120
	$Razmer_Visota_2 = 28
	;(Кнопка Колода);
	$xx_3 = $xx_2
	$yy_3 = $yy_2 + $Razmer_Visota_2 + 7
	$Razmer_Shirina_3 = 120
	$Razmer_Visota_3 = $Razmer_Visota_2
	;(Кнопка Настройки);
	$xx_4 = $xx_2
	$yy_4 = $yy_3 + $Razmer_Visota_2 + 7
	$Razmer_Shirina_4 = 120
	$Razmer_Visota_4 = $Razmer_Visota_2
	;(Картинки);
	Local $Chislo_kartinok = IniRead(@ScriptDir & "\karti.ini", "Карты", "Количество Карт", 0)
	Global $Kartinka_1[12]
	;global Massiv_Kartinok[$Chislo_kartinok + 1]



	$Razmer_Kartinka_Shirina_1 = Ceiling($Razmer_Shirina_1 / 10)
	$Razmer_Kartinka_Visota_1 = Ceiling($Razmer_Shirina_1 / 7)
	;$Otstup_kartinok = 11
	;MsgBox(4096, "", $Razmer_Kartinka_Shirina_1)



	;__________________________________________________________;
	$Okno_Koloda = GUICreate("Колода", -1, -1, 0, 0, $WS_CLIPCHILDREN + $WS_CLIPSIBLINGS + $WS_OVERLAPPEDWINDOW + $WS_MAXIMIZE) ;создает главное окно
	GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSE_Okno_Koloda")

	For $i = 0 To $Chislo_kartinok - 1
		$Informaciya_okna = WinGetPos($Okno_Koloda)
		$Kolichestvo_kartinok_vstroke = Ceiling($Informaciya_okna[2] / 200)
		;MsgBox(4096, "", $Chislo_kartinok)
		$j = Floor($i / ($Kolichestvo_kartinok_vstroke))
		$x = (($i - ($j * $Kolichestvo_kartinok_vstroke)) * $Razmer_Kartinka_Shirina_1) + ($Otstup_kartinok * ($i - ($j * $Kolichestvo_kartinok_vstroke)))
		$y = ($j * $Razmer_Kartinka_Visota_1) + ($j * $Otstup_kartinok)
		$tx = Int($Otstup_kartinok + $x)
		$ty = Int($Otstup_kartinok + $y)
		$Kartinka_1[$i] = GUICtrlCreatePic("C:\Users\Lilu\Desktop\3.jpg", $tx, $ty, $Razmer_Kartinka_Shirina_1, $Razmer_Kartinka_Visota_1)
		$Karta_Massiv.Add($Kartinka_1[$i], "C:\Users\Lilu\Desktop\3.jpg")
		;MsgBox(4096, "", $tx & " " & $ty)
		$Massiv_Kartinka_ID = $Karta_Massiv.Keys()
	Next


	Global $kn = GUICtrlCreateButton("title", 800, 450, 100, 100)
	;GUICtrlSetOnEvent($kn, "clik_1")
	;MsgBox(4096, "", WinGetState("Справка AutoIt"))
	AutoItSetOption ( "GUIEventOptions",0 )
	GUISetOnEvent($GUI_EVENT_PRIMARYUP, "clik_1")
	GUISetOnEvent($GUI_EVENT_RESIZED, "clik_1")
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "clik_1")
	GUISwitch($Okno_Koloda) ;переключение на главное окно
	GUISetState() ;отображение конопок и окон

EndFunc   ;==>clik_Kn_Koloda_1








Func clik_1()
	;	MsgBox(4096, "", "")

	;_ArrayDisplay($Massiv_Kartinka_ID,"edf")
	Local $Chislo_kartinok = IniRead(@ScriptDir & "\karti.ini", "Карты", "Количество Карт", 0)
	Local $x
	Local $y
	$Razmer_Kartinka_Shirina_1 = Ceiling($Razmer_Shirina_1 / 10)
	$Informaciya_okna = WinGetPos($Okno_Koloda)
	$Kolichestvo_kartinok_vstroke = Ceiling($Informaciya_okna[2] / 200)

	;$Razmer_Kartinka_Shirina_1 = $Informaciya_okna[2] / 10
	;$Razmer_Kartinka_Visota_1 = $Informaciya_okna[3] / 10
	;Local $Otstup_kartinok = 11
	;	MsgBox(4096, "", $Kolichestvo_kartinok_vstroke)

	For $i = 0 To $Chislo_kartinok - 1

		$j = Floor($i / ($Kolichestvo_kartinok_vstroke))
		$x = (($i - ($j * $Kolichestvo_kartinok_vstroke)) * $Razmer_Kartinka_Shirina_1) + ($Otstup_kartinok * ($i - ($j * $Kolichestvo_kartinok_vstroke)))
		$y = ($j * $Razmer_Kartinka_Visota_1) + ($j * $Otstup_kartinok)
		$tx = Int($Otstup_kartinok + $x)
		$ty = Int($Otstup_kartinok + $y)
		;MsgBox(4096, $i, $tx & " " & $ty & " " & $Massiv_Kartinka_ID[$i])
		GUICtrlSetPos($Massiv_Kartinka_ID[$i], 0, 0, $Razmer_Kartinka_Shirina_1, $Razmer_Kartinka_Visota_1)

		GUICtrlSetPos($Massiv_Kartinka_ID[$i], $tx, $ty, $Razmer_Kartinka_Shirina_1, $Razmer_Kartinka_Visota_1)

		GUICtrlSetImage($Massiv_Kartinka_ID[$i], "C:\Users\Lilu\Desktop\3.jpg")

		;MsgBox(4096, $i,$Informaciya_okna[0])

		GUISetState()
	Next
	GUISetState()
EndFunc   ;==>clik_1


;;;;;;;;;;;;;;;;;;;;/ФУНКЦИИ/;;;;;;;;;;;;;;;;;;;;;;;;
Func CLOSE_Okno_Glavnoe()
	Exit
EndFunc   ;==>CLOSE_Okno_Glavnoe

Func CLOSE_Okno_Koloda()
	Exit
EndFunc   ;==>CLOSE_Okno_Koloda
 
A

Alofa

Гость
Мдааа... :stars:
Какое объяснение - такой и ответ.
Код:
Global $Okno_Glavnoe = GUICreate("1488", $Razmer_Shirina_1, $Razmer_Visota_1, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_MAXIMIZEBOX))
 
Автор
M

mmsgeorge

Новичок
уточняю: У меня несколько картинок в окне, при изменении размеров, нужно чтобы моментально происходило изменении и этих картинок. Я сделал в примере через условия, но срабатывает только при отжатии левой кнопки мыши.
 

weweWe45s

Новичок
ихмо решение где то здесь WM_WINDOWPOSCHANGING или здесь WM_WINDOWPOSCHANGED есть еще вот это WM_LBUTTONDOWN если это не подходит перейдите на уровень выше ( ↑ ← Описание функции) и подберите себе подходящее для вас из списка в начале списка функций с "эксклюзивными" правами на окно (WM_*)
ps удачи
 
Верх