;Autor: Stefan EnableExplicit Define EventID Define *APPBD.APPBARDATA Define X Define Y Define Width Define Height Procedure CreateAPPBar(Edge,Size); unterstützt #ABE_LEFT,#ABE_RIGHT,#ABE_TOP,#ABE_BOTTOM für Edge Protected *APPBD.APPBARDATA=AllocateMemory(SizeOf(APPBARDATA)) Protected TBD.APPBARDATA SHAppBarMessage_(#ABM_GETTASKBARPOS,TBD) Protected TBEdge=TBD\uEdge SHAppBarMessage_(#ABM_NEW,*APPBD) *APPBD\uEdge=Edge Select Edge Case #ABE_LEFT If TBEdge=Edge *APPBD\rc\Left=TBD\rc\Right *APPBD\rc\Right=TBD\rc\Right+Size *APPBD\rc\Top=0 *APPBD\rc\Bottom=GetSystemMetrics_(#SM_CYSCREEN) Else *APPBD\rc\Left=0 *APPBD\rc\Right=Size *APPBD\rc\Top=0 *APPBD\rc\Bottom=GetSystemMetrics_(#SM_CYSCREEN) EndIf Case #ABE_RIGHT If TBEdge=Edge *APPBD\rc\Left=TBD\rc\Left-Size *APPBD\rc\Right=TBD\rc\Left *APPBD\rc\Top=0 *APPBD\rc\Bottom=GetSystemMetrics_(#SM_CYSCREEN) Else *APPBD\rc\Left=GetSystemMetrics_(#SM_CXSCREEN)-Size *APPBD\rc\Right=GetSystemMetrics_(#SM_CXSCREEN) *APPBD\rc\Top=0 *APPBD\rc\Bottom=GetSystemMetrics_(#SM_CYSCREEN) EndIf Case #ABE_TOP If TBEdge=Edge *APPBD\rc\Left=0 *APPBD\rc\Right=GetSystemMetrics_(#SM_CXSCREEN) *APPBD\rc\Top=TBD\rc\Bottom *APPBD\rc\Bottom=TBD\rc\Bottom+Size Else *APPBD\rc\Left=0 *APPBD\rc\Right=GetSystemMetrics_(#SM_CXSCREEN) *APPBD\rc\Top=0 *APPBD\rc\Bottom=Size EndIf Case #ABE_BOTTOM If TBEdge=Edge *APPBD\rc\Left=0 *APPBD\rc\Right=GetSystemMetrics_(#SM_CXSCREEN) *APPBD\rc\Top=TBD\rc\Top-Size *APPBD\rc\Bottom=TBD\rc\Top Else *APPBD\rc\Left=0 *APPBD\rc\Right=GetSystemMetrics_(#SM_CXSCREEN) *APPBD\rc\Top=GetSystemMetrics_(#SM_CYSCREEN)-Size *APPBD\rc\Bottom=GetSystemMetrics_(#SM_CYSCREEN) EndIf EndSelect SHAppBarMessage_(#ABM_SETPOS,*APPBD) ProcedureReturn *APPBD EndProcedure Procedure RemoveAPPBar(*APPBD.APPBARDATA) SHAppBarMessage_(#ABM_REMOVE,*APPBD) FreeMemory(*APPBD) EndProcedure Procedure APPBarX(*APPBD.APPBARDATA) ProcedureReturn *APPBD\rc\Left EndProcedure Procedure APPBarY(*APPBD.APPBARDATA) ProcedureReturn *APPBD\rc\Top EndProcedure Procedure APPBarWidth(*APPBD.APPBARDATA) ProcedureReturn *APPBD\rc\Right-*APPBD\rc\Left EndProcedure Procedure APPBarHeight(*APPBD.APPBARDATA) ProcedureReturn *APPBD\rc\Bottom-*APPBD\rc\Top EndProcedure *APPBD.APPBARDATA=CreateAPPBar(#ABE_LEFT,80) ; AppBar am linken Rand erstellen X=APPBarX(*APPBD) Y=APPBarY(*APPBD) Width=APPBarWidth(*APPBD) Height=APPBarHeight(*APPBD) If OpenWindow(0,X,Y,Width,Height,"Window",#PB_Window_BorderLess) ButtonImageGadget(2,10,10,60,60,LoadIcon_(0,100)) ButtonImageGadget(3,10,80,60,60,LoadIcon_(0,100)) ButtonImageGadget(4,10,150,60,60,LoadIcon_(0,100)) ButtonImageGadget(5,10,220,60,60,LoadIcon_(0,103)) SetWindowPos_(WindowID(0),#HWND_TOPMOST,0,0,0,0,#SWP_NOSIZE|#SWP_NOMOVE) Repeat EventID=WaitWindowEvent() If EventID=#PB_Event_Gadget Select EventGadget() Case 5 EventID = #PB_Event_CloseWindow EndSelect EndIf If EventID = #PB_Event_CloseWindow RemoveAPPBar(*APPBD) ; AppBar entfernen End EndIf ForEver EndIf