Newsgroup: it.comp.programmare.win32
Titolo: Controllo RichText

Ho creato un'applicazione Dialog Based ed ho inserito un controllo RichText
ed ho compilato il tutto
tentando di avviare l'applicazione appena fatta, questa non si avvia. se
cancello il controllo RichText tutto funziona perfettamente
Sapete spiegarmi perchè succede tutto questo?

 Sapete spiegarmi perchè succede tutto questo?
Cos'e`, un nuovo sport, "indovinate quale errore ho fatto senza
vedere i messaggi d'errore ne` il mio codice e neppure sapere che
framework uso fra i mille possibili"...?-)
OK, tiro a indovinare:
    -- non hai abilitato il COM?  (CoInitialize o simili...)
    -- il tuo dialogo non e` un Active/X container?  (CAxDialogImpl
        invece di CDialogImpl in ATL, ad esempio...)
    -- non hai Richtx32.ocx correttamente inserito nella registry?
        (si rimedia ad es. con regsvr32.exe)
Le possibilita` di sbagliare sono, ovviamente, infinite, e ogni
framework ha le sue piu` tipiche...
Alex

Dopo che compilo l'applicazione essa non mi da nessun messaggio di errore
solamente non si avvia.
in fase di creazione con app wizard io abilito il mio dialogo ad essere
ActiveX container
riguardo a COM non so come si abilita
non era mia intezione farti indovinare dove sbagliavo senza vedere il
codice, solo che io di codice non ne ho scritto, ripeto, ho inserito un
controllo RichText in una finestra di dialogo, ho compilato e cotruito
l'applicazione senza ricevere messaggi di errori, ed ho tentato di avviarla
ma non succede nulla.
tutto questo con il Visual C++ 6
Ciao

 ma non succede nulla.
AfxInitRichEdit, nella tua InitInstance, l'hai chiamata...?
Se si`, prova a far partire la tua applicazione da dentro a Visual
Studio, modalita` debug, con un breakpoint sulla prima riga
eseguibile di InitInstance, e vedi passo passo dove si ferma...
Alex

 cancello il controllo RichText tutto funziona perfettamente
La causa piu` comune e` quella che tu non abbia chiamato InitCommonControls()
prima di usare il controllo.
--
Bye! Lorenzo Lutti
http://www.geocities.com/SiliconValley/Peaks/6258/

Grazie Alex
Mettendo la AfxInitRichEdit() tutto funziona perfettamente.
Consigliami un libro dove possa trovare ed imparare a scrivere qualche
programma in Visual C++.
Relativamente a l'altro messaggio su come editare un file ti chiedo:
ho una finestra di dialogo con un controllo CEdit.
io ho instanziato un oggetto CFile, ma quando chiamo la funzione membro
mioOggetto.Read() mi si chiede la quantità di caratteri da leggere, ma come
faccio a sapere la quantità di caratteri, io voglio editare l'intero file, e
quindi voglio leggere tutti i caratteri del file. Illustrami
Grazie
Carmelo

 quindi voglio leggere tutti i caratteri del file. Illustrami
mioOggetto.GetLength() ti dice quanti caratteri contiene il file.
Usa questo risultato per dimensionare un'area di memoria per
tenere tutti questi dati.  Il modo migliore e`, a mio parere,
usare i vector standard del C++, quindi aggiungi fra i tuoi
include (ad esempio nell'header precompilato stdafx.h):
    #include <vector>
    using std::vector;
e per leggere l'intero file farai ad esempio:
    void leggitutto(CFile& file, vector<char>& chars) {
        chars.resize(file.GetLength()+1);
        int quanti = file.Read(chars.begin(), chars.size()-1);
        chars[quanti] = 0;
    }
Per pompare tutto dentro un CEdit, ad esempio:
    void mostratutto(CEdit& edit, vector<char>& chars) {
        edit.SetWindowText(chars.begin());
    }
Puoi anche adoperare in modi analoghi gli oggetti
std::string, o CString, invece di std::vector<char>.
Assurdo sarebbe invece lavorare a bassissimo livello
(con malloc e/o new) come senza dubbio qualcuno ti
suggerirebbe (perche` ha imparato a programmare
quando bisognava fare cosi` e non ha ancora invece
imparato che ci sono alternative migliori:-).
Alex