Copier du texte dans le presse papier

Messages postés
27
Date d'inscription
dimanche 10 février 2002
Statut
Membre
Dernière intervention
16 janvier 2006
- - Dernière réponse : 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 :)
Afficher la suite 

5 réponses

Messages postés
246
Date d'inscription
dimanche 2 juin 2002
Statut
Membre
Dernière intervention
11 septembre 2016
1
0
Merci
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
Commenter la réponse de glipper
Messages postés
27
Date d'inscription
dimanche 10 février 2002
Statut
Membre
Dernière intervention
16 janvier 2006
0
Merci
merci t trop une star :)
Commenter la réponse de arconius
Messages postés
246
Date d'inscription
dimanche 2 juin 2002
Statut
Membre
Dernière intervention
11 septembre 2016
1
0
Merci
Une star ? Non c un penguin !!! ;)
Glipper

ps : le code n'est pas de moi mdr je n'ai fait que l'adapter
Commenter la réponse de glipper
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
0
Merci
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-)
Commenter la réponse de magic_Nono
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
0
Merci
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-)
Commenter la réponse de magic_Nono