begin process at 2012 05 30 16:54:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Fichier & Disque

 > 

sauvegarde classe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

sauvegarde classe

vendredi 23 juin 2006 à 23:01:50 | sauvegarde classe

yourikahn

bonjour a tous
j'expose mon probléme
j'ai un petit programme mfc qui resemble en gros à un paint
j'utilise une classe virtuelle pure CFormeGeo dérivée en diverse Rectangle, tirangle ...
je stock toutes ces formes dans un CPtrList
et mon probléme viens maintenant
je voudrait pouvoir sauvegarder cette liste dans un fichier ( binaire ou texte ) et c'est la que j'ai besion d'aide.
alors si quelqu'un peux m'aider ^^
( en passant je cherche a trouver commenyt faire un imprime écran de mon CClientRect et de le sauvegarder en bmp ou jpeg)

merci , je reste a disposition pour des questions.
vendredi 23 juin 2006 à 23:11:30 | Re : sauvegarde classe

moumouteb

Membre Club
J'ai aussi fait un programme genre Paint mais j'avais choisi une autre solution pour enregistrer. Je mettais tout sous forme de ligne. Je stocker dans une classe le point de départ, le point de fin, la couleur l'épaisseur... et après il n'y a plus que la sérialisation a faire. Je pense que les triangle et rectangle peuvent etre remis sous forme de ligne (par contre pour les cercles...).
voila ma solution qui est peut etre pas la mieux. (par contre tu aurais du poster dans la rubrique MFC)
vendredi 23 juin 2006 à 23:12:36 | Re : sauvegarde classe

gbourgeois0019

Pour le bmp tu n'a qua regarder sur le net et tu va trouver la structure d'un bmp assez facilement. Ensuite dans la partie Data da cette structure, tu n'a qu'a copier ton image pixel par pixel...

Le fonctionnement d'un bmp est expliquer très clairement ici : http://www.fortunecity.com/skyscraper/windows/364/bmpffrmt.html#

Pour le CPtrList je ne sais pas par exemple ..

________________________________________________________________________
Hardware is what we play with until it breaks, Software is what we play with until it works !
vendredi 23 juin 2006 à 23:13:29 | Re : sauvegarde classe

yourikahn

j'y ai pensé mais mon paint a des cercles, et aussi la posibiliter de faire du dessin a main levée et la sérialisation deviendrai bp trop longue non?
vendredi 23 juin 2006 à 23:16:14 | Re : sauvegarde classe

yourikahn

je connais la structure d'un bmp mais je ne vois pas comment l'implémenter ici... si quelqu'un peux m'expliquer
vendredi 23 juin 2006 à 23:37:10 | Re : sauvegarde classe

moumouteb

Membre Club
Pour le temps de sérialisation c'était quasiment immédiat. Mon programme gérait aussi les lignes libres (en considérant que c'est une multitudes de lignes droites). Mais pour les cercles je n'ai pas la solution. Désolé.
vendredi 23 juin 2006 à 23:41:24 | Re : sauvegarde classe

gbourgeois0019

J'avais rien a faire donc j'ai fait ca pour toi mais j'ai pas tester j'espère que ca marche :P

void Printscreen(char* szPath)
{
    RECT r;
    DWORD OL;
    HDC dc;
    COLORREF cr;

    GetClientRect(hMainWnd,&r);

    dc = GetDC(hMainWnd);

    BITMAPFILEHEADER bfh;
    BITMAPINFOHEADER bih;
    RGBQUAD rgb;

    bfh.bfType = 19778;
    bfh.bfReserved1 = 0;
    bfh.bfReserved2 = 0;
    bfh.bfSize = 54 + ( r.right-r.left * r.bottom-r.top * 32 );
    bfh.bfOffBits = 54;

    bih.biSize = sizeof(BITMAPINFOHEADER);
    bih.biHeight = r.bottom - r.top ;
    bih.biWidth = r.right - r.left ;
    bih.biPlanes = 0;
    bih.biBitCount = 32;
    bih.biClrImportant = 0;
    bih.biClrUsed = 0;
    bih.biCompression = 0;
    bih.biSizeImage = 0;
    bih.biXPelsPerMeter = 0;
    bih.biYPelsPerMeter = 0;

    HANDLE hFile = CreateFile(szPath,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
    if ( hFile == INVALID_HANDLE_VALUE )
    {
        ::MessageBox(0,"Impossible de créer le fichier",0,0);
        return;
    }

    WriteFile(hFile,&bfh,sizeof(BITMAPFILEHEADER),&OL,0);
    WriteFile(hFile,&bih,sizeof(BITMAPINFOHEADER),&OL,0);

    for ( int i = 0 ; i < r.bottom - r.top ; i++ )
    {
        for ( int j = 0 ; j < r.right - r.left ; j++ )
        {
            cr = GetPixel(dc,r.left+j,r.bottom-i);
            rgb.rgbRed = GetRValue(cr);
            rgb.rgbGreen = GetGValue(cr);
            rgb.rgbBlue = GetBValue(cr);
            rgb.rgbReserved = 0;
            WriteFile(hFile,&rgb,sizeof(RGBQUAD),&OL,0);
        }
    }
    CloseHandle(hFile);
}

Ah et puisque tu est en MFC tu n'a qu'a changer hMainWnd pour this .. ca devrais marcher ...
________________________________________________________________________
Hardware is what we play with until it breaks, Software is what we play with until it works !
vendredi 23 juin 2006 à 23:44:14 | Re : sauvegarde classe

gbourgeois0019

Ah et bien en MFC tu n'aura même pas a spécifier this car ce sera la fonction de CWnd

________________________________________________________________________
Hardware is what we play with until it breaks, Software is what we play with until it works !
vendredi 23 juin 2006 à 23:46:37 | Re : sauvegarde classe

yourikahn

uhmmm je te remercie^^ mais i reste 'szPath'.. je met koi a la place?
vendredi 23 juin 2006 à 23:48:44 | Re : sauvegarde classe

yourikahn

et il y a un petit probléme sur " dc = GetDC(); " un probléme de convertion "convert from 'class CDC *' to 'struct HDC__ *'"
merci de m'aider^^

1 2

Cette discussion est classée dans : sauvegarde, classe, sauvegarder


Répondre à ce message

Sujets en rapport avec ce message

Sauvegarde d'un ptr [ par virtuA ] bonjours à tous, je voudrais savoir s'il y a un moyen de changer l'adresse pointée par un pointeur sans utiliser l'égalité de ptr et l'égalité de l'a c++ Sauvegarder dans le constructeur [ par Thieu86 ] Bonjour y aurait-il quelqu'un qui aurait une idée pour sauvegarder dans un fichier (dont le nom est passer en ligne de commande) dans le constructeur source de l'option de sauvegarde!!! [ par othland ] j'ai crée une fenetre (avec VC++) qui comporte plusieurs edits! aprés voir remplir ces champs là, je veux sauvegarder ce qui a été ecrit, je sais comm Sauvegarde de classe [ par bubbless ] Bonjour à tous !Je programme actuellement de simulation d'économie, et pour cela j'ai créé une classe monde, qui est composée, entre autres, de classe Suppression d'une instance de classe avec patron [ par jeanlandercy ] Bonjour,Je découvre avec joie les patrons de classe. J'ai dans l'idée de créer un patron de maillon pour liste. La conception, c'est ok, mais la suppr Besoin d'aide pour la sauvegarde en C [ par sim_richard286 ] Voilà j'ai un programme qui lit sur le port COM et il posséde un menu où il y a la lecture du port COM et la sauvegarde de la donnée.Maintenant je n'a info-bulle [ par ludo_it ] Salutj'ai un projet avec une CFormView, j'ai créé une boite de dialogue avec des editboxs , lesquelles possèdent des variables membres de type CEdit, Sauvegarder une image sur son disque dur [ par xtrememan ] Voila je voudrais savoir comment je peux recuperer une photo prise par une webcam, une fois prise, pouvoir l'enregistrer dans un repertoire du disque sauvegarde [ par noSnoR ] J'aimerais faire un fichier de sauvegarde de données sous forme d'un txt, ou le programme vas chercher les information juqu'a ce qui trouve la bonne l listes chainées [ par minet03 ] Voilà je suis en train de faire une appli sur les listes chainées avec une classe. Seulement je suis sûr et certain qu'il y a plein d'erreur (l'applic


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales