IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

CRichEditCtrl rtf chargé tronqué


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 28
    Par défaut CRichEditCtrl rtf chargé tronqué
    Bonjour

    Dans mon application, j'ai un CRichEditCtrl pour afficher le contenu d'un fichier RTF.

    Pour le charger, j'utilise le StreamInCallback.

    Ceci fonctionne parfaitement, sauf si le fichier est trop long.

    Par exemple si j'ai un fichier de 40000 caracteres (en rtf avec un source de 100000 octets) , seuls les 33000 premiers caractères sont affichés.

    En debug, au bout d'un certain nombre d'appels, le streamincallback n'est plus rappelé.

    J'ai fait le test avec des exemples d'utilisation du CRichEditCtrl et le résultat est le même.

    Le problème ne semble pas venir de mon RTF car celui-ci fonctionne parfaitement dans Word ou wordpad.

    Faut il faire une manipulation spéciale pour les fichiers de grosse taille ?

    Merci

  2. #2
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Tu passes directement de ton fichier au CRichEditCtrl, ou tu passes par un buffer intermédiaire genre CString ou TCHAR ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 28
    Par défaut
    Je passe directement par le fichier avec la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReadFile(hFile,pbBuff,cb,&bytesRead,NULL);

  4. #4
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Colle-moi ton code stp que je regarde en détail tout ça.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 28
    Par défaut
    Voici un exemple réduit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
     
    BOOL LoadRTFFile(HWND hEdit, char * pFileName)
    {
        if(!pFileName)
            return FALSE;
     
        HANDLE hFile;
        EDITSTREAM es;
     
        // ouvrir un fichier prêt pour la lecture
     
        hFile = CreateFile(pFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,
            FILE_ATTRIBUTE_NORMAL, 0);
     
        if(hFile==INVALID_HANDLE_VALUE)
            return FALSE;
     
        es.dwCookie = (DWORD)hFile;
        es.pfnCallback = StreamInCallback;
        es.dwError = 0;
        SendMessage(hEdit, EM_STREAMIN, SF_RTF, (LPARAM)&es);
        SendMessage(hEdit, EM_SETMODIFY, 1, 0);
     
        // ferme le fichier
        CloseHandle(hFile);
        return TRUE;
    }
     
    DWORD CALLBACK StreamInCallback(DWORD dwCookie, LPBYTE lpBuf, LONG cb, LONG * pcb)
    {
        ReadFile((HANDLE)dwCookie, lpBuf, cb, (DWORD*)pcb, NULL);
        return 0;
    }

  6. #6
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Au lieu de :
    SendMessage(hEdit, EM_STREAMIN, SF_RTF, (LPARAM)&es);
    Essaye :
    (CRichEdit *)hEdit->StreamIn(SF_RTF, es);
    perso j'y crois moyen à l'envoi de message au CRichEdit quand il s'agit d'être synchrone ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Jasper 3.0.1]Texte tronqué dans les RTF
    Par maloups dans le forum Jasper
    Réponses: 2
    Dernier message: 13/11/2008, 17h52
  2. Reports9i texte tronqué sur sortie RTF
    Par bellig dans le forum Reports
    Réponses: 0
    Dernier message: 14/04/2008, 13h59
  3. [MS-SQL2000] Requete tronquée
    Par Righetto Dominique dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2003, 17h59
  4. convertir rtf en html
    Par busard dans le forum Langage
    Réponses: 2
    Dernier message: 08/02/2003, 12h08
  5. Algorithme de conversion de RTF vers HTML
    Par youtch dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/09/2002, 12h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo