[MFC] sauvegarde et chargement de fichiers
Bonjour,
je souhaiterai effectuer la sauvegarde de fichiers dans mon application SDI. Je n'ai pas de question véritablement précise sur le code, mais plutôt sur la démarche à mettre en place pour effectuer un telle chose.
Lorsque j'ai créé mon projet, il m'a imméditament créé 1 View, 1 Doc, 1 App et 1 MainFrame. Je ne me sert pas de la vue et du document. Par contre dans ma mainframe, j'ai ajoué des splitters. Ces splitters contiennent différentes classes héritant des MFC, dont 3 classes héritant de CEditView.
Je souhaite désormais pouvoir enregistrer le texte contenu dans ces CEditView et pouvoir le charger. Afin de pouvoir le réafficher dans mes Views. Je m'interroge sur la méthode la plus facile à mettre en place pour effectuer ceci.
Si vous pouviez m'éclairer ce serait coOOOol. J'ai précisé un ensemble de questions si dessous, dont les réponses, je l'espère pourrait m'aider.
Questions:
-Faut il créer des classes Doc correspondant aux views pour sauvegarder leur contenu. Si oui, comment associer le document à la vue.
-Y a t'il d'autres méthodes que le passage par une classe document pour sauvegarder une vue? Si oui, qu'elle méthode est la plus judicieuse à utiliser?
-Comment charger un document sauvegardé et le réaffiché correctement dans l'interface (sachant que j'ai trois vue qui hérite de CEditView et qu'elle corresponde à un type de texte en particulier, soit un script, soit un fichier contenant des trames, etc.)
-Qu'est ce que la serialisation exactement?
-Quel est le nombre maximal de caractères qui peuvent être contenu dans un CEditView.
Merci de votre attention.
désolé pour les nombreuses fautes de frappe [nt]
Re: [MFC] sauvegarde et chargement de fichiers
Citation:
Envoyé par Aradesh
Bonjour,
...
>>-Faut il créer des classes Doc correspondant aux views pour sauvegarder leur contenu. Si oui, comment associer le document à la vue.
Non, pas forcément car tes vues sont pour le même document.
Dans ta classe Doc tu peut récupérer des pointeurs sur les vues et donc les données associées grace à ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
//*******************************************************************
// Retourne la vue de type désiré
//*******************************************************************
CView * ClsMyDoc::GetView(int Type)
{
POSITION ViewPos = this->GetFirstViewPosition();
bool Founded = false;
CView *CurView = NULL;
if(ViewPos != NULL)
{
do
{
CurView = this->GetNextView(ViewPos);
CRuntimeClass * RTClasse = CurView->GetRuntimeClass();
switch(Type)
{
case UNDEFINED : return NULL; break;
case 0 : if(RTClasse == RUNTIME_CLASS(ClsMyView0) ){Founded = true;}break;
case 1 : if(RTClasse == RUNTIME_CLASS(ClsMyView1)) {Founded = true;}break;
case 2 : if(RTClasse == RUNTIME_CLASS(ClsMyView2)) {Founded = true;}break;
}
}while(!Founded);
return CurView;
}
return NULL;
}
//Ou ClsMyView0 , 1 et 2 sont tes classes de EditView |
et Après faire utiliser Serialize
Citation:
Envoyé par Aradesh
Bonjour,
...
>>-Y a t'il d'autres méthodes que le passage par une classe document pour sauvegarder une vue? Si oui, qu'elle méthode est la plus judicieuse à utiliser?
Tu peut toujours faier une méthode Save, qui écris dans un fichier le contenus de tes textes.
Utiliser serialize c'est bien car ça te permet de faire la sauvegarde et le chargment dnas la même méthde grâce à CArchive::IsStoring. Y as pas forcement de gros avantage....
Citation:
Envoyé par Aradesh
Bonjour,
...
>>-Comment charger un document sauvegardé et le réaffiché correctement dans l'interface (sachant que j'ai trois vue qui hérite de CEditView et qu'elle corresponde à un type de texte en particulier, soit un script, soit un fichier contenant des trames, etc.)
Voir ci-dessus.
Citation:
Envoyé par Aradesh
Bonjour,
...
>>-Qu'est ce que la serialisation exactement?
Ben c'est juste une interface pour la sauvegarde. Sache que quoi qu'il arrive, il faudra que tu fasse ta méthode de sauvegardedans uun fichier.
Citation:
Envoyé par Aradesh
Bonjour,
...
>>-Quel est le nombre maximal de caractères qui peuvent être contenu dans un CEditView.
Si mes souvenirs sont bon c'est 2^32 / 2 caractère soit 2147483648 caractère( en gros 2Go), c'est à vérifier....