Página 2 de 2

hprogres e NewBox()

Enviado: 28 Out 2021 10:14
por JoséQuintas
DS_SETFOREGROUND
Causes the system to use the SetForegroundWindow function to bring the dialog box to the foreground. This style is useful for modal dialog boxes that require immediate attention from the user regardless of whether the owner window is the foreground window.
The system restricts which processes can set the foreground window. For more information, see Foreground and Background Windows.
Este faz a mesma coisa, mas pelo menos fica limitado ao aplicativo.

hprogres e NewBox()

Enviado: 28 Out 2021 10:27
por JoséQuintas
progbar.png
Ficou menos ruim....
Está acima de tudo do aplicativo, mas não acima de tudo do windows.

hprogres e NewBox()

Enviado: 28 Out 2021 10:31
por JoséQuintas
Acho que isso é o melhor que dá pra fazer, já que se for pra fixar encima da janela, pra isso seria o progressbar normal, sem dialog.
O mesmo se fixar como modal, o que vai impedir de mexer na outra janela, que seria melhor deixar dentro da janela, sem ser newbox.

hprogres e NewBox()

Enviado: 28 Out 2021 10:41
por JoséQuintas
Eu disse tempos atrás, acho mais fácil mexer nos fontes da hwgui do que criar janelas em hwgui.
Tenho minhas limitações, mas consigo ajudar.

E volto a dizer: fontes da hwgui são parecidos com gtwvg, dá pra aproveitar muita coisa de uma pra outra, só vamos esbarrar em diferenças em C, e o Harbour 3.4 tá muito bom nisso.

hwgui, repare que é tudo SendMessage():

Código: Selecionar todos

/*
   UpdateProgressBar( hPBar )
*/
HB_FUNC( HWG_UPDATEPROGRESSBAR )
{
   SendMessage( ( HWND ) HB_PARHANDLE( 1 ), PBM_STEPIT, 0, 0 );
}

/*
   ResetProgressBar( hPBar )
   Added by DF7BE
*/
HB_FUNC( HWG_RESETPROGRESSBAR )
{
   SendMessage( ( HWND ) HB_PARHANDLE( 1 ), PBM_SETPOS,
         ( WPARAM ) 0 , 0 );
}

/*
   SetProgressBar( hPBar , nPercent )
*/
HB_FUNC( HWG_SETPROGRESSBAR )
{
   SendMessage( ( HWND ) HB_PARHANDLE( 1 ), PBM_SETPOS,
         ( WPARAM ) hb_parni( 2 ), 0 );
}

HB_FUNC( HWG_SETRANGEPROGRESSBAR )
{

   SendMessage( ( HWND ) HB_PARHANDLE( 1 ), PBM_SETRANGE, 0, MAKELPARAM( 0, hb_parni( 2 ) ) );
   SendMessage( ( HWND ) HB_PARHANDLE( 1 ), PBM_SETSTEP, 1 , 0 ); 
}   
progrbar na gtwvg do Harbour 3.4: idem, mas em PRG, e acaba usando wapi_SendMessage() da hbwin.

Código: Selecionar todos

METHOD WvgProgressBar:SetValue( nValue, nRangeMin, nRangeMax, nSpeed )

   IF HB_ISNUMERIC( nRangeMin ) .AND. HB_ISNUMERIC( nRangeMax ) .AND. ! ::lMarquee
      ::nRangeMin := nRangeMin
      ::nRangeMax := nRangeMax
      ::sendMessage( PBM_SETRANGE, 0, WIN_MAKELONG( ::nRangeMin, ::nRangeMax ) )
   ENDIF
   IF HB_ISNUMERIC( nValue ) .AND. ! ::lMarquee
      ::sendMessage( PBM_SETPOS, nValue, 0 )
      ::nValue := nValue
   ENDIF
   IF HB_ISNUMERIC( nSpeed ) .AND. ::lMarquee
      ::sendMessage( PBM_SETMARQUEE, 1, nSpeed )
      ::nSpeed := nSpeed
   ENDIF

   RETURN ::sendMessage( PBM_GETPOS, 0, 0 )

METHOD PROCEDURE WvgProgressBar:SetColorBarFG( nColor )

   IF HB_ISNUMERIC( nColor )
      ::sendMessage( PBM_SETBARCOLOR, 0, nColor )
   ENDIF

   RETURN

METHOD PROCEDURE WvgProgressBar:SetColorBarBG( nColor )

   IF HB_ISNUMERIC( nColor )
      ::sendMessage( PBM_SETBKCOLOR, 0, nColor )
   ENDIF

   RETURN
Os exemplos de gtwvg podem ser ruins, mas os fontes escondem maravilhas, assim como a hbwin do Harbour 3.4 também tem maravilhas de compatilidade.
Digo isso pra olharem os fontes, e aproveitarem pra entender o comportamento e melhorar tudo.
Não importa o que se use, dá pra aproveitar de uma lib pra outra.

hprogres e NewBox()

Enviado: 28 Out 2021 10:53
por JoséQuintas

Código: Selecionar todos

METHOD WvgWindow:sendMessage( nMessage, nlParam, nwParam )
   RETURN wapi_SendMessage( ::hWnd, nMessage, nlParam, nwParam )
No caso da gtwvg existe um método junto das janelas, que já pega o handle (hWnd).
Como usa muito, acaba "economizando" o parâmetro que indica o handle, e evita erros.

Dá pra fazer igual na hwgui? talvez... mas entra linguagem C aí no meio, pra compatibilidade.

Ao invés de SendMessage( nomedocontrole:handle, ... ), é só usar nomedocontrole:SendMessage( ... ) ou ::SendMessage(...) sem precisar dizer que é o controle atual.
É interessante.

E se pensar direito: Pra que tanta função pra SendMessage(), e ficar dependendo de rotina em C, se uma wapi_SendMessage() abre até possilidades pro programador PRG testar outras coisas?

hprogres e NewBox()

Enviado: 28 Out 2021 11:09
por JoséQuintas
E pra quem usa console, gtwvg, gtwvt, etc....

Pode usar esse controle da hwgui, de progressbar, pra começo de migração/testes.

hprogres e NewBox()

Enviado: 28 Out 2021 11:15
por Itamar M. Lins Jr.
Olá!
O Kresin fica com a cabeça também no GTK(LINUX) ai tem que criar compatibilidades entre um e outro. Deve passar(ignorar) muita coisa (firulas) mas essa do X no dialog(progress) não pode ter.

Saudações,
Itamar M. Lins Jr.

hprogres e NewBox()

Enviado: 28 Out 2021 11:30
por JoséQuintas
hwgui.png
Vixe... agora que vi.... chamei a gthwg de gtwvg kkkk

hprogres e NewBox()

Enviado: 28 Out 2021 11:37
por JoséQuintas
Sobre esta mudança:

Código: Selecionar todos

// HBMK_HAS_* are automatically created by HBMK when use HBC files, no extra setup

#ifndef HBMK_HAS_GTWVG
Só quem usa HBMK2 e GTWVG.HBC, gtwvg como default, é que vai ter diferença.
O HBMK cria a variável automaticamente.
Ou seja, só eu kkkk