Vorschau Fensterumriss bei Größenänderung
Verfasst: 28.07.2012 10:57
In dem Code unten erstelle ich ein rahmenloses Fenster ohne Titelzeile, daß sich in der Größe verändern läßt.
Die Größenänderung findet bei gedrücktem Mausknopf sofort statt (bei Verkleinerung bei mir leider mit Flackereffect).
Ich möchte daher eine Vorschau der neuen Fensterdimensionen durch eine Punklinie realisieren, bevor sich das
Fenster nach dem Loslassen des Mausknopfes resized wird (a lá WINAMP)
In Forum konnte ich leider nichts verwertbares finden. Hat da jemand vielleicht eine Idee ?
Die Größenänderung findet bei gedrücktem Mausknopf sofort statt (bei Verkleinerung bei mir leider mit Flackereffect).
Ich möchte daher eine Vorschau der neuen Fensterdimensionen durch eine Punklinie realisieren, bevor sich das
Fenster nach dem Loslassen des Mausknopfes resized wird (a lá WINAMP)
In Forum konnte ich leider nichts verwertbares finden. Hat da jemand vielleicht eine Idee ?
Code: Alles auswählen
Macro HeiWord(long)
(long >> 16) & $FFFF
EndMacro
Macro LowWord(long)
long & $FFFF
EndMacro
Procedure NCHTest(hCtl,lParam)
Protected pt.POINT
Protected rc.RECT
pt\x = LowWord(lParam)
pt\y = HeiWord(lParam)
ScreenToClient_(hCtl,pt)
GetWindowRect_(hCtl,rc)
If pt\y < 3 And pt\x < 3
Result = #HTTOPLEFT
ElseIf pt\y < 3 And pt\x >= (rc\right-rc\left-3)
Result = #HTTOPRIGHT
ElseIf pt\y >=(rc\bottom-rc\top-3) And pt\x >= (rc\right-rc\left-3)
Result = #HTBOTTOMRIGHT
ElseIf pt\x < 3 And pt\y >= (rc\bottom -rc\top - 3)
Result = #HTBOTTOMLEFT
ElseIf pt\y < 3
Result = #HTTOP
ElseIf pt\x < 3
Result = #HTLEFT
ElseIf pt\x >= (rc\right -rc\left - 3)
Result = #HTRIGHT
ElseIf pt\y >= (rc\bottom -rc\top - 3)
Result = #HTBOTTOM
Else
Result = #HTCAPTION
EndIf
ProcedureReturn Result
EndProcedure
Procedure AMPCallback(WindowID,Message,wParam,lParam)
Result = #PB_ProcessPureBasicEvents
Select Message
Case #WM_NCHITTEST :Result = NCHTest(WindowID,lParam):
EndSelect
ProcedureReturn Result
EndProcedure
Procedure Mainprog(winXpos.l,winYpos.l,winWidth.l,winHight.l)
hWnd = OpenWindow(0,winXpos ,winYpos ,winWidth, winHight, "NCHTEST", #PB_Window_BorderLess |#WS_POPUP | #TTS_NOPREFIX )
SetWindowCallback(@AMPCallback(),0)
SetWindowColor(0,$513F16)
Repeat
EventID0 = WaitWindowEvent(5)
Until EventID0 = #PB_Event_CloseWindow
EndProcedure
winposX = 200:winposY = 300:winWidth = 1100:winHight = 600:
Mainprog(winposX,winposY,winWidth,winHight)