
Danke !
Lg.Legion
Code: Alles auswählen
Procedure WndProc(hwnd,msg,wParam,lParam)
*mymsg.MSG = lParam
myRect.RECT
GetWindowRect_(*mymsg\hwnd,myRect.RECT)
Weite = myRect\right - myRect\left
Select msg
Case #WM_MOUSEMOVE
SelectObject_(TempDC,ImageID(#Image_0))
StretchBlt_(WinHDC,0,0,Weite,ImageHeight(#Image_0),TempDC,0,0,ImageWidth(#Image_0),ImageHeight(#Image_0),#SRCCOPY)
Case #WM_ERASEBKGND
SelectObject_(TempDC,ImageID(#Image_0))
StretchBlt_(WinHDC,0,0,Weite,ImageHeight(#Image_0),TempDC,0,0,ImageWidth(#Image_0),ImageHeight(#Image_0),#SRCCOPY)
Case #WM_PAINT
SelectObject_(TempDC,ImageID(#Image_0))
StretchBlt_(WinHDC,0,0,Weite,ImageHeight(#Image_0),TempDC,0,0,ImageWidth(#Image_0),ImageHeight(#Image_0),#SRCCOPY)
EndSelect
ProcedureReturn DefWindowProc_(hwnd,msg,wParam,lParam)
EndProcedure
ProcedureDLL AddToolBarStretch(WindowHandle)
WinHDC = GetDC_(WindowHandle)
TempDC = CreateCompatibleDC_(WinHDC)
SelectObject_(TempDC,ImageID(#Image_0))
StretchBlt_(WinHDC,0,0,Weite,ImageHeight(#Image_0),TempDC,0,0,ImageHeight(#Image_0),ImageWidth(#Image_0),#SRCCOPY)
SetWindowCallback(@WndProc())
EndProcedure
Code: Alles auswählen
*OldCallb = SetWindowLong_(WindowHandle, #GWL_WNDPROC, @WndProc())
Code: Alles auswählen
ProcedureReturn CallWindowProc_(*OldCallb, hwnd, msg, wParam, lParam)
Code: Alles auswählen
Procedure GetMsgProc(code, wParam, lParam)
*mymsg.MSG = lParam
myRect.RECT
GetWindowRect_(*mymsg\hwnd,myRect.RECT)
Weite = myRect\right - myRect\left
If *mymsg\message = #WM_MOUSEMOVE
WinHDC = GetDC_(WindowHandle) : TempDC = CreateCompatibleDC_(WinHDC)
SelectObject_(TempDC,ImageID(#Image_0))
StretchBlt_(WinHDC,0,0,Weite,ImageHeight(#Image_0),TempDC,0,0,ImageWidth(#Image_0),ImageHeight(#Image_0),#SRCCOPY)
DeleteDC_(WinHDC) : DeleteDC_(TempDC)
ElseIf *mymsg\message = #WM_ERASEBKGND
WinHDC = GetDC_(WindowHandle) : TempDC = CreateCompatibleDC_(WinHDC)
SelectObject_(TempDC,ImageID(#Image_0))
StretchBlt_(WinHDC,0,0,Weite,ImageHeight(#Image_0),TempDC,0,0,ImageWidth(#Image_0),ImageHeight(#Image_0),#SRCCOPY)
DeleteDC_(WinHDC) : DeleteDC_(TempDC)
ElseIf *mymsg\message = #WM_PAINT
WinHDC = GetDC_(WindowHandle) : TempDC = CreateCompatibleDC_(WinHDC)
SelectObject_(TempDC,ImageID(#Image_0))
StretchBlt_(WinHDC,0,0,Weite,ImageHeight(#Image_0),TempDC,0,0,ImageWidth(#Image_0),ImageHeight(#Image_0),#SRCCOPY)
DeleteDC_(WinHDC) : DeleteDC_(TempDC)
EndIf
ProcedureReturn CallNextHookEx_(@GetMsgProc(), code, wParam, lParam)
EndProcedure
ProcedureDLL AddToolBarStretch(WHandle)
WindowHandle = WHandle
WinHDC = GetDC_(WindowHandle)
TempDC = CreateCompatibleDC_(WinHDC)
SelectObject_(TempDC,ImageID(#Image_0))
StretchBlt_(WinHDC,0,0,Weite,ImageHeight(#Image_0),TempDC,0,0,ImageHeight(#Image_0),ImageWidth(#Image_0),#SRCCOPY)
SetWindowsHookEx_(#WH_GETMESSAGE ,@GetMsgProc(),0,GetWindowThreadProcessId_(WindowHandle,#False))
DeleteDC_(WinHDC)
DeleteDC_(TempDC)
EndProcedure
ProcedureDLL DetachProcess(Instance)
UnhookWindowsHookEx_(@GetMsgProc())
EndProcedure
Code: Alles auswählen
PB Callback -> System Callback
Code: Alles auswählen
Eigener Callback -> PB Callback -> System Callback