Newsgroup: it.comp.lang.c++
Titolo: Com con MFC

Ciao a tutti.......
Il mio problema e' scrivere un piccolo componente OLE
Automation da inserire poi in un progetto VB. Ho usato
il Wizard dll con MFC. VOrrei Esporre un paio di classi
della quali alcune proprieta' in sola lettura e qualche
metodo. IN parole povere vorrei esporre la classe C1
e C2 usata da C1. Per C1 la proproeta' PC1 in sola lettura 
e il metodo MC1. Per la classe C2 la proprieta' PC2 in
sola lettura e il metodo MC2. Qualcuno puo' suggerirmi
il wizard giusto, e quali passi fare? Naturalmente VB
dovra' "vedere" tutto cio' che ho esposto in modo da poter
usare, per esempio (presuppopnenedo che il codice della
classi C1 e C2 faccia qualcosa, il mio problema e' solo
esporre metodi e proprieta'!):
//-----------C++---------------
class C1{
int PC1;
C2 c:
void MC1() {}
}
class C2{
int PC2
void MC2() {}
}
'---------------VB--------------
Dim uno as C1
Dim due as C2
Dim p as integer
Set uno = new C1
uno.MC1
p = uno.PC1
uno.c.MC1
Set due = uno.c
p = due.PC2
Saro' infinitamente grato a chi mi possa aiutare. Sono sicuro
che con MFC e' una stupidaggine, ma finche' qualcuno non
ti illumina la strada..........GRAZIE!!!!!!!!!!!!!!!
-- 
Cristiano Corsani
e-Mail: 
cris...@dsi.unifi.it
www: 
http://dsi2.dsi.unifi.it/~cristian/

Con un po' di pazienza e tando MSDN sono riuscito
nell'intento di "esporre" le proprieta' e i metodi
che volevo. Ma.....
1) Per le proprieta' in sola lettura ho fatto cosi: 
dichiarato una proprieta' privata e nell'automation
ho messo una funzione get (e non set) che esternamente
viene vista col nome del parametro. E' ok?
2) Voglio creare un "ageggio" che aggancio in VB dal
menu' Riferimenti, una libreria di classi in pratica.
Devo creare una dll con MFC? MFC linkata come?
3) Diciamo che VB mi vede la classe (ho creato una
dll con MFC linkata dinamicamente), il problema e'
che quando vado a fare la 
Set current = new miaClasse
si incazza (ho dichiarato naturalmente Dim current as miaClasse).
Ho usato il Register Tool di VC++, nei registri compare
sia la mia dll che l'interfaccia, ma il COM-Viewer di VC++
non vede il componente.....insomma, cavolo succede?
Grazie, grazie, infinitamente grazie a quell'anima 
pia che mi illuminera' il cammino!!!!!!


Mi sono accorto di non avere disegnato le classi creatable.
E diciamo che anche questa e' risolta.
Il problema sta nel fatto che, non so se per problemi di registrazione
o quant'altro, non riesco proprio ad istanziare un oggetto
della mia libreria. COntinuo a ricevere il messaggio:
Errore 429 L'activeX non riesce a costruire l'oggetto 
o simili. Se qualcuno puo' darmi una dritta mi risolverebbe un
bel problema.
Grazie a tutti


o simili. Se qualcuno puo' darmi una dritta mi risolverebbe un
Scrivi un programma-cliente giocattolo in C++, usando
il supporto nativo per COM presente in VC++5; cosi`
potrai stamparti diagnostiche molto piu` dettagliate su
cosa si rompe e dove e come e perche`.  Ad esempio
se la tua DLL si chiama pippo.dll e contiene un oggetto
di classe pluto con interfaccia paperino, scrivi un prog
di console xx.cpp:
#import "pippo.dll" no_namespace
int main()
{
    CoInitialize(0);
    try {
        paperinoPtr p(__uuidof(pluto));
    } catch(_com_error&e) {
        // stampa dettagliata diagnostica
        // dall'oggetto e
    }
    CoUninitialize();
}
Alex