2010-02-12 15 views
7

Kod tabanımızda sahip olduğumuz klip-ekle-kartı kodu oldukça düşük seviyeli - genel bellek ayırıyor ve bu şekilde devam ediyor. Basit durumda, sadece panoya düz metin koymak istiyorum, tüm bu şeyler sarılabilir herhangi bir rutinleri var mı?MFC, panoya metin atmanın hızlı bir yolunu sunuyor mu?

Örnek, CRichEditCtrl'in geçerli seçimi panoya otomatik olarak koyan Copy() & Cut() yöntemlerine sahip olmasıdır. MFC bu tür bir işlevselliği tecritte mevcut kılıyor mu?

Güncelleme: Oluşturuldu bir new question mwigdahl yanıtının

+0

Sadece bir bildiğim ait http://msdn.microsoft.com/en-us/library/sze892zx%28VS.80%29.aspx varsayıyorum ki ne olduğunu zaten kullanıyorsun. Eğer hemen hemen kesinlikle GlobalAlloc ya da benzerlerini aramaya ihtiyacınız olduğu için size pek de fazla bir şey vermez. – tyranid

cevap

6

Hayır dayalı, ancak kendiniz sarmak için o kadar da zor değil. Frost Code den uyarlanmıştır (ve denenmemiş):

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

Unicode'da (küçük) derlemek ve çökmek için kodunuzu değiştirdim ve başka bir sorunla karşılaştım. Lütfen buraya bakın: http://stackoverflow.com/questions/2265382/win32-copying-string-to-clipboard-only-one-character-written-when-pasted –

+0

Oh, bu basit bir hataydı. Bu kabul edilen cevabı işaretleyeceğim :) –

+0

Teşekkürler! Memnun kaldım! – mwigdahl

İlgili konular