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 / Exemple :
# //------------------------------------------------------------------------------
# // 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
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.