ProcessMessage() x Hwg_DoEvents()

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

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

ProcessMessage() x Hwg_DoEvents()

Mensagem por Itamar M. Lins Jr. »

Ola!
Explicação do Alexander de quando e como usar um ou outro.
They do the same, but I'm not sure, that hwg_DoEvents() processes
messages for dialogs and mdi windows ( Hwg_ProcessMessage() has a
special code for them ).
Additionally, Hwg_ProcessMessage() contains a sleep() function call.
The second parameter of Hwg_ProcessMessage() designates a number of
milliseconds to sleep, it is 1 by default. It was introduced for the
program do not eat too much processor time in a big cycles. You may try
to set this parameter to 0. Other option, which I use, is to call the
Hwg_ProcessMessage() not in each cycle iteration, but in 1 of 10, or
even 1 of 100. There is no any need to check messages after every skip.

Regards, Alexander.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

ProcessMessage() x Hwg_DoEvents()

Mensagem por janio »

Acho que o meu google tradutor comeu bola aqui kkkk

Ainda to sem entender a diferença entre ProcessMessage() e Hwg_DoEvents()

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
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

ProcessMessage() x Hwg_DoEvents()

Mensagem por Itamar M. Lins Jr. »

Ola!
ProcessMessage() e Hwg_DoEvents()
Eu tinha perguntado ao Alexander, porquê o ProcessMessage é mais lento que o hwg_DoEvents, ele explicou que o ProcessMessage tem um comando SLEEP que faz demorar mais do que DoEvents e explicou para nós não ficarmos usado ele assim:

Código: Selecionar todos

DO WHILE !EOF()

SKIP
ProcessMessage()

ENDDO
usar assim:

Código: Selecionar todos

nCiclo := 0
DO WHILE !EOF()

SKIP

If ++nCiclo == 100
   ProcessMessage()
   nCiclo := 0
endif

ENDDO

Essas funções evita aquela mensagem ordinária do windows "ESTE PROGRAMA NÃO ESTÁ RESPONDENDO"...

Usamos na indexação, relatórios...

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

ProcessMessage() x Hwg_DoEvents()

Mensagem por janio »

Itamar,

Eu uso/usava Hwg_DoEvents(), não a cada ciclo/skip, mas a cada xRegistros. Mas mesmo assim aqui acolá aparecia a msg "ESTE PROGRAMA NÃO ESTÁ MAIS RESPONDENDO TAL TAL...". Dava uma travada!

Depois que vi essa mensagem ha alguns dias (mesmo sem entender direito a diferença entre uma e outra hehehe), comecei a subtituir a Hwg_DoEvents() pela ProcessMessage() e tenho notado que a mensagem "nao respondendo" diminuiu muito (não lembro de ter visto mais).

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Responder