Code: Select all
Enumeration
#Designer
#Form
#Form1
#Form2
EndEnumeration
Enumeration
#HyperLink_0
#HyperLink_1
EndEnumeration
;находится ли курсор над даным гаджетом
Procedure _OnTheGadget(Gadget)
Protected mx = DesktopMouseX()
Protected my = DesktopMouseY()
If IsGadget(Gadget)
Protected x=GadgetX(Gadget,#PB_Gadget_ScreenCoordinate)
Protected y=GadgetY(Gadget,#PB_Gadget_ScreenCoordinate)
Protected w=GadgetWidth(Gadget)
Protected h=GadgetHeight(Gadget)
EndIf
If mx >= x And mx < (x+w) And my >= y And my < (y+h)
ProcedureReturn #True
EndIf
EndProcedure
;получить номер гаджета под курсором
Procedure _GetUnderTheCursorGadget(NotGadget=-1)
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
Protected cursorpos.q
Protected hWnd
Protected hGnd
Protected phGnd
Protected ID=-1
GetCursorPos_(@Cursorpos)
hWnd=WindowFromPoint_(Cursorpos)
ScreenToClient_ (hWnd, @Cursorpos)
hGnd= ChildWindowFromPoint_ (hWnd, Cursorpos)
If GetProp_(GetParent_(hGnd),"PB_ID")
phGnd= GetParent_(hGnd)
EndIf
If GetProp_(hWnd,"PB_WindowID")-1 =-1
If GetProp_(GetParent_(phGnd),"PB_ID") = GetProp_(hGnd,"PB_ID")
If _OnTheGadget(GetProp_(phGnd,"PB_ID"))
ID= GetProp_(phGnd,"PB_ID")
Else
ID= GetProp_(hWnd,"PB_ID")
EndIf
Else
If _OnTheGadget(GetProp_(hGnd,"PB_ID"))
ID= GetProp_(hGnd,"PB_ID")
Else
ID= -1 ;Windows
EndIf
EndIf
Else
If _OnTheGadget(GetProp_(hGnd,"PB_ID"))
If GetProp_(hGnd,"PB_ID") <>IsGadget(NotGadget)
ID= GetProp_(hGnd,"PB_ID")
EndIf
Else
ID= -1 ;Windows
EndIf
EndIf
ProcedureReturn ID
CompilerElse
Debug "Не реализован (GetUnderTheCursorGadget())"
CompilerEndIf
EndProcedure
Macro EventGadget() :_GetUnderTheCursorGadget() :EndMacro
;получить номер окна под курсором
Procedure _GetUnderTheCursorWindow()
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
Protected cursorpos.q
Protected hWnd
Protected hGnd
Protected phGnd
Protected ID=-1
GetCursorPos_(@Cursorpos)
hWnd=WindowFromPoint_(Cursorpos)
ScreenToClient_ (hWnd, @Cursorpos)
hGnd= ChildWindowFromPoint_ (hWnd, Cursorpos)
If GetProp_(GetParent_(hGnd),"PB_ID")
phGnd= GetParent_(hGnd)
EndIf
If GetProp_(hWnd,"PB_WindowID")-1 =-1
If GetProp_(GetParent_(phGnd),"PB_ID") = GetProp_(hGnd,"PB_ID")
If _OnTheGadget(GetProp_(phGnd,"PB_ID"))
ID= -1
Else
ID= -1
EndIf
Else
If _OnTheGadget(GetProp_(hGnd,"PB_ID"))
ID= -1
Else
ID= GetProp_(hWnd,"PB_WindowID")-1 ;Windows
EndIf
EndIf
Else
If _OnTheGadget(GetProp_(hGnd,"PB_ID"))
ID= -1
Else
ID= GetProp_(hWnd,"PB_WindowID")-1 ;Windows
EndIf
EndIf
ProcedureReturn ID
CompilerElse
Debug "Не реализован (GetUnderTheCursorGadget())"
CompilerEndIf
EndProcedure
Macro EventWindow() :_GetUnderTheCursorWindow() :EndMacro
Procedure _AnchorHide_MouseDown()
Protected EventGadget=EventGadget()
Protected EventWindow=EventWindow()
Debug EventGadget
Debug EventWindow
EndProcedure
CompilerIf #PB_Compiler_OS =#PB_OS_Windows
OpenWindow(#Designer, 0, 0, 930, 600, "Designer", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
OpenWindow(#Form, 30, 30, 550, 450, "Form", #PB_Window_SystemMenu|#PB_Window_SizeGadget,WindowID(#Designer) ) ;|#WS_CHILD|#WS_POPUP
If GetWindowLongPtr_(WindowID(#Designer), #GWL_STYLE) & #WS_EX_COMPOSITED = #False
SetWindowLongPtr_(WindowID(#Designer),#GWL_STYLE, GetWindowLongPtr_(WindowID(#Designer), #GWL_STYLE)|#WS_EX_COMPOSITED)
EndIf
If GetWindowLongPtr_(WindowID(#Form), #GWL_STYLE) & #WS_EX_COMPOSITED = #False
;SetWindowLongPtr_(WindowID(#Form),#GWL_STYLE, GetWindowLongPtr_(WindowID(#Form), #GWL_STYLE)|#WS_EX_CLIENTEDGE)
EndIf
If GetWindowLong_(WindowID(#Form), #GWL_STYLE) & #WS_CHILD = #False
SetWindowLongPtr_(WindowID(#Form),#GWL_STYLE, GetWindowLongPtr_(WindowID(#Form), #GWL_STYLE)|#WS_CHILD|#WS_POPUP);
EndIf
SetParent_(WindowID(#Form),WindowID(#Designer))
SetWindowColor(#Form,RGB(236,236,236))
OpenWindow(#Form1, 630, 30, 250, 150, "Form1", #PB_Window_SystemMenu,WindowID(#Designer) ) ;|#WS_CHILD|#WS_POPUP
If GetWindowLong_(WindowID(#Form1), #GWL_STYLE) & #WS_CHILD = #False
SetWindowLongPtr_(WindowID(#Form1),#GWL_STYLE, GetWindowLongPtr_(WindowID(#Form1), #GWL_STYLE)|#WS_CHILD|#WS_POPUP);
EndIf
SetParent_(WindowID(#Form1),WindowID(#Designer))
SetWindowColor(#Form1,RGB(236,236,236))
HyperLinkGadget(3, 15, 11, 35, 15, "Hide", $FF0000, #PB_HyperLink_Underline)
HyperLinkGadget(2, 55, 45, 35, 15, "Show", $FF0000, #PB_HyperLink_Underline)
OpenWindow(#Form2, 630, 260, 250, 150, "Form1", #PB_Window_SystemMenu|#PB_Window_SizeGadget,WindowID(#Designer) ) ;|#WS_CHILD|#WS_POPUP
If GetWindowLong_(WindowID(#Form2), #GWL_STYLE) & #WS_CHILD = #False
SetWindowLongPtr_(WindowID(#Form2),#GWL_STYLE, GetWindowLongPtr_(WindowID(#Form2), #GWL_STYLE)|#WS_CHILD|#WS_POPUP);
EndIf
SetParent_(WindowID(#Form2),WindowID(#Designer))
SetWindowColor(#Form2,RGB(236,236,236))
CompilerElse
OpenWindow(#Designer, 0, 0, 800, 600, "Designer", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
OpenWindow(#Form, 0, 0, 800, 600, "Form", #PB_Window_SystemMenu|#PB_Window_SizeGadget)
CompilerEndIf
Define ogl=UseGadgetList(WindowID(#Form) )
ButtonGadget(1, 15, 45, 200, 125, "ButtonGadget",67108864)
FrameGadget(4, 15, 280, 200, 125, "ButtonGadget",#PB_Frame_Flat)
FrameGadget(5, 315, 45, 200, 125, "ButtonGadget",#PB_Frame_Single)
FrameGadget(6,315, 280, 200, 125, "FrameGadget")
UseGadgetList(ogl)
Repeat
lEvent = WaitWindowEvent()
If lEvent=#WM_LBUTTONDOWN
_AnchorHide_MouseDown()
ElseIf lEvent=#WM_LBUTTONUP
ElseIf lEvent=#WM_MOUSEMOVE
EndIf
Until lEvent = #PB_Event_CloseWindow
End