如果在MFC编辑控件中再次粘贴相同的数据,如何跟踪?

如果在MFC编辑控件中再次粘贴相同的数据,如何跟踪?,mfc,Mfc,我已经为我的编辑框实现了粘贴例程。 如果再次粘贴相同的缓冲区,我的意思是我一直按ctrl+V,如何有效地处理这种情况,使我的代码更快 COleDataObject obj; if (obj.AttachClipboard()) { if (obj.IsDataAvailable(CF_TEXT)) { HGLOBAL hmem = obj.GetGlobalData(CF_TEXT); CMemFile sf((BYTE*) ::GlobalLock(hm

我已经为我的编辑框实现了粘贴例程。 如果再次粘贴相同的缓冲区,我的意思是我一直按ctrl+V,如何有效地处理这种情况,使我的代码更快

COleDataObject obj;
if (obj.AttachClipboard()) {
    if (obj.IsDataAvailable(CF_TEXT)) {
        HGLOBAL hmem = obj.GetGlobalData(CF_TEXT);
        CMemFile sf((BYTE*) ::GlobalLock(hmem), ::GlobalSize(hmem));
        LPSTR str = buffer.GetBufferSetLength(::GlobalSize(hmem));
        sf.Read(str, ::GlobalSize(hmem));
        ::GlobalUnlock(hmem);
// doing my work here using buffer
    }

您真的需要针对重复粘贴相同内容的情况进行优化吗?虽然这种情况很少见,但普通代码应该足够快。即使这种情况并不罕见,计算机也会以足够快的速度执行,以满足用户的感知。粘贴后仅清除剪贴板是不可接受的?如果用户想粘贴同一文本两次怎么办?@patriice这是永远不可接受的。剪贴板是一种全局资源,应用程序销毁内容的唯一时间是用户启动复制/剪切操作时。