Barra de Tarefas

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

BHS
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 16 Out 2007 12:01
Localização: SOROCABA/SP

Barra de Tarefas

Mensagem por BHS »

Boa noite colegas

Tô mudando meu pdv de clipper pra xharbour (wvt) e gostaria de saber como faz pra que a "barra de tarefas" do windows seja sobreposta ou então desabilita-la ?

Pois to usando o setfont com 20 e o setmode(37,85).

se eu for nas propriedades da barra de tarefas e clicar para ocultar automaticamente a barra de tarefas funciona, caso contrario não. Se alguem souber ficarei agradecido.

Obrigado

Henrique
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: Barra de Tarefas

Mensagem por Itamar M. Lins Jr. »

Use a Hwgui.
É muito mais fácil do que a WVW ou WVT etc...

Código: Selecionar todos

Function EscondeBarraDeTarefas ()

   Local nHandleBarraDeTarefas := 0

   nHandleBarraDeTarefas := HWG_FindWindow( "Shell_TrayWnd", "" )
   HideWindow( nHandleBarraDeTarefas )
   Return Nil

Function MostraBarraDeTarefas ()

   Local nHandleBarraDeTarefas := 0

   nHandleBarraDeTarefas := HWG_FindWindow( "Shell_TrayWnd", "" )
   ShowWindow( nHandleBarraDeTarefas )
   Return Nil

//Código abaixo não necessário caso use a Hwgui.
#define HB_OS_WIN_32_USED

#define _WIN32_WINNT 0x0400
#define _WIN32_IE    0x0400
#define OEMRESOURCE
#include <windows.h>
#include <commctrl.h>
#if defined(__DMC__)
#include "missing.h"
#endif
#include "guilib.h"
#include "hbapifs.h"
#include "hbapiitm.h"
#include "hbvm.h"
#include "hbstack.h"
#include "item.api"
#if defined(__XHARBOUR__)
#include "hbfast.h"
#else
#include "hbapicls.h"
#endif

#include <math.h>
#include <float.h>
#include <limits.h>

#define  FIRST_MDICHILD_ID     501

// void writelog( char* s );
void SetWindowObject( HWND hWnd, PHB_ITEM pObject );

PHB_ITEM GetObjectVar( PHB_ITEM pObject, char* varname );
void SetObjectVar( PHB_ITEM pObject, char* varname, PHB_ITEM pValue );
void DoEvents(void);

LRESULT CALLBACK MainWndProc (HWND, UINT, WPARAM, LPARAM) ;
LRESULT CALLBACK FrameWndProc (HWND, UINT, WPARAM, LPARAM) ;
LRESULT CALLBACK MDIChildWndProc (HWND, UINT, WPARAM, LPARAM) ;

extern HWND * aDialogs;
HWND hMytoolMenu = NULL;
static HHOOK			OrigDockHookProc;
static HHOOK         OrigButtonDockHookProc;
extern int iDialogs;

HWND aWindows[2] = { 0,0 };
HACCEL hAccel = NULL;
PHB_DYNS pSym_onEvent = NULL;
PHB_DYNS pSym_onEven_Tool = NULL;
// static PHB_DYNS pSym_MDIWnd = NULL;
static TCHAR szChild[] = TEXT ( "MDICHILD" );

/* Consume all queued events, useful to update all the controls... I split in 2 parts because I feel 
 * that DoEvents should be called internally by some other functions...
 */

HB_FUNC( HWG_FINDWINDOW )
{
   HB_RETHANDLE(  FindWindow( hb_parc(1),hb_parc(2) ) );
}

HB_FUNC( HIDEWINDOW )
{
   ShowWindow( (HWND) HB_PARHANDLE( 1 ), SW_HIDE );
}

HB_FUNC( SHOWWINDOW )
{
   ShowWindow( (HWND) HB_PARHANDLE( 1 ), SW_SHOW );
}

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Barra de Tarefas

Mensagem por alaminojunior »

BHS escreveu:gostaria de saber como faz pra que a "barra de tarefas" do windows seja sobreposta
Está aí uma coisa que ainda não conseguí fazer também, pois não encontrei meios. Quem sabe o Leonardo não nos ajude ... Apesar de não ser algo que atrapalhe tanto.
Itamar M. Lins Jr. escreveu:Use a Hwgui.
É muito mais fácil do que a WVW ou WVT etc...
É "muito mais fácil", para quem ???
A Hwgui sem dúvida é superior às GT???, mas pelo que eu andei lendo e estudando sobre ela, o cidadão precisa mudar o conceito de programação, e isso leva tempo e neurônios, que às vezes estão direcionados para outras coisas.
Portanto ....
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Barra de Tarefas

Mensagem por sygecom »

De uma olhada no post abaixo e veja se ajuda:
viewtopic.php?f=43&t=9350
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
BHS
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 16 Out 2007 12:01
Localização: SOROCABA/SP

Re: Barra de Tarefas

Mensagem por BHS »

valeu amigos

mas eu acho que o que o sygecom passou deve dar certo, vou fazer os testes.

Em relação a Hwgui, foi o que o alamino falou, é praticamente "outra linguagem de programação", e aqui na empresa o pessoal prefere o modo texto.

Obrigado

Henrique
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: Barra de Tarefas

Mensagem por Itamar M. Lins Jr. »

É "muito mais fácil", para quem ???
A Hwgui sem dúvida é superior às GT???, mas pelo que eu andei lendo e estudando sobre ela, o cidadão precisa mudar o conceito de programação, e isso leva tempo e neurônios, que às vezes estão direcionados para outras coisas.
Portanto ....
Devagar e sempre.
Vamos por partes.
No clipper:

Código: Selecionar todos

store 0 to nVar //tanto faz clipper ou hwgui.
MinhaVar:=savescreen(0,0,24,79) //precisa limpar a tela ou salvar antes em alguma  variavel savescreen bla,bla...
@ 0,0 clear to 24,59 //limpa tela
@ 0,0 to 24,79 double //desenha um quadrado.
@ 10,10 say "frase" get nVar picture "@e 99,99.99"
read 
//Nesse exemplo uma janela limitada em apenas 24 linhas e 80 colunas
//digamos que precise usar tamanho de letras diferentes. Não existe suporte.
na hwgui:

Código: Selecionar todos

 INIT DIALOG oDlg TITLE "Sistema " at 0,0 size 640,480 CLIPPER NOESC //vai abrir uma janela não é necessário salvar nada(mais simples?)
  @ 10,10 say "frase" size 40,20 
  @ 60,10 get oVar Var nVar picture "@e 99,99.99" size 70,20
  //podemos usar tambem @ 10,10 say 'frase' get nVar picture "@e 99,99.99"
 oDlg:Activate() //aqui ativamos o dialogo.
//neste exemplo uma janela limitada pela capacidade do monitor ou placa de video.
//digamos que precise usar tamanho de letras diferentes:
//colocando essa linha depois de 640,480 será a fonte padrao dos objetos da dialog.
// FONT HFont():Add( '',0,-13,400,,,) 
//usar <ENTER> para pular os gets
//CLIPPER 
//Nao deixar sair do dialog teclando <ESC>
// NOESC 
//Como pode observar muito mais recursos
Para PDV sem duvida das opções free é a hwgui pela simplicidade.

Tem mais coisas, mas o básico esse caminho ai.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
rodrmigu
Usuário Nível 3
Usuário Nível 3
Mensagens: 150
Registrado em: 27 Nov 2007 15:13
Localização: Indaiatuba SP

Re: Barra de Tarefas

Mensagem por rodrmigu »

ou ainda usando a xhgtk.

Usando comandos:

Código: Selecionar todos

INIT WINDOW oWindow     ;
   AT 0,0               ;
   TITLE "Hello World"  ;
   SIZE 640, 480        ;
   CENTER               ;
   RESIZEABLE     

   @ 100, 200 LABEL oLabel1 CAPTION "Codigo" SIZE  50, 15 OF oWindow
   @ 100, 350 EDIT oEdit1 VAR Var1 SIZE 100, 25 COLOR {235,247,16} BACKCOLOR {0,0,0} PICTURE "99999999" OF oWindow
   @ 420, 550 BUTTON oButton2 CAPTION "Close" SIZE  80, 25 ACTION oWindow:close() HINT "Close Hint" OF oWindow

ACTIVATE WINDOW oWindow
Usando o designer Glade que gera um código xml:

Código: Selecionar todos

#include "xhgtk.ch"

Function Main ()
    Local pBuilder
    Local pWindow
    Local pButton
    Local pCodigo, oCodigo, xCodigo := 0

    gtk_init()

    pBuilder := gtk_builder_new_from_file('hello.xml')
    pWindow  := gtk_builder_get_object(pBuilder, "window1")
    pButton  := gtk_builder_get_object(pBuilder, "button1")
    pCodigo  := gtk_builder_get_object(pBuilder, "entry1")

    DEFINE oCodigo WIDGET pCodigo VAR xCodigo PICTURE "999999" 

    gtk_signal_connect( pWindow, "destroy", {|| gtk_main_quit() } )
    gtk_signal_connect( pButton, "clicked", {|| gtk_widget_destroy(pWindow) } )
    gtk_widget_show_all( pWindow )

    gtk_main()
Return Nil
Hello.xml gerado pela Glade:

Código: Selecionar todos

<?xml version="1.0"?>
<interface>
  <requires lib="gtk+" version="2.16"/>
<!-- interface-naming-policy project-wide -->
  <object class="GtkWindow" id="window1">
    <property name="title" translatable="yes">Hello</property>
    <child>
      <object class="GtkVBox" id="vbox1">
        <property name="visible">True</property>
        <property name="orientation">vertical</property>
        <property name="spacing">5</property>
        <child>
          <object class="GtkHBox" id="hbox1">
            <property name="visible">True</property>
            <property name="spacing">5</property>
            <child>
              <object class="GtkLabel" id="Código">
                <property name="visible">True</property>
                <property name="label" translatable="yes">label</property>
              </object>
              <packing>
                <property name="position">0</property>
              </packing>
            </child>
            <child>
              <object class="GtkEntry" id="entry1">
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="invisible_char">●</property>
              </object>
              <packing>
                <property name="position">1</property>
              </packing>
            </child>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">False</property>
            <property name="position">0</property>
          </packing>
        </child>
        <child>
          <object class="GtkHButtonBox" id="hbuttonbox1">
            <property name="visible">True</property>
            <child>
              <object class="GtkButton" id="button1">
                <property name="label" translatable="yes">Fechar</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">False</property>
                <property name="position">0</property>
              </packing>
            </child>
          </object>
          <packing>
            <property name="expand">False</property>
            <property name="fill">False</property>
            <property name="position">1</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>
[]'s
Rodrigo
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Barra de Tarefas

Mensagem por alaminojunior »

Itamar M. Lins Jr. escreveu:Tem mais coisas, mas o básico esse caminho ai.
Gostei do exemplo Itamar, mas como você bem disse: é o básico e tem mais coisas !!! Mas tá quase me convencendo. :)Pos
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: Barra de Tarefas

Mensagem por Itamar M. Lins Jr. »

Gostei do exemplo Itamar, mas como você bem disse: é o básico e tem mais coisas !!! Mas tá quase me convencendo.
Mais "coisas", é no sentido de ter mais recursos.
Ex.

Código: Selecionar todos

Init Dialog oDlg TITLE "Exemplo" at 0,0 size 640,480 Style DS_CENTER
Esse " Style DS_CENTER " é para centralizar a janela.
Eu posso ligar ou desligar o Get:

Código: Selecionar todos

@ 10,10 get oNome Var cNome size 50,20 Style ES_UPPERCASE 
@ 10,10 get oNome Var cNome  picture "@!" size 50,20 //é a mesma coisa do exemplo acima.
@ 10,10 get oNome Var cNome size 50,20 Style ES_LOWERCASE // aqui não existe esse recurso no clipper. (somente minusculas)
Se eu quero desativar um get (objeto qualquer) caso o usuário não tenha permissão:
oNome:Disable()
Se o cursor(foco) estiver em outro local, posso manda-lo para onde for preciso.
oNome:SetFocus()
Mandar o foco para a janela:
oDlg:SetFocus()
Veja que existe duas "coisas" no get:
O objeto que nós nos referimos sempre com um "o" minusculo, e a variavel que o pessoal do clipper esta acustumado.
Numa tela com varios tipos de gets por exemplo:

Código: Selecionar todos

Private cNome,dNascido,nValor,mObs
Neste caso será oNome,oNascido,oValor,oObs.
Nós usamos o objeto para:
Ativar,Desativar,Focar,Esconder.
E usamos a variavel quando formos salvar,somar,mudar.
Se em uma janela(dialogo) precisarmos ter vários tipos de fontes, temos mais esse recurso:

Código: Selecionar todos

 PREPARE FONT oFontPadrao NAME "MS Sans Serif" WIDTH 0 HEIGHT -10
 PREPARE FONT oBrwFont NAME "Curier New" WIDTH 0 HEIGHT -11
 PREPARE FONT oFontPDV NAME "MS Sans Serif" WIDTH 0 HEIGHT -14
Neste exemplo, eu criei três objetos, são eles:
oFontPadrao, oBrwFont, oFontPDV.

Código: Selecionar todos

@ 005,120 Browse oBrw DataBase of oDlgV Size 690,250 Font oBrwFont
//Neste caso a fonte do browse vai ser Curier New 11
@ 10,10 get oNome Var cNome size 50,20 font oFontPDV
//Neste aqui a fonte é MS Sans Serif tamanho 14
Com poucos dias, qualquer pessoa que já programa em clipper pode trabalhar com Hwgui, é só querer.
E a pessoa não perde nada, porque esses conceitos são comuns ao Delphi, xHgtk etc...

Ps. Os recursos do browse da Hwgui, é fantástico, muito parecido com o tbrowse.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder