Newsgroup: it.comp.lang.c++
Titolo: Chiamata funzioni C++

 
 
 
 
Sto tentando di utlizzare delle  funzióni del C++ e di Windows, per leggere
e inviare del testo alla clipboard, con il compilatore Mingw.
 
Ho visto che ci sono header file come Winuser.h e Windows.h che contengono
delle  funzióni  per utilizzare la clipboard.
 
Domanda:  ma come si invoca una  funzióne C++  in C?,
 
Come faccio ad effettuare una chiamata a questa  funzióni?
 
WINUSERAPI BOOL WINAPI CloseClipboard(void);
WINUSERAPI HANDLE WINAPI GetClipboardData(UINT);
WINUSERAPI BOOL WINAPI OpenClipboard(HWND);
WINUSERAPI HANDLE WINAPI SetClipboardData(UINT,HANDLE);
 
Saluti
 
 
 
 
 
 


Le funzioni C++ non si possono chiamare direttamente dal C, ma per tua 
fortuna quelle citate sono funzioni C.
Per chiamarle devi prima includere l'appropriato header file, poi 
chiamarle con le seguenti istruzioni:
 
   b = CloseClipboard();
   h = GetClipboardData(ui);
   b = OpenClipboard(hw);
   h = SetClipboardData(ui, h2);
 
dove b e h sono variabili (l-value)
e dove ui, hw e h2 sono espressioni (r-value).
Oppure puoi usare le seguenti istruzioni:
 
   CloseClipboard();
   GetClipboardData(ui);
   OpenClipboard(hw);
   SetClipboardData(ui, h2);
 
Infine, se già non lo fai, devi specificare "user32.lib" al linker.
 
-- 
 
Carlo Milanesi
http://carlomilanesi.wordpress.com/
 

 Infine, se già non lo fai, devi specificare "user32.lib" al linker.
 
Ti ringràzio, anche se ho capito poco, dei valori  r-/ l-value
Che cosa sono?
 
Ciao 
 
 

Il 16/10/2012 13:26, Bertram ha scritto:
 > Ti ringràzio, anche se ho capito poco, dei valori  r-/ l-value
 > Che cosa sono?
 
Se cerchi in giro trovi sicuramente la risposta.
Comunque gli r-values o right-values sono le espressioni linguistiche 
che possono stare a destra di un assegnamento, mentre gli l-values o 
left-values sono le le espressioni linguistiche che possono stare a 
sinistra di un assegnamento.
Quindi, per esempio, se la seguente espressione è legale:
   *a = b + *c;
allora "*a" deve essere un l-value e "b + *c" deve essere un r-value.
Nota che un'espressione può essere sia r-value che l-value.


 Nota che un'espressione puņ essere sia r-value che l-value.
 
Ti ringrązio, in rete avevo trovato questo:
http://it.wikipedia.org/wiki/Valore_(informatica)
 
 
 ma ho capito poco.
 
Comunque, in un programma C, e possibile fare delle funzione che contengono:
HWND hwnd=0;
HWND htext;
 
non ho capito a cosa vogliono dire.
 
Ciao
 
 


 
 
-- 
1) Resistere, resistere, resistere.
2) Se tutti pagano le tasse, le tasse le pagano tutti
Soviet_Mario - (aka Gatto_Vizzato)
 

 Ciao


 non ho capito a cosa vogliono dire.
 
anche a italiano non č che brilliamo :-)
 
 
stavo scrěvendo in frétta. :-)
 
Ciao
 
 
 
 
 

 non mi viene in mente nessun contesto. Refreshami la memoria
 
Ma la tua espressione "*(3 + & A)" non è abbastanza standard?
Altri esempi di espressione che possono essere l-value sono:
   p[i]->f[j]
   q[i].f[j]
   g()
   *h()


 *h()
 
mmm ... giusto. Grazie, tutto regolare. Pensavo a chissà 
quale sorpresa, ma sono soltanto smemorato.



Vuoi un consiglio ? (senza offesa ma al tuo livello ti stai confondendo 
le idee).
Comperati ,ci sono anche ottimi tutorial in rete, un buon libro che 
insegni a
programmare in C - non troppo avanzato -
Studialo bene , poi fai la stessa cosa con un libro C++ .
Se hai passione , tempo e voglia di leggerli  rileggerli mettendo in 
pratica la programmazione mentre avanzi di livello imparerai Bene.
Anche capire come un SO gestisce la macchina e i programmi (processi) e 
imparare un po di assembly non guasta.