Newsgroup: it.comp.programmare.win32
Titolo: Suggerimento: messaggi di testo da una DLL

Cerco un suggerimento o una guida allo stile.
Ho una DLL, con molte funzioni, alcune delle quali impiegano parecchio 
tempo ad essere eseguite (parecchi secondi, fino a qualche decina di 
secondi); durante il processo sono in grado fornire delle stringhe di 
testo, su quello che sta accadendo: come farle avere indietro ad un 
applicativo più generico possibile?
La prima idea è stata quella di fornire un HWND di cui modificare il 
testo (se non NULL) -- fra l'altro l'applicativo potrebbe anche decidere 
di ignorarle del tutto, visualizzando un suo messaggio di "processo in 
corso".
La seconda di passare una callback function (o anche un LPVOID, che in 
base ad un secondo parametro possa essere ritrasformato nel HWND di 
sopra), ma qui non so se comincio a complicare un meccanismo che magari 
ha già strade più semplici e molto più usate.
Lou

 e' una spamtrap.
Per scrivermi, usate zello <at> despammed <dot> com 

 le tue necessità.
Devo anche valutare che chi andrà ad impiegarlo magari vuole qualcosa di 
veramente rasoterra, per non complicarsi la vita a sua volta o magari 
per incapsularlo in qualsiasi sua idea.
Ok, grazie dell'appoggio all'idea della callback.
Lou

 applicativo più generico possibile?
Potresti provare con stdio, cioe` con delle semplici printf(). Anche se
"non si vedono", i canali I/O standard dovrebbero funzionare
correttamente anche nelle applicazioni Win32, ma qui lo dico e qui lo
nego. ;-)
Altrimenti potresti aprire un server socket e spedire le stringhe a chi
si connette. Questa e` sicuramente la soluzione piu` standard e pulita.
-- 
Lorenzo

 si connette. Questa e` sicuramente la soluzione piu` standard e pulita.
Mmmh... mi sembra inutilmente complesso, visto che in ogni caso fra 
applicazione e DLL c'è già un sistema di collegamento, sia che si opti 
per un link statico che dinamico.
Lo vedo ragionevole fra processi del tutto indipendenti.
La domanda originale era del tipo: ci saranno, sicuramente, anche molte 
DLL di sistema che devono comunicare qualcosa (in modo asincrono) ad 
un'applicazione che fa uso dei loro servizi; che meccanismo usano?
Un esempio che mi sovviene è SetTimer(), che usa appunto una callback.
Lou

 ha scritto nel messaggio
news:dMEFa.120981$g92.2...@news2.tin.it...

Manda dei messaggi (ne registri uno nuovo, oppure usi WM_USER+qualcosa), in
questo modo hai i parametri LPARAM e WPARAM con i quali puoi fare il cast di
una stringa, oppure definire una struttura dati di cui passare il puntatore.
Se usi SendMessage() puoi anche avere un valore in risposta.
I messaggi sono sicuramente gestiti bene da qualunque linguaggio per win32
e, secondo me, sono la cosa piu' elegante.
Ciao. Federico Molara.

 e, secondo me, sono la cosa piu' elegante.
Sono sempre più convinto che la cosa migliore sarà prevedere almeno un 
paio di metodi diversi, per permettere all'utente finale di scegliere 
poi quello più gradito.
Lou

 meccanismo usano?
Messaggi, ma di sicuro non comunicano attraverso delle stringhe.
-- 
Lorenzo

 lock di qualsiasi tipo mi sembra nuovamente un'inutile complicazione).
Se usi SendMessage() non hai questo problema, visto che la chiamata diventa
sincrona. Di fatto il funzionamento diventa identoco ad una callback, ma
senza le rogne della calling-convention.
Ciao. Federico.

 La prima idea è stata quella di fornire un HWND
che esclude a priori l'"applicativo generico"
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.1. C, C++ and ASM developers
                               and beta testers are welcome!