Newsgroup: it.comp.lang.visual-basic
Titolo: Equivalente di DoEvent in C++

In VB uso il comando DoEvents quando ho bisogno
che Windows esegua un "giro" di tutti gli eventi
pendenti.
Chi mi sa dire l'equivalente in C ???
Ho bisogno di farlo dentro ad una mia DLL.
C'è un API ???
Grazie Ciao
Sir Jo

Sir Jo ha scritto:

Cioe' in una DLL scritta in C che viene richiamata da VB vuoi
richiamare il DoEvents del VB? Non penso che si possa fare.
Se invece lavori solo in C forse qualche trucchetto c'e'.
-- 
Samuele Battarra
mail server: 
libero.it
, indirizzo: battarsa@(mail server)
prova il mio newsreader:
http://digilander.iol.it/battarsa/programmi/leggiminews.html

Vai sull'msdn e cerca "CreateThread". I thread sono procedure asincrone
rispetto a quella chiamante.
Decisamente meglio (e piů professionale) della DoEvents (che non mi č mai
piaciuta!!!!)
bye bye

 Chi mi sa dire l'equivalente in C ???
Sleep 0
Ciao
*Roby*

Grazie !!!
Sir Jo


Un demone messaggero mi porto' una pergamena di Roberto Piazzolla
dal titolo "Re: Equivalente di DoEvent in C++" scritta 
da Roberto Piazzolla con il suo sangue:

meglio Sleep 10
-- 
Sidewinder  
---------------------------------------------------------------------
HOST SYSTEM NOT RESPONDING, PROBABLY DOWN. DO YOU WANT TO WAIT? (Y/N)
---------------------------------------------------------------------

 wrote in message
9kc4p9$3s63v$1...@ID-94194.news.dfncis.de...


 processare gli eventi che arrivano.
Mi potresti postare la procedura corretta ????
GRAAAAAAAAAAAAZIE !!!!!!!
Ciao
Sir Jo

La procedura e' abbastanza semplice, in quanto ti devi loopare su una
PeekMessage, con il flag di remove abilitato.
Dalla libreria MSDN:
PeekMessage
The PeekMessage function dispatches incoming sent messages, checks the
thread message queue for a posted message, and retrieves the message (if any
exist).
BOOL PeekMessage(
  LPMSG lpMsg,         // message information
  HWND hWnd,           // handle to window
  UINT wMsgFilterMin,  // first message
  UINT wMsgFilterMax,  // last message
  UINT wRemoveMsg      // removal options
);
Parameters
lpMsg
[out] Pointer to an MSG structure that receives message information.
hWnd
[in] Handle to the window whose messages are to be examined.
wMsgFilterMin
[in] Specifies the value of the first message in the range of messages to be
examined.
wMsgFilterMax
[in] Specifies the value of the last message in the range of messages to be
examined.
wRemoveMsg
[in] Specifies how messages are handled. This parameter can be one of the
following values. Value Meaning
PM_NOREMOVE Messages are not removed from the queue after processing by
PeekMessage.
PM_REMOVE Messages are removed from the queue after processing by
PeekMessage.
......
Consiglio pero' attenzione ad operare in questo senso in quanto si realizza,
in sostanza un altro loop dei messaggi oltre a quello interno al motore di
VB. La cosa e' fattibile, ma puo' dare dei problemi in fase di sviluppo in
quanto il loop dei messaggi viene gestito in maniera differente nel caso di
esecuzione all'interno dell'ambiente di VB (in sostanza se fai una stop
dell'esecuzione quando sei dentro al nuovo loop dei messaggi c'e' buona
possibilita' che ti si pianti). Del resto lo stesso problema e' presente
ogniqualvolta hai un subclassing.
In altre parole, fai sta strada solo se e' davvero necessario e se sai
quello che fai.....
Saluti,
Davide Cafasso



void CMyClass::DoEvents()
{
	MSG msg;
	// Process existing messages in the application's message
queue.
	// When the queue is empty, do clean up and return.
	while (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE) && !m_bCancel)
	{
		if (!AfxGetThread()->PumpMessage())
			return;
	}
}
richiamala con 
[void]DoEvents();
ciao
Noseda