Funktioniert nicht
-
ich will zuerst etwas einfügen und dann wieder auslesen.
Das auslesen funktioniert ( wenn ich mit einem anderen Programm was reinkopiere)
aber wenn ich erst LOL einlese und dann ausgebe stürzt das Programm ab.//Die variablanen sind // HGLOBAL hGlobal; // PTSTR pGlobal; // static PTSTR pText; case ID_BEARBEITEN_EINF40001: pText = TEXT("LOOOL"); hGlobal = GlobalAlloc(GHND | GMEM_SHARE, (lstrlen(pText)+1)*sizeof(TCHAR)); pGlobal = (PTSTR)GlobalLock(hGlobal); lstrcpy(pGlobal, pText); GlobalUnlock(hGlobal); OpenClipboard(hwnd); EmptyClipboard(); SetClipboardData(CF_TCHAR, hGlobal); CloseClipboard(); return 0; case ID_BEARBEITEN_KOPIEREN: if(IsClipboardFormatAvailable(CF_TCHAR)) { OpenClipboard(hwnd); if(hGlobal = GetClipboardData(CF_TCHAR)) { pGlobal = (PTSTR)GlobalLock(hGlobal); if(pText) { free(pText); pText = 0; } pText = (PTSTR)malloc(GlobalSize(hGlobal)); lstrcpy(pText, pGlobal); } GlobalUnlock(hGlobal); CloseClipboard(); MessageBox(0, pText, TEXT("Die Zwischenablage"), 0); } return 0;
-
pText = TEXT("LOOOL");wenn ich das Entferne geht es aber pText ist doch die Variable die den Text aufnimmt??
-
Gucksu hier:
static PTSTR pText;und hier:
pText = TEXT("LOOOL");^^
Was aufgefallen ? Du hast einen Zeiger deklariert, dem du aber keinen Speicherplatz zugewiesen hast :p
In der zweiten Zeile, versuchst du in den Speicher reinzuschreiben, dein Zeiger zeigt aber noch auf nix...-> CRASH
Besser dazwischen :
pText = malloc (128);oder so...

Denke ich jetzt zumindest mal, ich weiß ja nicht, ob du deinem String vorher nen Speicherbereich zugewiesen hast.
Greetz
Xzi-bit
-
vielen dank jetz klappt es

-
im Bezug mit der Zwischenablage hätte ich noch eine Frage:
Was genau bringt WM_SIZECLIPBOARD W_PAINTCLIPBOARD und die ganzen Clipboard messages die es auch im normal gibt WM_SIZE? Was soll das bringen und wozu ist es gut?