Copier du texte dans le presse papier

arconius Messages postés 27 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 16 janvier 2006 - 26 août 2004 à 22:54
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 27 août 2004 à 11:05
Salut à tous :),

J'ai besoin d'un peu d'aide car je galère avec le presse papier.
Ce que je veux faire est très simple, j'ai une variable char qui contient admetons "Salut !!" et je voudrais copier son contenu dans le presse papier.

A priori, cela me paraissait hyper simple seulement voilà, je ne trouve aucun exemple qui m'aide vraiment.

j'ai trouver ça sur Cpp :

DWORD len;
HGLOBAL hgbl;
char *pmem;
len = GetWindowTextLength(hwnd);
if(!len) return 0;
hgbl = GlobalAlloc(GHND, len + 1);
if(!hgbl) return 0;
pmem = (char*)GlobalLock(hgbl);
GetWindowText(hwnd, pmem, len + 1);
GlobalUnlock(hgbl);
OpenClipboard(hwnd);
EmptyClipboard();
SetClipboardData(CF_TEXT, hgbl);
CloseClipboard();

seulement je ne comprend pas trop comment ça fonctionne, dotant plus qu'apparement il récupère ici le texte grace à GetWindowText.

Je pensais m'en sortir en bidouillant ça mais j'y arrive :(, y aurais t'il quelqu'un de plus malin ici ??

Merci d'avance :)

5 réponses

glipper Messages postés 246 Date d'inscription dimanche 2 juin 2002 Statut Membre Dernière intervention 11 septembre 2016 1
27 août 2004 à 00:20
Tiens cette partie de code te copie la chaine "Le Texte" dans le presse papier :) Je trouve ca quand meme bien compliqué pour faire copier du texte dans le presse papier, mais apparament la fonction SetClipboardData veut un HANDLE comme second parametre donc bon....

HANDLE hGlobal;
hGlobal = GlobalAlloc(GHND | GMEM_SHARE, sizeof("Le Texte")+1);
char *pointeur;
pointeur = (char *)GlobalLock(hGlobal);
strcpy(pointeur, "Le Texte");
GlobalUnlock(hGlobal);

OpenClipboard(hwnd);
EmptyClipboard();
SetClipboardData(CF_TEXT, hGlobal);
CloseClipboard();

Glipper
0
arconius Messages postés 27 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 16 janvier 2006
27 août 2004 à 00:22
merci t trop une star :)
0
glipper Messages postés 246 Date d'inscription dimanche 2 juin 2002 Statut Membre Dernière intervention 11 septembre 2016 1
27 août 2004 à 00:24
Une star ? Non c un penguin !!! ;)
Glipper

ps : le code n'est pas de moi mdr je n'ai fait que l'adapter
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
27 août 2004 à 11:04
un autre

void BVisuel::copieTextDsPressePapier(const BString &txt)
{
/// --------------------------------------------------------------------------------------
/// ---------------- BVisuel::copieTextDsPressePapier(const BString& txt) ----------------
/// --------------------------------------------------------------------------------------
/// ----- Objectif : copie un txt ds le presse papier
/// ----- PreCond : presse papier préhenptable
/// ----- PostCond : presse papier vidé & remplacé
/// ----- Etat : 1 (-1<0<1<2)
/// --------------------------------------------------------------------------------------
/// ----- const BString& txt : texte à copier
/// --------------------------------------------------------------------------------------
/// ----- Var Muettes (cf.partie préc) (1) : txt
/// ----- Var Internes à la fonction (2) : hClipboardData ,pchData
/// ----- Var In (1) : txt
/// ----- Var In Globales Constantes (2) : CF_TEXT ,GMEM_DDESHARE
//BString plomp=txt;plomp+="\n\nprêt a être copié le txt ds le presse papier"; informe(plomp);
if(!OpenClipboard(NULL))
informe("échec d'ouverture du presse papier",false);
else
{
if(!EmptyClipboard())
informe("échec de vidage du presse papier",false);
// informe(msg);
// recup Net DEB
/// algo : {Clipboard locked && Clipboard empty.}
/// algo : allocate the global memory for our data.
HGLOBAL hClipboardData;
hClipboardData=GlobalAlloc(GMEM_DDESHARE, txt.getLength()+1);
// Calling
/// Nota : GlobalLock returns a pointer to the data associated with the handle
char*pchData;
pchData=(char*)GlobalLock(hClipboardData);
/// algo : copie
strcpy(pchData, (const char*)txt);
// strcpy(pchData, LPCSTR(strData));
/// algo : unlock the memory
/// Nota : never call GlobalFree : automatically when EmptyClipboard is next called.
GlobalUnlock(hClipboardData);
/// algo : set the Clipboard data by specifying that ANSI text is being used and passing the handle to the global memory.
SetClipboardData(CF_TEXT,hClipboardData);
/// algo : close the Clipboard
// recup FIN
if(!CloseClipboard())
informe("échec de fermeture du presse papier",false);
/// algo : {Clipboard unlocked}
}
}

et là, tt est commenté....
à l'extreme....

je me suis plutot laché qd je l'ai fait lol

++

Magic Nono: l'informagicien! 8-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
27 août 2004 à 11:05
rq: il s'agit d'une méthode statique ou alors d'une meth ds le namespace BVisuel....

si tu ve, tu pe supprimer....

Magic Nono: l'informagicien! 8-)
0
Rejoignez-nous