copier du texte formatté
copier du texte formatté
je n'ai trouvé nulle part comment copier (dans le presse papier) du texte formatté... manuellement bien entendu...
par exemple je voudrais copier
"texte" en Arial souligné 18
des pistes avec les api peut-être ?
Dri
par exemple je voudrais copier
"texte" en Arial souligné 18
des pistes avec les api peut-être ?
Dri
-
- Messages : 1092
- Inscription : mer. 28/janv./2004 16:22
- Localisation : 76
- Contact :
Peut-être une piste, l'éditeur de PureBasic le fait...
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL

J'ai regardé vite fait dans la doc MSDr. Dri a écrit :il fait un simple copier api de l'editor gadget en cours
moi je voudrais le faire sans gadget même invisible
Dri
je pense qu'avec l'API SetClipboardData, tu pourras faire ce que tu veux (enfin essaye)
Il faut d'abord utilioser l'API OpenClipboard pour ouvrir le presse papier, puis vider le presse papier avec l'API EmptyClipboard, puis SetClipboardData et enfin l'API CloseClipboard
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Et en copiant le pressepapiers, au format RTF ?
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
c'est trop simple pour que j'y penseProgi1984 a écrit :Et en copiant le pressepapiers, au format RTF ?

je teste...
sinon je regarderai du côté des pistes de Denis ^^
Dri
[edit]
d'apres un exemple de kiriasse
http://purebasic.hmt-forum.com/viewtopic.php?t=2785
Code : Tout sélectionner
DefType.s
;- sEnTeteRTF
NL= Chr(13) + Chr(10)
sEnTeteRTF = "{\rtf1 \ansi \deftab1134 \deff0 \fs18" + NL
sEnTeteRTF = sEnTeteRTF + "{\fonttbl" + NL
sEnTeteRTF = sEnTeteRTF + "{\f0 \fswiss Arial;}" + NL
sEnTeteRTF = sEnTeteRTF + "{\f1 \froman Times New Roman;}" + NL
sEnTeteRTF = sEnTeteRTF + "}" + NL
sEnTeteRTF = sEnTeteRTF + "{\colortbl" + NL
sEnTeteRTF = sEnTeteRTF + ";" + NL
sEnTeteRTF = sEnTeteRTF + "\red0\green0\blue0;" + NL
sEnTeteRTF = sEnTeteRTF + "\red255\green0\blue0;" + NL
sEnTeteRTF = sEnTeteRTF + "}" + NL
;- sInfoRTF
sInfoRTF = sEnTeteRTF + NL + "{" + NL
sInfoRTF = sInfoRTF + "\plain \cf2 \fs30 \qc \li0 \b TEXTE AU FORMAT RTF" + NL
sInfoRTF = sInfoRTF + "\par" + NL
sInfoRTF = sInfoRTF + "\par"+ NL
sInfoRTF = sInfoRTF + "\plain \f0 \fs20 \cf0 \ql \li100 \ri0 • Ceci est une petite démo qui consiste à afficher du texte au format RTF dans un EditorGadget de PureBasic." + NL
sInfoRTF = sInfoRTF + "\par" + NL
sInfoRTF = sInfoRTF + "\par" + NL
sInfoRTF = sInfoRTF + "\plain \f0 \fs20 \cf0 \ql \li100 \ri100 \b • Caractères gras" + NL
sInfoRTF = sInfoRTF + "\par" + NL
sInfoRTF = sInfoRTF + "\par" + NL
sInfoRTF = sInfoRTF + "\plain \f0 \fs20 \cf0 \ql \li100 \ri100 \i • Caractères en (dr)italique" + NL
sInfoRTF = sInfoRTF + "\par" + NL
sInfoRTF = sInfoRTF + "\par" + NL
sInfoRTF = sInfoRTF + "}}" + NL
;- presse papier
SetClipboardText(sInfoRTF)
MessageRequester("", "copié dans le presse papier")
End

je vais donc chercher un peu avec les api...
Dri
Code : Tout sélectionner
; Nico
; PB V3.93, le 23/05/05
; Copier du texte au format RTF
; dans le Presse Papier
Procedure.b SetRichTextClipboard()
uformat=RegisterClipboardFormat_("Rich Text Format")
If OpenClipboard_(0)
EmptyClipboard_()
chaine$="{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fswiss\fcharset0 Arial}}\uc1\pard\ul\f0\fs36 Texte}"
Hmem=GlobalAlloc_(#GPTR,Len(chaine$))
If Hmem
*lpmem=GlobalLock_(Hmem)
If *lpmem
CopyMemory(chaine$,*lpmem,Len(chaine$))
If SetClipboardData_(uformat,*lpmem)
Valeur.b=1
EndIf
GlobalUnLock_(Hmem)
EndIf
GlobalFree_(Hmem)
EndIf
CloseClipboard_()
EndIf
ProcedureReturn Valeur
EndProcedure
SetRichTextClipboard()
Mais si on fait ensuite un copier d'un autre texte dans Wordpad et on exécute de nouveau le code et on fait un coller, c'est le texte de Wordpad qui s'affiche!
[Edit]
Non, c'est bon je viens de corriger, évidemment si j'oublie de vider le Presse Papier!
[EDIT]
J'ai arrangé le code.

Essaye voir avec ça au début du code :
OpenLibrary(#PB_Any,"RICHED32.DLL")
OpenLibrary(#PB_Any,"RICHED32.DLL")
Tout obstacle est un point d'appui potentiel.
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Je sais pas trop....
C'est juste qu'une fois j'ai utilisé un zone texte RTF (dans la fenêtre A propos de.. de SoundEditor) et que ça a refusé de fonctionner jusqu'à ce que j'ajoute cette ligne au début de mon code.
Ca permettrait au moins de voir si W98 à cette DLL en standard ou si il faut lui ajouter. Je ne peux pas faire de test, j'ai XP et chez moi ça marche nickel.
C'est juste qu'une fois j'ai utilisé un zone texte RTF (dans la fenêtre A propos de.. de SoundEditor) et que ça a refusé de fonctionner jusqu'à ce que j'ajoute cette ligne au début de mon code.
Ca permettrait au moins de voir si W98 à cette DLL en standard ou si il faut lui ajouter. Je ne peux pas faire de test, j'ai XP et chez moi ça marche nickel.
Tout obstacle est un point d'appui potentiel.
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm