我想实现如下功能,举例来说:从excel中复制一些数据(当然复制时连表格一起复制了),如果在word中粘贴,将连表格一起粘贴,但在记事本中粘贴,就只粘贴文本。我只想粘贴文本,就像记事本中实现的那样,如何实现?我知道仅用IsClipboardFormatAvailable(CF_UNICODETEXT)判断不好使,在粘贴时仍会带有表格。我使用richedit控件。谢谢大家。

解决方案 »

  1.   


    就按你说的办。方法也很简单(但不一定是最优的方法):获得剪贴板文本数据,替换窗口选中文本。代码如下: case IDM_EDIT_PASTE:
    if(!IsClipboardFormatAvailable(CF_UNICODETEXT))
    {
    MessageBox(hWnd,L"剪贴板上无文本数据,不能粘贴!",L"OpenFC",MB_OK);
    break;
    }
    if(!OpenClipboard(hWnd))
    {
    MessageBox(hWnd,L"剪贴板打开失败!",L"OpenFC",MB_OK);
    break;
    }
    hClipboardText=GetClipboardData(CF_UNICODETEXT);
    if(!hClipboardText)
    {
    MessageBox(hWnd,L"无法读取剪贴板数据!",L"OpenFC",MB_OK);
    CloseClipboard();
    break;
    }
    if(GetFocus()==hwndEditCode) SendMessage(hwndEditCode,EM_REPLACESEL,1,(LPARAM)GlobalLock(hClipboardText));
    if(GetFocus()==hwndEditOut) SendMessage(hwndEditOut,EM_REPLACESEL,1,(LPARAM)GlobalLock(hClipboardText));
    GlobalUnlock(hClipboardText);
    CloseClipboard();