Witajcie.
Napotkałem na problem, który uniemożliwia mi zakończenie pracy nad programem. Wrzucam do schowka teksty i niestety schowek skleja mi kolejne wrzucone teksty razem. Próbowałem różnych metod czyszczenia schowka i niestety nic nie działa. Może ktoś podrzuci działający sposób? Z góry dziękuję i pozdrawiam
TClipboard *CB = new TClipboard();
CB->Open();
CB->Clear();
TEdit * ED = new TEdit(MG);
ED->Name = "ED";
ED->Parent = MG;
ED->Text = "tekst";
CB->SetTextBuf(ED->Text.c_str());
CB->Close();
delete CB;
delete ED;
EmptyClipboard;
Próbowałem tego już wcześniej i niestety bez zmian :) dziękuję.
Zatem jakichś śmieci używasz, zamiast poprawnego kodu.
Typowy scenariusz kopiowania do schowka:
if ( OpenClipboard(HWindow) && EmptyClipboard() )
HANDLE hmem = GlobalAlloc(GHND, sizdata); // jakiś tam ident, reprezentujący kawałek ramu w windows
char *p = GlobalLock(hmem); // to jest adres do tego zarezerwowanego wcześniej obszaru pamięci
// następnie wsadzasz dane do tego ramu pod p, np. tak:
for(i = 0; i < n; i++) {
p += GetString(p, i)); // kopiujemy jakieś tam linie tekstu, np. z ListBox,
*p++ = '\n'; *p++:= '\r'; // nowa linia
} // end for;
*p = 0; // koniec tekstu
GlobalUnlock(hmem); // odblokowujemy...
SetClipboardData(CF_TEXT, hmem); // wsadzamy...
CloseClipboard(); // i zamykamy
}
https://msdn.microsoft.com/en-us/library/windows/desktop/ff468802(v=vs.85).aspx
Sprawdź co robi ten obiekt: TClipboard i dostosuj się odpowiednio - do tego kodu.