$H windows.ph
$H messages.ph
STRUCT RECT = Left&,Righ&,Top&,Bottom&
Déclarer bereich#,être#,objet#,erg&,erg2&,x&,y&,à gauche1&,dessus1&,à gauche2&,dessus2&
Faible être#,8
Faible bereich#,1024
Faible objet#,16
' Ermittelt cela Handle sous dem Mauszeiger
Proc MPos
~GetCursorPos(être#)
x&=Long(être#,0)
y&=Long(être#,4)
erg&=~WindowFromPoint(x&,y&)
ENDPROC
' Verschiebt qui Toolbar
Proc MoveIt
Paramètres wnd&,lParam&
~GetClientRect(wnd&,R#)
~MapWindowPoints(wnd&,%hwnd,R#,2)
Si ~PtInRect(R#,LoWord(lParam&),HiWord(lParam&))
~Capture de sortie()
UseCursor 5
SendMessage(wnd&,~WM_SYSCOMMAND,~SC_MOVE+1,0)
UseCursor 0
Retour 0
endif
Retour 1
ENDPROC
Proc PosInWnd
Claire objet#
~GetWindowRect(STB1&,objet#)
~ScreenToClient(%HWND,objet#)
à gauche1&=Long(objet#,0)
dessus1&=Long(objet#,4)
Claire objet#
~GetWindowRect(STB2&,objet#)
~ScreenToClient(%HWND,objet#)
à gauche2&=Long(objet#,0)
dessus2&=Long(objet#,4)
ENDPROC
' Ausrichten
Proc UpdateToolbar
Paramètres TB%,handle&
PosInWnd
si TB%=1
si à gauche1&<5
SetWindowpos STB1&=0,2-width(STB1&),32;0
SetWindowpos STB2&=width(STB1&),2-width(STB2&),32;0
elseif à gauche1&>width(STB1&)
SetWindowpos STB2&=0,2-width(STB2&),32;0
SetWindowpos STB1&=width(STB2&),2-width(STB1&),32;0
d'autre
si à gauche2&=0
SetWindowpos STB1&=width(STB2&),2-width(STB1&),32;0
d'autre
SetWindowpos STB1&=0,2-width(STB1&),32;0
endif
endif
elseif TB%=2
si à gauche2&<5
SetWindowpos STB2&=0,2-width(STB2&),32;0
SetWindowpos STB1&=width(STB2&),2-width(STB1&),32;0
elseif à gauche2&>width(STB2&)
SetWindowpos STB2&=width(STB1&),2-width(STB2&),32;0
SetWindowpos STB1&=0,2-width(STB1&),32;0
d'autre
si à gauche1&=0
SetWindowpos STB2&=width(STB1&),2-width(STB2&),32;0
d'autre
SetWindowpos STB2&=0,2-width(STB2&),32;0
endif
endif
endif
ENDPROC
' Hauptfenster
Fenêtre Style 24
Titre de la fenêtre "Abreißbare Toolbar"
Fenêtre %maxx/2-320,(%maxY/2-240)-640,480
Cls ~GetSysColor(16)
USEP 0,1,~GetSysColor(15)
UseBrush 1,~GetSysColor(15)
Rectangle 0,0-%maxx,36
USEP 0,1,~GetSysColor(15)
Line 0,0-%maxx,0
USEP 0,1,RGB(255,255,255)
Line 0,1-%maxx,1
USEP 0,1,0
Line 0,34-%maxx,34
USEP 0,1,RGB(255,255,255)
Line 0,35-%maxx,35
var CB&=Créer("CheckBox",%hwnd,"Ausrichten",530,420,90,20)
SetCheck CB&,1
var STB1&=Contrôle("Dialogue",»,$54000000,0,2,105,32,%hwnd,0,%HINSTANCE)
var SB1&=Créer("Button",STB1&,»,4,2,4,28)
EnableWindow SB1&,0
var STB2&=Contrôle("Dialogue",»,$54000000,105,2,136,32,%hwnd,0,%HINSTANCE)
var SB2&=Créer("Button",STB2&,»,4,2,4,28)
EnableWindow SB2&,0
var TB1&=Contrôle("Dialogue",»,$54000000,10,0,95,32,STB1&,0,%HINSTANCE)
var TB2&=Contrôle("Dialogue",»,$54000000,10,0,126,32,STB2&,0,%HINSTANCE)
var long hBild = create(«PCSI», -1, $PROGDIR+"test24.bmp")' <-------------- ggf. ANPASSEN !!!
var long hBildliste = create("ImageList", 24, 24, hBild, rgb(192,192,192))
var long hToolbar1 = create("Toolbar", TB1&, hBildliste,0,0,2000,1)
var long hToolbar2 = create("Toolbar", TB2&, hBildliste,0,0,2000,1)
deleteobject hBild
Toolbar("AddButton", hToolbar1, 0, 100, "Neue Datei")
Toolbar("AddButton", hToolbar1, 1, 101, "Datei öffnen")
Toolbar("AddButton", hToolbar1, 2, 102, "Datei speichern")
Toolbar("AddButton", hToolbar2, 5, 200, "Ausschneiden")
Toolbar("AddButton", hToolbar2, 6, 201, "Kopieren")
Toolbar("AddButton", hToolbar2, 7, 202, "Einfügen")
Toolbar("AddButton", hToolbar2, 8, 203, "Löschen")
Var R# = New(RECT)
' Hauptprogrammschleife
WhileNot %Umessage = ~wm_close
WaitInput
MPos
PosInWnd
si erg&=STB1&
SetWindowpos STB1&=à gauche1&,dessus1&-width(STB1&),height(STB1&);0
~EnumChildWindows(%hwnd,ProcAddr("MoveIt",2),MakeLong(%mousex,%mousey))
Cas GetCheck(CB&)=1:UpdateToolbar 1,STB1&
endif
si erg&=STB2&
SetWindowpos STB2&=à gauche2&,dessus2&-width(STB2&),height(STB2&);0
~EnumChildWindows(%hwnd,ProcAddr("MoveIt",2),MakeLong(%mousex,%mousey))
Cas GetCheck(CB&)=1:UpdateToolbar 2,STB2&
endif
Endwhile
'Ende
Dispose hdr#
Dispose R#
Dispose bereich#
Dispose objet#
end