2010-02-12 13 views
7

Kod płytki dodawanej do klipsa, który mamy w naszej bazie kodu, jest dość niski - przydzielanie pamięci globalnej i tak dalej. Dla prostego przypadku chcę po prostu umieścić jakiś czysty tekst w schowku, czy są jakieś procedury, które mogą owijać te wszystkie rzeczy?Czy MFC zapewnia szybki sposób na wyrzucanie tekstu do schowka?

Przykładem jest to, że CRichEditCtrl ma Copy() & Cut() metody, które automatycznie umieszczają obecny wybór w schowku. Czy MFC udostępnia tę funkcję w izolacji?

Aktualizacja: Utworzony new question podstawie mwigdahl za odpowiedzi

+0

Tylko jeden Znam to http://msdn.microsoft.com/en-us/library/sze892zx%28VS.80%29.aspx które zakładam jest co już używasz. Nawet jeśli nie, nie daje to zbyt wiele, ponieważ prawie na pewno musisz zadzwonić do GlobalAlloc lub podobnego. – tyranid

Odpowiedz

6

No, ale to nie jest takie trudne, żeby go owinąć sobie. Zaczerpnięte z Frost Code (i niesprawdzone):

void SetClipboardText(CString & szData) 
{ 
    HGLOBAL h; 
    LPTSTR arr; 

    h=GlobalAlloc(GMEM_MOVEABLE, szData.GetLength()+1); 
    arr=(LPTSTR)GlobalLock(h); 
    strcpy_s((char*)arr, szData.GetLength()+1, szData.GetBuffer()); 
    szData.ReleaseBuffer(); 
    GlobalUnlock(h); 

    ::OpenClipboard (NULL); 
    EmptyClipboard(); 
    SetClipboardData(CF_TEXT, h); 
    CloseClipboard(); 
} 
+0

Zmodyfikowałem twój kod, aby skompilować i nie rozbił się na Unicode (podrzędny) i dostałem inny problem. Proszę zobaczyć tutaj: http://stackoverflow.com/questions/2265382/win32-copying-string-to-clipboard-only-one-character-written-when-pasted –

+0

O, to był prosty błąd. Zaznaczę to jako zaakceptowaną odpowiedź :) –

+0

Dzięki! Cieszę się, że pomogło! – mwigdahl

Powiązane problemy