Здравствуйте, я столкнулся вот с такой проблемой:
У меня, два Эллипса пересекающиеся друг с другом, я решил что когда наводишь на $uGraphic1, выскакивает MsgBox, но $uGraphic2, занимает территорию не круга, а квадрата, если это возможно исправить, не подскажите? заранее благодарю!
У меня, два Эллипса пересекающиеся друг с другом, я решил что когда наводишь на $uGraphic1, выскакивает MsgBox, но $uGraphic2, занимает территорию не круга, а квадрата, если это возможно исправить, не подскажите? заранее благодарю!
Код:
#include <GUIConstantsEx.au3>
#Include <WindowsConstants.au3>
#include <WinAPIGdi.au3>
#include <WinAPIEx.au3>
$Window = GUICreate("Окно", 150, 100, -1, -1)
$uGraphic1 = GUICtrlCreateGraphic(10, 10, 100, 100) ; сегменты
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00ff00, 0x00ff00)
GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, 80, 80) ; эллипс
$tRect = DllStructCreate($tagRect)
DllStructSetData($tRect, 1, 0)
DllStructSetData($tRect, 2, 0)
DllStructSetData($tRect, 3, 80)
DllStructSetData($tRect, 4, 80)
$hRgn = _WinAPI_CreateEllipticRgn($tRect)
_WinAPI_SetWindowRgn(GUICtrlGetHandle($uGraphic1), $hRgn)
$uGraphic2 = GUICtrlCreateGraphic(50, 10, 100, 100) ; сегменты
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff0000, 0xff0000)
GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, 80, 80) ; эллипс
$tRect = DllStructCreate($tagRect)
DllStructSetData($tRect, 1, 0)
DllStructSetData($tRect, 2, 0)
DllStructSetData($tRect, 3, 80)
DllStructSetData($tRect, 4, 80)
$hRgn = _WinAPI_CreateEllipticRgn($tRect)
_WinAPI_SetWindowRgn(GUICtrlGetHandle($uGraphic2), $hRgn)
GUISetState()
While 1
$CurInfo = GUIGetCursorInfo()
If IsArray($CurInfo) Then
If $CurInfo[4] = $uGraphic1 Then
MsgBox(0, "", "Нажат Graphic1")
EndIf
EndIf
Switch GUIGetMsg()
Case -3
Exit
EndSwitch
WEnd