Newsgroup: it.comp.programmare.win32
Titolo: controlli per dialog

Qualcuno sa come si chiamano i controlli usati, per esempio,
nel task manager di windows 2000 per mostrare graficamente la
CPU usage history e la Memory Usage History e dove trovare informazioni
su come li posso utilizzare in una mia finestra ?
Grazie in anticipo, 
Marco Guidi


Usa Spy ++ per sapere come si chiamano. Comunque penso la loro
implementazioni sia nel codice di taskmgr.exe (il task manager), quindi
non puoi "scroccarla": o te la fai a mano o stai senza..

 informazioni su come li posso utilizzare in una mia finestra ?
non sono controlli speciali, sono semplicissime finestre Static su cui 
il task manager disegna
-- 
 < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
     Don't stand, REACT!      version 0.0.19. C, C++ and ASM developers
                              and beta testers are welcome!

 il task manager disegna
Col cavolo. Sono di classe "DavesFrameClass" (e quindi non sono neanche
Static subclassati), e sono implementati in una dll (dato che l'instance
handle è a 0x1000000 (dll, direi, ma non ho voglia di andare a vedere
quale).
Non vorrei essere polemico, ma forse tirare un occhio con Spy prima di
rispondere... Non vorrei che la vostra risposta a NT avesse più bachi di NT
stesso :-)
Ciao,
zello

 stesso :-)
Cavolo fregato... Avevo appena formattato, e non avevo Spy++, quindi ho
tirato ad indovinare ;-) non lo faccio piů. Adieů

 :-)
ne ha, parecchi. Ma al di là dell'umanamente comprensibile. Comunque io 
non c'entro niente, giuro


 non c'entro niente, giuro
<OT>
Dal mio modestissimo punto di vista, hai un ottimo livello di
preparazione - sicuramente migliore del mio (che non vengo da VB,
anche se non ci vedrei nulla di spregevole in questo),  il ché è una
cosa positiva per chi contribuisce ad un newsgroup. Solo che siamo
tutti qua' per insegnare/imparare, e un'attitudine del tipo "so tutto
io, tu sei uno stronzo" non fa altro che irritare, e toglie molto del
piacere di leggerti.
La polemica era stupida, e ti chiedo scusa. Ma - consiglio, per ciò
che un mio consiglio può valere - non essere sempre così aggressiva.
Tanto, o hai ragione, e non hai bisogno di aggredire per dimostrarlo,
o non ce l'hai, e se aggredisci passi per quella che non vuole neanche
ammettere i suoi torti, e ricorre alle offese personali.
</OT>
Ciao, e in bocca al lupo.
zello

 anche se non ci vedrei nulla di spregevole in questo),
non c'è niente di spregevole - IO vengo dal VB, se ti interessa 
saperlo, quindi so più o meno riconoscere altri che l'hanno bazzicato. 
Sempre se ti interessa saperlo:
 - i VBisti credono che subclassing sia ridefinire la window procedure
   di una sola finestra, mentre in realtà è una serie di concetti presi
   pari pari dall'OOP, in particolare polimorfismo e ereditarietà. Se
   non hai capito cosa intendo, posso approfondire abbondantemente
 - Spy++ è un "giochino" molto in voga in quegli ambienti
 - Visual Basic usa 0x11000000 come base address predefinito di tutte
   le DLL che produce
Riguardo al resto: non è facile essere un'altra persona


    non hai capito cosa intendo, posso approfondire abbondantemente
Interessa abbstanza a me. Mi faresti una panoramica? Thanks.
Leonardo

 Riguardo al resto: non è facile essere un'altra persona
Dillo a me
Ciao,
zello
PS: e grazie per il consiglio su Dependency Walker, l'ho scaricato una volta
al lavoro e - hai ragione - ha dell'indispensabile

 una volta al lavoro e - hai ragione - ha dell'indispensabile
già provato il profiling?


 Interessa abbstanza a me. Mi faresti una panoramica? Thanks.
Ci provo. La mia conoscenza della terminologia OOP è quella che è, ma i 
concetti dovrebbero essere chiari lo stesso
Ordunque. Sai cos'è una classe C++? in realtà, è qualcosa di non molto 
diverso da una struct del C. I membri di una classe altro non sono che 
i campi di una struttura. I metodi? "zucchero sintattico" per funzioni 
che accettano come primo parametro un puntatore a quella particolare 
struttura/classe. La gran parte della "magia" del C++, infatti, è opera 
del compilatore, e i primissimi compilatori C++ erano poco più che dei 
preprocessori. Esempio scemo:
// in C++
class Blargh
{
 private:
  int m_blah;
  char * m_bloh;
  int buh(int, int, char);
 public:
  static int m_bleh;
  void boh(int);
};
/* in C */
typedef struct
{
 int m_blah;
 char * m_bloh;
} Blargh;
static int Blargh_m_bleh;
/* i nomi di funzione, in realtà, sono molto più complicati perchè, per
   supportare l'overloading, devono tener conto dei tipi di tutti i
   parametri, del tipo di ritorno, ecc. */
int Blargh_buh(Blargh*, int, int, char);
int Blargh_boh(Blargh*, int);
Cosa c'entrano le finestre di Windows in tutto questo? Beh, una classe 
di finestre non è molto diversa da una classe C++, e una finestra non è 
molto diversa da un oggetto C++. La derivazione di una classe di 
finestra si ottiene creando una nuova classe, copia di quella da cui 
deriva, che contiene come dati extra il puntatore alla window procedure 
precedente, e l'offset dei dati extra per finestra. Normalmente si 
riserva, per ogni finestra, un puntatore all'oggetto C++ o alla 
struttura C corrispondente, per conservare lo stato della finestra, e 
lo si legge, quando necessario, con GetWindowLong. Salvare l'offset a 
questi dati nella classe è necessario perchè le classi predefinite 
riservano già un certo numero di byte per istanza
PS: avevo scritto una spiegazione molto più lunga, dettagliata, 
eccetera eccetera, ma avevo finito per perdermici :-) Se qualcosa non 
fosse chiaro, non hai che da chiedere


 fosse chiaro, non hai che da chiedere
è abbastanza chiara anche così, grazie :)!
Leonardo