2010-02-12 28 views
7

Mã bổ sung-clip-board mà chúng tôi có trong cơ sở mã của chúng tôi là khá thấp - cấp phát bộ nhớ toàn cục và vân vân. Đối với các trường hợp đơn giản, tôi chỉ muốn đặt một số văn bản đơn giản trên clipboard, có bất kỳ thói quen mà có thể bọc tất cả những thứ đó?MFC có cung cấp một cách nhanh chóng để đưa văn bản vào clipboard?

Ví dụ là CRichEditCtrl có Sao chép() & Phương thức Cut() tự động đặt lựa chọn hiện tại vào khay nhớ tạm. MFC có làm cho loại chức năng này có sẵn trong sự cô lập?

Cập nhật: Tạo một new question dựa trên phản ứng mwigdahl của

+0

Chỉ có một tôi biết là http://msdn.microsoft.com/en-us/library/sze892zx%28VS.80%29.aspx mà tôi giả sử là những gì bạn đã sử dụng. Thậm chí nếu không, nó hầu như không cung cấp cho bạn thêm nhiều như bạn gần như chắc chắn vẫn cần phải gọi GlobalAlloc hoặc tương tự. – tyranid

Trả lời

6

Không, nhưng nó không phải là khó để quấn nó cho mình. Phỏng theo Frost Code (và chưa được kiểm tra):

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

Tôi đã chỉnh sửa mã của bạn để biên dịch và không bị lỗi trên Unicode (nhỏ) và có một vấn đề khác. Vui lòng xem tại đây: http://stackoverflow.com/questions/2265382/win32-copying-string-to-clipboard-only-one-character-written-when-pasted –

+0

Ồ, đó là một lỗi đơn giản. Tôi sẽ đánh dấu câu trả lời được chấp nhận này :) –

+0

Cảm ơn! Vui mừng nó đã giúp! – mwigdahl

Các vấn đề liên quan