Animacion de Ventamas

Animacion de Ventamas

Postby devtuxtla » Sun Mar 26, 2017 11:12 pm

Hola Fivewinnes


Desde la version de xHarbour 0.99 he utilizado este codigo para animar aleatoriamente el inicio y final de cada ventana, sin embargo con la version de xHarbour 1.2.3. (build 20161218) y Bc7 me envia en error 9003.
Con esta version ultima de xHarbour que cambia en el llamado de esta API ?
(es una aportacion del foro)

Code: Select all  Expand view


ACTIVATE DIALOG oPD CENTERED ON INIT NW_ANIMA( oPD )  ;
                    Valid( Fade( oPD ), .T. )

*--------------------------------------------------------------*
FUNCTION NW_ANIMA( oDlg )
*--------------------------------------------------------------*
LOCAL nSel:= nRandom(6)
LOCAL cAni:= ""

IF nSel == 1
   //a) desde la esquina inferior izquierda hasta la esquina superior derecha:
   cAni:= AW_VER_NEGATIVE + AW_HOR_POSITIVE + AW_SLIDE + AW_ACTIVATE
ELSEIF nSel == 2
   //b) desde la esquina inferior derecha hasta la esquina superior izquierda:
   cAni:= AW_HOR_NEGATIVE + AW_VER_NEGATIVE + AW_SLIDE + AW_ACTIVATE
ELSEIF nSel == 3
   //c) desde la esquina superior derecha hasta la esquina inferior izquierda:
   cAni:= AW_HOR_NEGATIVE + AW_VER_POSITIVE + AW_SLIDE + AW_ACTIVATE
ELSEIF nSel == 4
   //d) Aparecer desplazandose de izquierda a derecha
   cAni:= AW_HOR_POSITIVE + AW_SLIDE + AW_ACTIVATE
ELSEIF nSel == 5
   //e) desde la esquina superior izquierda hasta la esquina inferior derecha:
   cAni:= AW_HOR_POSITIVE + AW_VER_POSITIVE + AW_SLIDE + AW_ACTIVATE
ELSEIF nSel == 6
   //f) aparecer desde el centro:
   cAni:= AW_CENTER + AW_SLIDE + AW_ACTIVATE
ELSEIF nSel == 0
   cAni:= AW_BLEND
ENDIF
 
AnimateWindow( oDlg:hWnd, 500, cAni )

oDlg:Refresh()

RETURN 0


DLL32 FUNCTION AnimateWindow( hWnd As LONG, dwTime As LONG, dwFlags As LONG ) AS LONG PASCAL ;
               from "AnimateWindow" lib "user32.DLL"


*--------------------------------------------------------------*
FUNCTION fade( oDlg, oWner )
*--------------------------------------------------------------*
LOCAL nSel:= nRandom(6)
LOCAL cAni:= AW_VER_NEGATIVE + AW_HOR_POSITIVE + AW_SLIDE + AW_HIDE

IF nSel == 1
   //a) desde la esquina inferior izquierda hasta la esquina superior derecha:
   cAni:= AW_VER_NEGATIVE + AW_HOR_POSITIVE + AW_SLIDE + AW_HIDE
ELSEIF nSel == 2
   //b) desde la esquina inferior derecha hasta la esquina superior izquierda:
   cAni:= AW_HOR_NEGATIVE + AW_VER_NEGATIVE + AW_SLIDE + AW_HIDE
ELSEIF nSel == 3
   //c) desde la esquina superior derecha hasta la esquina inferior izquierda:
   cAni:= AW_HOR_NEGATIVE + AW_VER_POSITIVE + AW_SLIDE + AW_HIDE
ELSEIF nSel == 4
   //d) Aparecer desplazandose de izquierda a derecha
   cAni:= AW_HOR_POSITIVE + AW_SLIDE + AW_HIDE
ELSEIF nSel == 5
   //e) desde la esquina superior izquierda hasta la esquina inferior derecha:
   cAni:= AW_HOR_POSITIVE + AW_VER_POSITIVE + AW_SLIDE + AW_HIDE
ELSEIF nSel == 6
   //f) aparecer desde el centro:
   cAni:= AW_CENTER + AW_SLIDE + AW_HIDE
//ELSEIF nSel == 0
//   cAni:= AW_BLEND + AW_HIDE
ENDIF

AnimateWindow( oDlg : hWnd, 500, cAni )
oDlg : Hide()
AnimateWindow( oDlg : hWnd, 500, AW_BLEND + AW_SLIDE + AW_ACTIVATE + AW_HIDE)
IF !EMPTY(oWner)
   //AnimateWindow( oDlg : hWnd, 500, AW_BLEND + AW_SLIDE + AW_ACTIVATE+AW_HIDE)
   //oWner : show()
   oWner : setcontrol()
   oWner : setfocus()
ENDIF

RETURN 0

 
Visite Chiapas, el paraiso de México.
devtuxtla
 
Posts: 392
Joined: Tue Jul 29, 2008 1:55 pm

Re: Animacion de Ventamas

Postby karinha » Mon Mar 27, 2017 12:58 pm

Mira se no estás usando la version de ERRSSYSW.PRG de la version antigua y cambia para la nueva. Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7794
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Animacion de Ventamas

Postby karinha » Mon Mar 27, 2017 3:22 pm

Que intentas hacer, esto?

Code: Select all  Expand view

#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(), ;
                                    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.
*/

 


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7794
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Animacion de Ventamas

Postby karinha » Mon Mar 27, 2017 3:26 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7794
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Animacion de Ventamas

Postby devtuxtla » Tue Mar 28, 2017 4:49 pm

Hola karinha

Gracias por responder, pero el problema esta en la funcion DLL32 FUNCTION, TODOS los metodos utilizados de TODAS las DLL´s emiten el mismo problema.

El error aparecio en esta API de animacion de ventanas, pero se presenta al accesar cualquier metodo definido en DLL32 FUNCTION

Estoy migrando una aplicacion que habia compilado con FWH 13.08 / xHarbour 1.2.3 (Build 20141106) / Bcc 5.8

Ahora con FWH 17.02 / xHarbour 1.2.3 (Build 20170312) / Bcc 7.2 TODAS los metodos definidos con DLL32 FUNCTION emiten el mismo error

Code: Select all  Expand view
+--------------------------------------------------------------------------------+
|Error BASE/1089  Argument error: ABS Arguments: ( [ 1] = Type: P Val: 748B0000) |
|(Quit)                                                                          |
|Error BASE/1089  Argument error: ABS Arguments: ( [ 1] = Type: P Val: 748B0000) |
|                                                                                |
|Error at ...: ABS(0) in Module:                                                 |
|Called from : ANIMATEWINDOW(0) in Module: C:\SISTPAK\PRG\SISTPACK.prg            |


Saludos
Visite Chiapas, el paraiso de México.
devtuxtla
 
Posts: 392
Joined: Tue Jul 29, 2008 1:55 pm

Re: Animacion de Ventamas

Postby karinha » Tue Mar 28, 2017 5:42 pm

Como compilas la aplicación?

*.bat

y

*.lnk

?
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7794
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 41 guests