Bonsoir à tous,
Je viens poster ce message car mon problème me surpasse ... Je suis actuellement entrain de développer une petite appli pour accroitre les possibilités que nous offre le clipboard Windows. En gros, je veux garder un historique du clipboard et offrir la possibilité à l'utilisateur de re-selectionner dans cette historique un ancien "copié" qu'il a fais.
Pour cela je fais un petit test :
Tout marche bien le contenus de mon clipboard devient bien "HUHU".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 void setdata(char * tmp) { char *MonTest = (char *)malloc(strlen(tmp) + 1) ; strcpy(MonTest, tmp) ; OpenClipboard(NULL); EmptyClipboard(); SetClipboardData(CF_TEXT, MonTest); CloseClipboard() ; } int main(void) { char *montest = (char *)malloc(1024) ; strcpy(montest, "HUHU") ; setdata(montest) ; }
Là où ça devient 'bizarre' c'est quand j'intègre ce morceau de code dans mon projet windows :
Le premier point que je ne comprend pas c'est que dans la MessageBox, Data affiche bien le contenus que je passe en argument (c'est à dire "teeeeeeeeest"), mais ClipboardData affiche des Y et des I avec des accents alors que je viens de copier dedans le contenus de Data ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 int WINAPI WinMain(HINSTANCE FirstInstance, HINSTANCE PrevInstance, LPSTR CmdLine, int CmdShow) { MSG msg; WNDCLASSEX wc; // DWORD ThreadId ; char * test = (char *)malloc(1024) ; strcpy(test, "teeeeeeeeest") ; InputClipboardData(test) ; exit(0) ; } void InputClipboardData(char * Data) { int ClipboardDataLen = strlen(Data) + 1 ; char * ClipboardData = (char *)malloc(ClipboardDataLen) ; char *test = (char *)malloc(1024) ; sprintf(test, "Len : %d=>%s=>%s", ClipboardDataLen, Data, ClipboardData) ; MessageBox(NULL, test, "Erreur", MB_OK) ; strncpy(ClipboardData, Data, ClipboardDataLen) ; OpenClipboard(NULL) ; EmptyClipboard() ; SetClipboardData(CF_TEXT, ClipboardData) ; CloseClipboard() ; }
Le second point que je comprend pas c'est que le contenus du clipboard ne correspont pas au Y et I avec accent que j'ai obtenus plus haut, mais son contenus est écrasé ... Le clipboard est vide alors que la même fonction dans mon premier projet plus haut marche correctement.
Toutes informations susceptibles de m'aider sera la bien venus.
Partager