Что нового

[Элементы GUI] Два окна, одна функция, разное управление

VermanVendetta13

Новичок
Сообщения
147
Репутация
0
Доброго времени суток!

Возник такой вот интересный вопрос. По сути есть кнопка, при нажатии на которую открывается окно о определенной функцией и управляется оно с помощью мыши через $GUI_EVENT_PRIMARYDOWN и $GUI_EVENT_SECONDARYDOWN ( вперед назад меняет картинку). Как сделать так, чтобы открывалось не одно окно (которое кстати на весь экран), а два ( одно на одной половине экрана, другое на другой) при этом выполняя одну и туже функцию, но в одном окне было управление мышью(вперед назад), а в другом стрелками (вперед назад).

вот это используется для мыши
Код:
While 1
	$iMsg = GUIGetMsg()
	Switch $iMsg
		Case $GUI_EVENT_CLOSE
			ExitLoop
		Case $GUI_EVENT_PRIMARYDOWN
			$i += 1
			If $i > $aFiles[0] Then $i = 1
			GUICtrlSetImage($iPic, $aFiles[$i])
		Case $GUI_EVENT_SECONDARYDOWN
			$i -= 1
			If $i < 1 Then $i = $aFiles[0]
			GUICtrlSetImage($iPic, $aFiles[$i])
	EndSwitch
WEnd
 
A

Alofa

Гость
Код:
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>

Local $iWidth, $iHeight, $hGui_1, $iLabel_1, $hGui_2, $iLabel_2, $iKeyLeft, $iKeyRight

$iWidth = Floor(@DesktopWidth / 2)
$iHeight = @DesktopHeight

$hGui_1 = GUICreate('Рисунок 1', $iWidth, $iHeight, 0, 0)
$iLabel_1 = GUICtrlCreateLabel('Кнопки мыши', 0, 300, $iWidth, 60, $SS_CENTER)

$hGui_2 = GUICreate('Рисунок 1', $iWidth, $iHeight, $iWidth, 0)
$iLabel_2 = GUICtrlCreateLabel('Кнопки "Стрелки"', 0, 300, $iWidth, 60, $SS_CENTER)

$iKeyLeft = GUICtrlCreateDummy()
$iKeyRight = GUICtrlCreateDummy()

Local $aAccelKeys[2][2] = [['{LEFT}', $iKeyLeft], ['{RIGHT}', $iKeyRight]]
GUISetAccelerators($aAccelKeys)

GUISetState(@SW_SHOW, $hGui_1)
GUISetState(@SW_SHOW, $hGui_2)
WinSetOnTop($hGui_1, '', 1)
WinSetOnTop($hGui_2, '', 1)

While ($hGui_1 - $hGui_2)
	$aMsg = GUIGetMsg(1)
	Switch $aMsg[1]
		Case $hGui_1
			Switch $aMsg[0]
				Case $GUI_EVENT_CLOSE
					GUIDelete($hGui_1)
					$hGui_1 = 0
				Case $GUI_EVENT_PRIMARYDOWN
					GUICtrlSetData($iLabel_1, '$GUI_EVENT_PRIMARYDOWN')
				Case $GUI_EVENT_SECONDARYDOWN
					GUICtrlSetData($iLabel_1, '$GUI_EVENT_SECONDARYDOWN')
			EndSwitch
		Case $hGui_2
			Switch $aMsg[0]
				Case $GUI_EVENT_CLOSE
					GUIDelete($hGui_2)
					$hGui_2 = 0
				Case $iKeyLeft
					GUICtrlSetData($iLabel_2, '<<< Стрелка	')
				Case $iKeyRight
					GUICtrlSetData($iLabel_2, '	Стрелка >>>')
			EndSwitch
	EndSwitch
WEnd
 
Автор
V

VermanVendetta13

Новичок
Сообщения
147
Репутация
0
Alofa сказал(а):
Код:
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>

Local $iWidth, $iHeight, $hGui_1, $iLabel_1, $hGui_2, $iLabel_2, $iKeyLeft, $iKeyRight

$iWidth = Floor(@DesktopWidth / 2)
$iHeight = @DesktopHeight

$hGui_1 = GUICreate('Рисунок 1', $iWidth, $iHeight, 0, 0)
$iLabel_1 = GUICtrlCreateLabel('Кнопки мыши', 0, 300, $iWidth, 60, $SS_CENTER)

$hGui_2 = GUICreate('Рисунок 1', $iWidth, $iHeight, $iWidth, 0)
$iLabel_2 = GUICtrlCreateLabel('Кнопки "Стрелки"', 0, 300, $iWidth, 60, $SS_CENTER)

$iKeyLeft = GUICtrlCreateDummy()
$iKeyRight = GUICtrlCreateDummy()

Local $aAccelKeys[2][2] = [['{LEFT}', $iKeyLeft], ['{RIGHT}', $iKeyRight]]
GUISetAccelerators($aAccelKeys)

GUISetState(@SW_SHOW, $hGui_1)
GUISetState(@SW_SHOW, $hGui_2)
WinSetOnTop($hGui_1, '', 1)
WinSetOnTop($hGui_2, '', 1)

While ($hGui_1 - $hGui_2)
	$aMsg = GUIGetMsg(1)
	Switch $aMsg[1]
		Case $hGui_1
			Switch $aMsg[0]
				Case $GUI_EVENT_CLOSE
					GUIDelete($hGui_1)
					$hGui_1 = 0
				Case $GUI_EVENT_PRIMARYDOWN
					GUICtrlSetData($iLabel_1, '$GUI_EVENT_PRIMARYDOWN')
				Case $GUI_EVENT_SECONDARYDOWN
					GUICtrlSetData($iLabel_1, '$GUI_EVENT_SECONDARYDOWN')
			EndSwitch
		Case $hGui_2
			Switch $aMsg[0]
				Case $GUI_EVENT_CLOSE
					GUIDelete($hGui_2)
					$hGui_2 = 0
				Case $iKeyLeft
					GUICtrlSetData($iLabel_2, '<<< Стрелка	')
				Case $iKeyRight
					GUICtrlSetData($iLabel_2, '	Стрелка >>>')
			EndSwitch
	EndSwitch
WEnd

Возникла ошибка. моя версия Autoit последняя. Scite та что шла в комплекте
Код:
$aMsg = GUIGetMsg(1) 
^ ERROR
>Exit code: 1    Time: 0.1386




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

VermanVendetta13 сказал(а):
Alofa сказал(а):
Код:
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>

Local $iWidth, $iHeight, $hGui_1, $iLabel_1, $hGui_2, $iLabel_2, $iKeyLeft, $iKeyRight

$iWidth = Floor(@DesktopWidth / 2)
$iHeight = @DesktopHeight

$hGui_1 = GUICreate('Рисунок 1', $iWidth, $iHeight, 0, 0)
$iLabel_1 = GUICtrlCreateLabel('Кнопки мыши', 0, 300, $iWidth, 60, $SS_CENTER)

$hGui_2 = GUICreate('Рисунок 1', $iWidth, $iHeight, $iWidth, 0)
$iLabel_2 = GUICtrlCreateLabel('Кнопки "Стрелки"', 0, 300, $iWidth, 60, $SS_CENTER)

$iKeyLeft = GUICtrlCreateDummy()
$iKeyRight = GUICtrlCreateDummy()

Local $aAccelKeys[2][2] = [['{LEFT}', $iKeyLeft], ['{RIGHT}', $iKeyRight]]
GUISetAccelerators($aAccelKeys)

GUISetState(@SW_SHOW, $hGui_1)
GUISetState(@SW_SHOW, $hGui_2)
WinSetOnTop($hGui_1, '', 1)
WinSetOnTop($hGui_2, '', 1)

While ($hGui_1 - $hGui_2)
	$aMsg = GUIGetMsg(1)
	Switch $aMsg[1]
		Case $hGui_1
			Switch $aMsg[0]
				Case $GUI_EVENT_CLOSE
					GUIDelete($hGui_1)
					$hGui_1 = 0
				Case $GUI_EVENT_PRIMARYDOWN
					GUICtrlSetData($iLabel_1, '$GUI_EVENT_PRIMARYDOWN')
				Case $GUI_EVENT_SECONDARYDOWN
					GUICtrlSetData($iLabel_1, '$GUI_EVENT_SECONDARYDOWN')
			EndSwitch
		Case $hGui_2
			Switch $aMsg[0]
				Case $GUI_EVENT_CLOSE
					GUIDelete($hGui_2)
					$hGui_2 = 0
				Case $iKeyLeft
					GUICtrlSetData($iLabel_2, '<<< Стрелка	')
				Case $iKeyRight
					GUICtrlSetData($iLabel_2, '	Стрелка >>>')
			EndSwitch
	EndSwitch
WEnd

Возникла ошибка. моя версия Autoit последняя. Scite та что шла в комплекте
Код:
$aMsg = GUIGetMsg(1) 
^ ERROR
>Exit code: 1    Time: 0.1386

Все. Запустил. Проблема была в том что моя scite решила что ей будет удобнее если все пункы будут друг под другом а не с абзацем
 
Верх