Emerging Window - Simple Example

Post Reply
MGA
Posts: 1219
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá
Contact:

Emerging Window - Simple Example

Post by MGA »

Example of an emerging window. To be used as message in our system.

Code: Select all


#include "fivewin.ch"

#define AW_VER_NEGATIVE        0x00000008  // animate window
#define AW_SLIDE               0x00040000  // animate window

static owndidc, ownd, omsgbar

function main()

   oWndIdc := NIL

   DEFINE WINDOW oWnd TITLE "Message Test - Press F3" ;
      FROM 5, 5 TO 24, 64

   DEFINE MSGBAR OMSGBAR OF OWND NOINSET

   oWnd:bKeyDown := {|nKey| IF(nKey==VK_F3,FwhMsgIDC( 'Message test'),)}
   ACTIVATE WINDOW oWnd maximized

return nil

/***************************************************************************************************/
procedure FwhMsgIDC( cMsg )

   local oSay, oFontIDC, nPos, nCol, otimer
   local nPosAux := 250
   local nColAux := 245

   Default cMsg := ''

   if oWndIdc != nil
      oWndIdc:End()
      oWndIdc := nil
      syswait(0.2)
   endif

   nPos := ownd:omsgbar:nWidth-nPosAux
   nCol := ownd:omsgbar:ntop-nColAux

   define font ofontidc name "Lucida Console" size -8,16 bold

   define window owndidc title "Message" from nCol, nPos to ( nCol+nColAux ), ( nPos+nPosAux ) pixel nominimize nomaximize color CLR_BLACK, RGB(126,192,238) of oWnd

   @ 00,-10 say osay var cMsg of owndidc center font ofontidc size 250,245 pixel

   AnimateWindow( owndidc:hwnd,400, nor( AW_SLIDE, AW_VER_NEGATIVE ) )

   SetWindowPos( owndidc:hwnd, -1, 0, 0, 0, 0, 3 )

   activate window owndidc on init( oTimer := FlashWndTimer( owndidc ),;
                                    owndidc:Refresh(), SysRefresh() );
                            valid( owndidc := nil,;
                                   hb_gcall( .t. ),;
                                   ofontidc:End(),;
                                   oTimer:DeActivate(),;
                                    .t. ) ;
                            on resize( oWndIdc:move(nCol,nPos),;
                                       oWndidc:nWidth  := nPosAux,;
                                       oWndidc:nHeight := nColAux,;
                                       oWndIdc:Refresh(),;
                                       SysRefresh() )
return

/********************************************************/
FUNCTION FlashWndTimer( ohWnd, nDelay, bWhen )
   local oTimer

   DEFAULT  nDelay  := 2000
   DEFAULT  bWhen   := { || .T. }

   DEFINE TIMER oTimer INTERVAL nDelay ACTION (Flashing( ohWnd, bWhen ))
   ACTIVATE TIMER oTimer

RETURN oTimer

/********************************************************/
STATIC FUNCTION Flashing( ohWnd, bWhen )
   static nStatus := 1
   local hWnd

   hWnd := iif( ValType(ohWnd) != "O", ohWnd, ohWnd:hWnd )

   if Eval( bWhen, hWnd )
      FlashWnd( hWnd, (nStatus := iif( nStatus == 1, 0, 1 )) )
   endif

RETURN .T.

DLL32 STATIC FUNCTION FlashWnd( hWnd AS LONG, nInvert AS LONG ) AS LONG PASCAL FROM "FlashWindow" LIB "User32.dll"
DLL32 FUNCTION AnimateWindow( hWnd AS LONG, nTime AS LONG, nFlags AS LONG ) AS BOOL PASCAL LIB "user32.dll"


 
:)
ubiratanmga@gmail.com

FWH17.04
FWPPC
Harbour/xHarbour
xMate
Pelles´C
TDolphin
User avatar
Silvio.Falconi
Posts: 4956
Joined: Thu Oct 18, 2012 7:17 pm

Re: Emerging Window - Simple Example

Post by Silvio.Falconi »

nice
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
User avatar
vilian
Posts: 795
Joined: Wed Nov 09, 2005 2:17 am
Location: Brazil
Contact:

Re: Emerging Window - Simple Example

Post by vilian »

Very good ;)
Sds,
Vilian F. Arraes
vilian@vfatec.com.br
Belém-Pa-Brazil
User avatar
fafi
Posts: 169
Joined: Mon Feb 25, 2008 2:42 am

Re: Emerging Window - Simple Example

Post by fafi »

animate on exit

Code: Select all


#include "fivewin.ch"

#define AW_VER_NEGATIVE        0x00000008  // animate window
#define AW_SLIDE               0x00040000  // animate window

#define AW_VER_POSITIVE  0x00000004
#define AW_BLEND 0x00080000

#define AW_HOR_NEGATIVE 0x00000002
#define AW_HOR_POSITIVE 0x00000001

#define AW_HIDE 0x00010000



static owndidc, ownd, omsgbar

function main()

   oWndIdc := NIL

   DEFINE WINDOW oWnd TITLE "Message Test - Press F3" ;
      FROM 5, 5 TO 24, 64

   DEFINE MSGBAR OMSGBAR OF OWND NOINSET

   oWnd:bKeyDown := {|nKey| IF(nKey==VK_F3,FwhMsgIDC( 'Message test'),)}
   ACTIVATE WINDOW oWnd maximized

return nil

/***************************************************************************************************/
procedure FwhMsgIDC( cMsg )

   local oSay, oFontIDC, nPos, nCol, otimer
   local nPosAux := 250
   local nColAux := 245

   Default cMsg := ''

   if oWndIdc != nil
      oWndIdc:End()
      oWndIdc := nil
      syswait(0.2)
   endif

   nPos := ownd:omsgbar:nWidth-nPosAux
   nCol := ownd:omsgbar:ntop-nColAux

   define font ofontidc name "Lucida Console" size -8,16 bold

   define window owndidc title "Message" from nCol, nPos to ( nCol+nColAux ), ( nPos+nPosAux ) pixel nominimize nomaximize color CLR_BLACK, RGB(126,192,238) of oWnd

   @ 00,-10 say osay var cMsg of owndidc center font ofontidc size 250,245 pixel

   //AnimateWindow( owndidc:hwnd,400, nor( AW_SLIDE, AW_VER_NEGATIVE ) )

   //AnimateWindow( owndidc:hwnd,400, nor( AW_SLIDE, AW_HOR_NEGATIVE ) )
   
   //AnimateWindow( owndidc:hwnd,400, nor( AW_SLIDE, AW_HOR_POSITIVE ) )
   
   AnimateWindow( owndidc:hwnd,400, nor( AW_HOR_NEGATIVE ) )
   
   
   

   SetWindowPos( owndidc:hwnd, -1, 0, 0, 0, 0, 3 )
/*
   activate window owndidc on init( oTimer := FlashWndTimer( owndidc ),;
                                    owndidc:Refresh(), SysRefresh() );
                            valid( Keluar(),owndidc := nil,;
                                   hb_gcall( .t. ),;
                                   ofontidc:End(),;
                                   oTimer:DeActivate(),;
                                    .t. ) ;
                            on resize( oWndIdc:move(nCol,nPos),;
                                       oWndidc:nWidth  := nPosAux,;
                                       oWndidc:nHeight := nColAux,;
                                       oWndIdc:Refresh(),;
                                       SysRefresh() )
*/

   activate window owndidc on init( oTimer := FlashWndTimer( owndidc ),;
                                    owndidc:Refresh(), ;
                                    oWndIdc:move(nCol,nPos),;
                                       oWndidc:nWidth  := nPosAux,;
                                       oWndidc:nHeight := nColAux,;
                                       oWndIdc:Refresh(),;
                                    SysRefresh() );
                            valid( Keluar(),owndidc := nil,;
                                   hb_gcall( .t. ),;
                                   ofontidc:End(),;
                                   oTimer:DeActivate(),;
                                    .t. ) 
                            
                                                                              
return

function Keluar()

aRect :=  GetClientRect(oWndIdc:hwnd)
nWidth := oWndidc:nWidth  
       
for i := 1 to aRect[3] 

       oWndidc:nWidth  := nWidth
       nWidth := nWidth - i
             oWndIdc:Refresh()
             SysRefresh()
                                       
next

return nil

/********************************************************/
FUNCTION FlashWndTimer( ohWnd, nDelay, bWhen )
   local oTimer

   DEFAULT  nDelay  := 2000
   DEFAULT  bWhen   := { || .T. }

   DEFINE TIMER oTimer INTERVAL nDelay ACTION (Flashing( ohWnd, bWhen ))
   ACTIVATE TIMER oTimer

RETURN oTimer

/********************************************************/
STATIC FUNCTION Flashing( ohWnd, bWhen )
   static nStatus := 1
   local hWnd

   hWnd := iif( ValType(ohWnd) != "O", ohWnd, ohWnd:hWnd )

   if Eval( bWhen, hWnd )
      FlashWnd( hWnd, (nStatus := iif( nStatus == 1, 0, 1 )) )
   endif

RETURN .T.

DLL32 STATIC FUNCTION FlashWnd( hWnd AS LONG, nInvert AS LONG ) AS LONG PASCAL FROM "FlashWindow" LIB "User32.dll"
DLL32 FUNCTION AnimateWindow( hWnd AS LONG, nTime AS LONG, nFlags AS LONG ) AS BOOL PASCAL LIB "user32.dll"


/*
 AW_ACTIVATE
0x00020000
Activates the window. Do not use this value with AW_HIDE.
AW_BLEND
0x00080000
Uses a fade effect. This flag can be used only if hwnd is a top-level window.
AW_CENTER
0x00000010
Makes the window appear to collapse inward if AW_HIDE is used or expand outward if the AW_HIDE is not used. The various direction flags have no effect.

AW_HIDE
0x00010000
Hides the window. By default, the window is shown.

AW_HOR_POSITIVE
0x00000001
Animates the window from left to right. This flag can be used with roll or slide animation. It is ignored when used with AW_CENTER or AW_BLEND.

AW_HOR_NEGATIVE
0x00000002
Animates the window from right to left. This flag can be used with roll or slide animation. It is ignored when used with AW_CENTER or AW_BLEND.

AW_SLIDE
0x00040000
Uses slide animation. By default, roll animation is used. This flag is ignored when used with AW_CENTER.

AW_VER_POSITIVE
0x00000004
Animates the window from top to bottom. This flag can be used with roll or slide animation. It is ignored when used with AW_CENTER or AW_BLEND.

AW_VER_NEGATIVE
0x00000008
Animates the window from bottom to top. This flag can be used with roll or slide animation. It is ignored when used with AW_CENTER or AW_BLEND.
*/

 
regards
fafi
MGA
Posts: 1219
Joined: Mon Feb 25, 2008 2:54 pm
Location: Brasil/PR/Maringá
Contact:

Re: Emerging Window - Simple Example

Post by MGA »

fafi thanks!
ubiratanmga@gmail.com

FWH17.04
FWPPC
Harbour/xHarbour
xMate
Pelles´C
TDolphin
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Emerging Window - Simple Example

Post by Antonio Linares »

thanks for sharing it :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply