XP Window Fading in MaxGUI
BlitzMax Forums/BlitzMax Programming/XP Window Fading in MaxGUI
| ||
Hi Everyone, I found out a way to apply transition-like effects while hiding and showing windows in BlitzMax. You can do alpha fading and wipe effects by changing the flag value (from 1-5) in the function below. (0: Fade!) The visibility argument specifies whether you want the window to hide (0) or show (1) as a result of the effect. Finally the time argument tells Windows the duration of the effect (in milliseconds). Declarations Extern Function LoadLibraryA( dll$z ) Function GetProcAddress:Byte Ptr( libhandle,func$z ) End Extern Global libUser32 = LoadLibraryA("user32.dll") Global AnimateWindow(hwnd,dword1,dword2) AnimateWindow = GetProcAddress(libUser32,"AnimateWindow") Function Function WindowEffect(tmpgadget:TGadget,visibility:Byte=0,flags:Byte=0,time:Int=200) If (flags < 0) Or (flags > 5) Or (visibility < 0) Or (visibility > 1) Or (time < 0) Then RuntimeError "Invalid arguments passed to WindowEffect()" EndIf Local varEffect:Int Local varVisible:Int Local windowhwnd:Int = QueryGadget(tmpgadget:TGadget,1) If windowhwnd = 0 Then RuntimeError("Invalid gadget passed to WindowEffect()") Select flags Case 0;varEffect = $80000 Case 1;varEffect = $10 Case 2;varEffect = $1 Case 3;varEffect = $2 Case 4;varEffect = $4 Case 5;varEffect = $8 EndSelect Select visibility Case 0;varVisible = $10000 Case 1;varVisible = $20000 EndSelect Return AnimateWindow(windowhwnd,time,varVisible | varEffect) End FunctionI don't know if there are any equivalent commands in the API for Macs or Linux but I hope this is of use to someone. Here's an example that fades a window in and out. Let me know what you think, Seb |