tqifkwzbqwyrneo
Новичок
- Сообщения
- 1
- Репутация
- 0
Вот есть программа которая отрисовывает точку поверх всех окон.
Как сделать так, чтобы при нажатии мышкой по этой точке не происходило переключение на окно этой самой точки
То есть окно (точка) должно быть поверх всех окон, но оно должно быть не активным (при нажатии на точку, все клики должны проходить сквозь нее).
Сейчас проблема вот в чем:
Я когда в игре включаю эту точку, настраиваю ее посреди экрана и ... если я в игре нажимаю на мышку (клик), происходит переключение с окна игры, на окно этой точки и игра как бы зависает/сворачивается, а активным становится окно с точкой
Как сделать так, чтобы при нажатии мышкой по этой точке не происходило переключение на окно этой самой точки
То есть окно (точка) должно быть поверх всех окон, но оно должно быть не активным (при нажатии на точку, все клики должны проходить сквозь нее).
Сейчас проблема вот в чем:
Я когда в игре включаю эту точку, настраиваю ее посреди экрана и ... если я в игре нажимаю на мышку (клик), происходит переключение с окна игры, на окно этой точки и игра как бы зависает/сворачивается, а активным становится окно с точкой
Код:
#include <GUIConstantsEx.au3>
#include <SliderConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
Global $iDot_Round = 1 ;Задаёт форму точки (1 - круг, 0 - квадрат).
Global $iDot_Width = 7 ;Ширина точки
Global $iDot_Height = 7 ;Высота точки
Global $sDot_Colors = "0x00FF00|0xFF0000|0xFFFF00|0x0000FF|0xFF00FF|0x00FFFF|0x000000" ;Цвета точки
Global $aDot_Colors = StringSplit($sDot_Colors, "|")
Global $iDot_Color_Index = 1
Global $hDot_GUI
HotKeySet("{F8}", "_Quit")
HotKeySet("{F7}", "_DotGUI_SwitchColor")
HotKeySet("{F5}", "_DotGUI_Show")
HotKeySet("{F6}", "_DotGUI_Hide")
$Form1 = GUICreate("Form1", 204, 259, 536, 214)
GUISetBkColor(0xFFFFFF)
$Slider1 = GUICtrlCreateSlider(8, 48, 190, 45)
GUICtrlSetData(-1, $iDot_Width)
$Slider2 = GUICtrlCreateSlider(8, 128, 190, 45)
GUICtrlSetData(-1, 50)
$Slider3 = GUICtrlCreateSlider(8, 208, 190, 45)
GUICtrlSetData(-1, 50)
$Label1 = GUICtrlCreateLabel("Размер точки", 16, 16, 107, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Смещения в боки", 16, 96, 130, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Смещения верх и вниз", 16, 184, 169, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
_GUIDot_Create(0)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
_Quit()
Case $Slider1 ;Размер точки
$iDot_Width = GUICtrlRead($Slider1)
$iDot_Height = $iDot_Width
_GUIDot_Create(1)
Case $Slider2 ;Смещения в боки
$iLeft = GUICtrlRead($Slider2)
If $iLeft < 50 Then
_GUIDot_Create(1, (@DesktopWidth / 2) - ((50 - $iLeft) * 2))
Else
_GUIDot_Create(1, (@DesktopWidth / 2) + $iLeft)
EndIf
Case $Slider3 ;Смещения верх и вниз
$iTop = GUICtrlRead($Slider3)
If $iTop < 50 Then
_GUIDot_Create(1, -1, (@DesktopHeight / 2) - ((50 - $iTop) * 2))
Else
_GUIDot_Create(1, -1, (@DesktopHeight / 2) + $iTop)
EndIf
EndSwitch
WEnd
Func _GUIDot_Create($iChangeSize = 0, $iLeft = -1, $iTop = -1)
If $iChangeSize Then
$aWinPos = WinGetPos($hDot_GUI)
If $iLeft <> -1 Then $aWinPos[0] = $iLeft
If $iTop <> -1 Then $aWinPos[1] = $iTop
WinMove($hDot_GUI, "", $aWinPos[0], $aWinPos[1], $iDot_Width, $iDot_Height)
Else
$hDot_GUI = GUICreate("", $iDot_Width, $iDot_Height, 837, 534, $WS_POPUP, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
_DotGUI_SwitchColor(1)
EndIf
If $iDot_Round Then
Local $hRegion = _WinAPI_CreateRoundRectRgn(0, 0, $iDot_Width, $iDot_Height, $iDot_Width, $iDot_Height)
_WinAPI_SetWindowRgn($hDot_GUI, $hRegion)
EndIf
EndFunc
Func _Quit()
Exit
EndFunc
Func _DotGUI_SwitchColor($iFlag = 0)
If Eval('iFlag') = 0 And Not BitAND(WinGetState($hDot_GUI), 2) Then
Return
EndIf
GUISetBkColor($aDot_Colors[$iDot_Color_Index], $hDot_GUI)
$iDot_Color_Index += 1
If $iDot_Color_Index > $aDot_Colors[0] Then
$iDot_Color_Index = 1
EndIf
EndFunc
Func _DotGUI_Show()
GUISetState(@SW_SHOWNOACTIVATE, $hDot_GUI)
EndFunc
Func _DotGUI_Hide()
GUISetState(@SW_HIDE, $hDot_GUI)
EndFunc
Последнее редактирование: