Page 1 of 1

HIDESTARTICON / HIDETASKBAR Funcional desde DIALOGs

PostPosted: Fri Apr 03, 2009 2:34 pm
by Arturo Lopesoria
Hola a todos.
Tengo una aplicacion con una ventana principal y varios dialogos
La ventana principal usa unicametne botones y no usa menus, siendo un requisito no mostrar la barra de tareas.
He logrado mantener oculta la barra con el siguietne codigo:

Code: Select all  Expand view
       
oWnd:bGotFocus:={|| SHFullScreen( GetActiveWindow(), SHFS_HIDESTARTICON), ;
                                  SHFullScreen( GetActiveWindow(), SHFS_HIDETASKBAR   ), MoveWindow( oWnd:hWnd, 0,0,240,320 ) }
 


Esto funciona aun cuando el usuario pulsa la tecla de Start/windows, ejecuta alguna otra ventana de windows y regresa a la aplicacion,
siempre y cuando se encuentre en la ventana principal, sin embargo, si se encuentra en un Dialog no funciona, esto es:
al regresar a la aplicacion despues de haber abierto otra ventana de windows, la barra de tareas aparece en el Dialog.

He intentado incluir el ausente metodo ::GotFocus() en la clase TDialog, a partir del mismo metodo en TWindow,
y he probado que GotFocus si se ejecuta al recibir el foco, pero el codigo arriba mencionado no hace nada aparentemente cuando es llamado desde un Dialog.

ALGUNA SUGERENCIA?

Gracias, Saludos.

Re: HIDESTARTICON / HIDETASKBAR Funcional desde DIALOGs

PostPosted: Sat Apr 04, 2009 10:46 pm
by Antonio Linares
Arturo,

Aqui tienes un ejemplo,

test.prg
Code: Select all  Expand view

#include "FWCE.ch"

#define SHFS_HIDETASKBAR      0x0002
#define SHFS_HIDESTARTICON    0x0020
 
function Main()
 
   local oWnd
 
   DEFINE WINDOW oWnd TITLE "Test"

   @ 2, 2 BUTTON "Exit" ACTION oWnd:End() SIZE 80, 20
   
   @ 4, 2 BUTTON "Dialog" ACTION BuildDialog() SIZE 80, 20

   oWnd:bGotFocus = { || SHFullScreen( GetActiveWindow(), SHFS_HIDESTARTICON ),;
                         SHFullScreen( GetActiveWindow(), SHFS_HIDETASKBAR ),;
                         MoveWindow( oWnd:hWnd, 0, 0, 240, 320 ) }
 
   ACTIVATE WINDOW oWnd ;
      ON INIT ( SHFullScreen( oWnd:hWnd, SHFS_HIDESTARTICON ),;
                SHFullScreen( oWnd:hWnd, SHFS_HIDETASKBAR ),;
                MoveWindow( oWnd:hWnd, 0, 0, 240, 320 ) )
 
return nil

function BuildDialog()

   local oDlg
   
   DEFINE DIALOG oDlg

   @ 2, 2 BUTTON "Exit" ACTION oDlg:End() SIZE 40, 10
   
   ACTIVATE DIALOG oDlg ;
      ON INIT ( DlgFullScreen( oDlg:hWnd ),;
                MoveWindow( oDlg:hWnd, 0, 0, 240, 320 ) )
   
return nil    

#pragma BEGINDUMP

#include <hbapi.h>
#include <windows.h>
#include <aygshell.h>

HB_FUNC( DLGFULLSCREEN )
{
   SHINITDLGINFO shidi;
 
   memset( &shidi, 0, sizeof( SHINITDLGINFO ) );
 
   shidi.dwMask  = SHIDIM_FLAGS;
   shidi.hDlg    = ( HWND ) hb_parnl( 1 );
   shidi.dwFlags = SHIDIF_SIZEDLGFULLSCREEN;
 
   SHInitDialog( &shidi );
}

#pragma ENDDUMP
 

Re: HIDESTARTICON / HIDETASKBAR Funcional desde DIALOGs

PostPosted: Tue Apr 07, 2009 9:39 pm
by Arturo Lopesoria
Gracias Antonio.
Lo voy a probar ahora mismo.
Saludos y feliz semana Santa!!