hiding the taskbar?

User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

where I can found TTrayIcon() class ?
Best Regards, Saludos

Falconi Silvio
StefanHaupt
Posts: 824
Joined: Thu Oct 13, 2005 7:39 am
Location: Germany

Post by StefanHaupt »

here is the class

Code: Select all | Expand

#INCLUDE "Fivewin.CH"#INCLUDE "Struct.CH"#define NIM_ADD             0#define NIM_MODIFY          1#define NIM_DELETE          2#define NIF_MESSAGE         1#define NIF_ICON            2#define NIF_TIP             4#define WM_SYSCOMMAND     274    // 0x112#define WM_LBUTTONDBLCLK  515    // 0x203CLASS TTrayIcon FROM TCONTROL   DATA oTray   DATA oWnd   DATA cIcon   DATA nIcon   DATA hIcon   DATA cCaption   DATA bLClicked   DATA bRClicked   DATA bMMoved   DATA bLDblClick   DATA bLButtonUp   DATA bRButtonUp   METHOD New(oWnd,cICON,nICON,cTip,lON,uLClick,uRClick,uMMoved,uLDblClick,uLButtonUp,uRButtonUp) CONSTRUCTOR   METHOD End()   METHOD HIDE() INLINE Shell_NotifyIconA( NIM_DELETE , ::oTRAY:cBuffer ) , ::oTRAY:nON := 0   METHOD SHOW() INLINE Shell_NotifyIconA( NIM_ADD    , ::oTRAY:cBuffer ) , ::oTRAY:nON := 1   METHOD Refresh( cIcon , nICON , cTip )   METHOD SetIcon( cICON , nICON ) INLINE ( ::Refresh( cIcon , nICON ) , ;                   ::Refresh( cIcon , nICON ) , ;                   IF( ::oTRAY:nON = 1 , EVAL( { |X| X:HIDE() , X:SHOW() } , SELF ) ,  ) )   METHOD SetText( cTITLE )        INLINE ( ::Refresh( , , cTitle ) , ;                   IF( ::oTRAY:nON = 1 , EVAL( { |X| X:HIDE() , X:SHOW() } , SELF ) ,  ) )   METHOD Command( nWPARAM , nLPARAM )ENDCLASSMETHOD Command( nWPARAM , nLPARAM ) CLASS TTrayIcon   LOCAL A := GetCursorPos()   LOCAL POINTAPI   STRUCT POINTAPI      MEMBER X AS LONG      MEMBER Y AS LONG   ENDSTRUCT   POINTAPI:X := A[1]   POINTAPI:Y := A[2]   ScreenToClient( ::oWnd:hWnd, A )//   A[1] := POINTAPI:X//   A[2] := POINTAPI:Y   DO CASE      CASE nLParam == WM_LBUTTONDOWN .AND. VALTYPE( ::bLClicked ) == "B"      RETURN EVAL(::bLClicked,a[1],a[2])      CASE nLParam == WM_RBUTTONDOWN .AND. VALTYPE( ::bRClicked ) == "B"      RETURN EVAL(::bRClicked,A[1],A[2])      CASE nLParam == WM_MOUSEMOVE .AND. VALTYPE( ::bMMoved ) == "B"      RETURN EVAL(::bMMoved,a[1],a[2])      CASE nLParam == WM_LBUTTONDBLCLK .AND. VALTYPE( ::bLDblClick ) == "B"      RETURN EVAL(::bLDblClick,a[1],a[2])      CASE nLParam == WM_LBUTTONUP .AND. VALTYPE( ::bLButtonUp ) == "B"      RETURN EVAL(::bLButtonUp,a[1],a[2])      CASE nLParam == WM_RBUTTONUP .AND. VALTYPE( ::bRButtonUp ) == "B"      RETURN EVAL(::bRButtonUp,a[1],a[2])   ENDCASERETURN SUPER:HANDLEEVENT( nWPARAM , nLPARAM )METHOD New(oWnd,cICON,nICON,cTip,lON,uLClick,uRClick,uMMoved,uLDblClick,uLButtonUp,uRButtonUp) CLASS TTrayIcon   LOCAL c   IF oWND = NIL      MSGSTOP("ERROR: You need to specify a main window for tray icon")      RETURN NIL   ENDIF   DEFAULT cIcon      := "OASYS.DLL"      ,;      nIcon      := 1                ,;      cTip       := oWnd:cCaption    ,;      uLClick    := oWnd:bLClicked   ,;      uRClick    := oWnd:bRClicked   ,;      uLDblClick := oWnd:bLDblClick  ,;      uMMoved    := oWnd:bMMoved     ,;      uLDblClick := oWnd:bLDblClick  ,;      uRButtonUp := oWnd:bRButtonUp  ,;      uLButtonUp := oWnd:bLButtonUp  ,;      lON        := .T.   ::oWND       = oWND   ::bLClicked  = uLClick   ::bRClicked  = uRClick   ::bMMoved    = uMMoved   ::bLDblClick = uLDblClick   ::bRButtonUp = uRButtonUp   ::bLButtonUp = uLButtonUp   ::cICON      = cICON   ::nICON      = nICON   ::oWnd:bTaskBar = { | nRow , nCol |  ::Command( nRow , nCol )}   ::Refresh( cIcon , nICON , cTip )   IF( lON , ::SHOW() , )RETURN SelfMETHOD Refresh( cIcon , nICON , cTip ) CLASS TTrayIcon  LOCAL c  LOCAL oTray  DEFAULT nICON := ::nIcon ,;     cICON := ::cIcon ,;     cTip  := ::cCaption  ::hIcon := DLL32GetExtractIcon(::oWnd:hWnd,::cICON,::nICON)  STRUCT oTray     MEMBER nSize      AS LONG     MEMBER hWnd       AS LONG     MEMBER nId        AS LONG //STRING LEN 4     MEMBER nFlags     AS LONG //STRING LEN 4     MEMBER nCallMsg   AS LONG //STRING LEN 4     MEMBER hIcon      AS LONG     MEMBER cToolTip   AS STRING LEN 64 //Len(cTip)+1     MEMBER nON        AS LONG  ENDSTRUCT  c := oTray:cBuffer  oTray:nSize        = oTray:SizeOf()  oTray:hWnd         = ::oWnd:hWnd  oTray:nId          = 1  oTray:nFlags       = nOr( NIF_ICON, NIF_MESSAGE, NIF_TIP )  oTray:nCallMsg     = WM_TASKBAR  oTray:hIcon        = ::hIcon  oTray:cToolTip     = cTip + CHR(0)  c := oTray:cBuffer  oTray:cBuffer := c  oTRAY:nON := IF( !EMPTY(::oTRAY) , ::oTRAY:nON , 0 )  ::oTray    = oTRAY  ::cCaption = cTip  ::cICON      = cICON  ::nICON      = nICON  SYSREFRESH()RETURN NILMETHOD End() CLASS TTrayIcon   LOCAL c   IF !EMPTY(::oTray)      ::oTray:nFlags := 0      c := ::oTray:cBuffer      Shell_NotifyIconA(NIM_DELETE,@c)      ::oTray:cBuffer := c   ENDIFRETURN .T.FUNCTION ClientToScreen(hWnd , aPOS)   LOCAL POINTAPI   STRUCT POINTAPI      MEMBER X AS LONG      MEMBER Y AS LONG   ENDSTRUCT   POINTAPI:Y := aPOS[1]   POINTAPI:X := aPOS[2]   KClientToScreen( hWnd, POINTAPI:cBuffer )   aPOS[1] := POINTAPI:Y   aPOS[2] := POINTAPI:XRETURN { POINTAPI:Y , POINTAPI:X }FUNCTION ScreenToClient(hWnd , aPOS)   LOCAL POINTAPI   STRUCT POINTAPI      MEMBER X AS LONG      MEMBER Y AS LONG   ENDSTRUCT   POINTAPI:X := aPOS[1]   POINTAPI:Y := aPOS[2]   KScreenToClient( hWnd, POINTAPI:cBuffer )   aPOS[1] := POINTAPI:X   aPOS[2] := POINTAPI:YRETURN { POINTAPI:X , POINTAPI:Y }// Windows API that extracts the icon handle of fileDLL32 Function DLL32GetExtractIcon(hWnd as LONG, szText as LPSTR, nIconIndex as LONG);AS LONG PASCAL FROM "ExtractIconA" LIB "SHELL32.DLL"// Windows API that converts Screen pixels to Client pixelsDLL32 Function KScreenToClient(hWnd as LONG, szText as LPSTR ) ;AS LONG FROM "ScreenToClient" LIB "user32.dll"// Windows API that converts Client pixels to Screen pixelsDLL32 Function KClientToScreen(hWnd as LONG, szText as LPSTR ) ;AS LONG FROM "ClientToScreen" LIB "user32.dll"


Stefan
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

Shell_NotifyIconA fun not found !!
Best Regards, Saludos

Falconi Silvio
areang
Posts: 128
Joined: Mon Jul 31, 2006 3:23 pm

Post by areang »

Hi Silvio, sorry for Error

please there is many erors
it not found lBebas

can you write a sample for it ?





Please Copy and Paste again the code on this forum, It was edited

Thank's
Areang
Post Reply