Accueil > > > [C][RTF] EXEMPLE DE TABLEAU EN RTF (POUR RICHEDIT)
[C][RTF] EXEMPLE DE TABLEAU EN RTF (POUR RICHEDIT)
Information sur la source
Description
Vue qu'il y a beaucoup de demande, pour faire des tableaux et que ce n'est pas très compliqué ^^, je vous met une fonction pour ajouter un tableau de 2 colonnes. pour un tableau de 4 lignes et trois colonnes avec une marge inter cellule le code RTF serais : pour plus amples infos voir spécifications RTF ou ce site : http://www.biblioscape.com/rtf15_spec.htm { \rtf \trowd\ \trgaph70 \cellx2200 \cellx4400 \cellx6600 \intbl toto0 \cell tutu \cell titi \cell \row toto1 \cell tutu \cell titi \cell \row toto2 \cell tutu \cell titi \cell \row toto3 \cell tutu \cell titi \cell \row }
Source
- # //------------------------------------------------------------------------------
- # // Projet : Exemple source RichEdit
- # // Auteur : Hanteville Nicolas
- # // Date de modification : 26/12/2008
- # // Description : procédure de création de tableau de 2 colonne sur une seule ligne
- # // sans formatage de texte dans un RichEdit
- # //------------------------------------------------------------------------------
-
- void RichEditAjouterTableau(HWND HRichEdit,char* cel1,unsigned int tailleCel1,char* cel2,unsigned int tailleCel2)
- {
- //création de la chaine
- char tbuffer[4096];
- unsigned short tailleTxt;
-
- tailleTxt = strlen(cel1) + strlen(cel2);
-
- //mode automatique de gestion de la taille des colonnes
- if (tailleCel1 == 0)
- {
- tailleCel1 = strlen(cel1) * 100 + 200;
- }
- if (tailleCel2 == 0)
- {
- tailleCel2 = strlen(cel2)* 100 + 200;
- }
-
- //création de la chaine
- snprintf(tbuffer,4096,"{\\rtf\\trowd\\trgaph70\\cellx%d\\cellx%d\\intbl %s \\cell %s \\cell \\row}",tailleCel1,tailleCel1+tailleCel2,cel1,cel2);
-
- //init du format du texte (pour éviter de garder le format antérieur dans le tableau)
- // cette partie peut aussi servir à ajouter de la couleur, gras italique, etc..
- CHARFORMAT2 Format; //format du texte d'un richedit
- CHARRANGE Selection; //sélection
-
- ZeroMemory(&Format, sizeof(CHARFORMAT2));
- Format.cbSize = sizeof(CHARFORMAT2);
- Format.dwMask = CFM_COLOR|CFM_CHARSET|CFM_UNDERLINE|CFM_ITALIC|CFM_BOLD|CFM_SIZE;
- Format.crTextColor = 0;
- Format.dwEffects = 0;
- Format.yHeight = 200;
-
- //récupération de la taille du texte contenu, on ajoute le texte après
- GETTEXTLENGTHEX TxtLenfth;
- TxtLenfth.codepage=CP_ACP;
- TxtLenfth.flags=GTL_NUMCHARS;
- unsigned int pos= SendMessage(HRichEdit,EM_GETTEXTLENGTHEX,(WPARAM)&TxtLenfth,0);
-
- Selection.cpMin = pos;
- Selection.cpMax = pos+tailleTxt ; //attention ici il devrais
- // y avoir la taille réel du texte
- // sans le formatage RTF
-
- //mise en place de la zone de sélection
- SendMessage(HRichEdit, EM_EXSETSEL, 0, (LPARAM) &Selection);
-
- //format du text
- SendMessage(HRichEdit, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &Format);
-
- //écriture du texte dans le rich edit
- SendMessage(HRichEdit, EM_REPLACESEL,(WPARAM)0,(LPARAM)tbuffer);
- }
# //------------------------------------------------------------------------------
# // Projet : Exemple source RichEdit
# // Auteur : Hanteville Nicolas
# // Date de modification : 26/12/2008
# // Description : procédure de création de tableau de 2 colonne sur une seule ligne
# // sans formatage de texte dans un RichEdit
# //------------------------------------------------------------------------------
void RichEditAjouterTableau(HWND HRichEdit,char* cel1,unsigned int tailleCel1,char* cel2,unsigned int tailleCel2)
{
//création de la chaine
char tbuffer[4096];
unsigned short tailleTxt;
tailleTxt = strlen(cel1) + strlen(cel2);
//mode automatique de gestion de la taille des colonnes
if (tailleCel1 == 0)
{
tailleCel1 = strlen(cel1) * 100 + 200;
}
if (tailleCel2 == 0)
{
tailleCel2 = strlen(cel2)* 100 + 200;
}
//création de la chaine
snprintf(tbuffer,4096,"{\\rtf\\trowd\\trgaph70\\cellx%d\\cellx%d\\intbl %s \\cell %s \\cell \\row}",tailleCel1,tailleCel1+tailleCel2,cel1,cel2);
//init du format du texte (pour éviter de garder le format antérieur dans le tableau)
// cette partie peut aussi servir à ajouter de la couleur, gras italique, etc..
CHARFORMAT2 Format; //format du texte d'un richedit
CHARRANGE Selection; //sélection
ZeroMemory(&Format, sizeof(CHARFORMAT2));
Format.cbSize = sizeof(CHARFORMAT2);
Format.dwMask = CFM_COLOR|CFM_CHARSET|CFM_UNDERLINE|CFM_ITALIC|CFM_BOLD|CFM_SIZE;
Format.crTextColor = 0;
Format.dwEffects = 0;
Format.yHeight = 200;
//récupération de la taille du texte contenu, on ajoute le texte après
GETTEXTLENGTHEX TxtLenfth;
TxtLenfth.codepage=CP_ACP;
TxtLenfth.flags=GTL_NUMCHARS;
unsigned int pos= SendMessage(HRichEdit,EM_GETTEXTLENGTHEX,(WPARAM)&TxtLenfth,0);
Selection.cpMin = pos;
Selection.cpMax = pos+tailleTxt ; //attention ici il devrais
// y avoir la taille réel du texte
// sans le formatage RTF
//mise en place de la zone de sélection
SendMessage(HRichEdit, EM_EXSETSEL, 0, (LPARAM) &Selection);
//format du text
SendMessage(HRichEdit, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &Format);
//écriture du texte dans le rich edit
SendMessage(HRichEdit, EM_REPLACESEL,(WPARAM)0,(LPARAM)tbuffer);
}
Conclusion
Si vous avez des remarques ^^
J'espère que ce code viendra en aide aux désireux :p
Historique
- 26 décembre 2008 23:19:47 :
- - changement du titre
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Récupérer résultat d'une requête SQL dans un tableau? [ par Juju1988 ]
Bonjour Je débute en C et je cherche à récupérer le résultat de ma requête SQL dans un tableau en C. Je crois qu'il faut utiliser mysql_fetch_row ...
[PERL]extraction d'informations d'un fichier excel [ par yamra ]
Bonsoir, à tous j'ai un petit problème aidez moi: j'ai un script perl qui me permet d'extraire une colonne de mon fichier excel (excel.xls). Voici le
tri d'un tableau avec Qt [ par anouerensi ]
Salut, s'il vous plait aidez moi a trouver une solution pour acceder aux éléments de ce tableau afin de le trier en utilisant la methode de tri Shell.
un coup de main svt ^^ [ par monsi7 ]
Bonjour je dois realiser un programme qui dans un tableau a 2 dimensions (matrice) recherche le max de chaque ligne puis en prend le minimum(de tous l
Utilisation strcmp avec tableau [ par noname001 ]
Bonjour à tous. Dans le cadre d'un projet que j'ai à réaliser, je dois manipuler la fonction strcmp de cstring.. En effet, j'essaye de l'utiliser pou
mettre une chaine string dans un tableau [ par flowneo ]
bonjour, je voudrais savoir comment mettre lettre par lettre une chaine string dans un tableau ...? merci
c++ : problème de tableau dynamique dans une classe [ par rollingsteen ]
Hello, je dois développer une application permettant de travailler sur de très gros nombres (200 digits) -> les digits sont stockés dans un tableau.
Probleme d'algo pour toutes combinaisons possible d'un tableau [ par arnaud8888 ]
Bonjour à tous, j'ai un problème d'algo ... en gros j'ai un tableau qui contient des valeurs, disons : A B C D j'aurais besoin à la fin de mon algo
opérations sur les tableaux ??? [ par marco62118 ]
bonsoir je n'ai jamais programmé en C++, mais un internaute m'avait fait une dll permettant de faire varier un tableau de valeur en le multipliant par
CBCGPGridCtrl Multiple Selection row [ par dorras7 ]
Bonjour, j'utilise CBCGPGridCtrl en c++ j'ai besoin de savoir l'evénement qui se déclenche lorsque l'utilisateur sélectionne plusieurs lignes (row) M
|
Derniers Blogs
TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : RETOUR D'EXPéRIENCE SUR LA MISE EN PLACE D'UN CLOUD PRIVéTECHDAYS PARIS 2012 : RETOUR D'EXPéRIENCE SUR LA MISE EN PLACE D'UN CLOUD PRIVé par ROMELARD Fabrice
Speaker : Guillaume Rochette Cette session est dédiée à fournir le retour sur la mise en place d'un cloud privé (IaaS) par Osiatis pour son compte ou celui de ses clients. Ce projet s'est déroulé sur 4 mois et a permis de faire évoluer...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYSTECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYS par ROMELARD Fabrice
Speakers : Lionel Limozin et Alain Marty La session commence par une découverte de SharePoint à travers la mise en place d'un environnement SharePoint pour la gestion des Sessions animées par BeWise. Le besoin est très ba...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
AUMLAUML par sassion
Cliquez pour lire la suite par sassion
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|