CEdit是单行属性时,不作什么处理的话将一段文字(其中有换行键的)粘贴到CEdit中时,只会粘贴上第一个“换行键”前的一段文字。
有没有什么处理办法,把“换行键”都换成“\t”而把这段文字一点不漏的给贴到CEdit中?
CEdit保持要单行属性

解决方案 »

  1.   

    处理Ctrl+V消息好像可以,怎么个处理法,能否给点提示?
      

  2.   

    把这段代码加到你CTRL+V的相应
    void CMyEdit::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    // TODO: Add your message handler code here and/or call default if (nChar == 'V')
    {
    SHORT  Res = GetKeyState(VK_CONTROL);
    if(Res & 0x8000)
    {
        HGLOBAL hGlobal; // Global memory handle
                 LPSTR lpszData; // Pointer to clipboard data
                 unsigned long nBufSize = 0; // Size of clipboard data]              char* lpszBuffer = NULL;
                 BOOL bOpen = OpenClipboard();
    if (!bOpen)
    {
    return FALSE;
    } // Request a pointer to the text on the clipboard.
    hGlobal = GetClipboardData(CF_TEXT);
    if (hGlobal == NULL) 
    {
    return FALSE;
    }
    lpszData = (LPSTR)GlobalLock(hGlobal);
    nBufSize = GlobalSize(hGlobal);
             CString strText = lpszData;
             strText.Replace("\r\n", "\t");
             ReplaceSel(strText);
    GlobalUnlock(hGlobal);
    CloseClipboard();     return;
    }
    }

        CEdit::OnKeyDown(nChar, nRepCnt, nFlags);
    }
      

  3.   

    哈哈,代码不错OnKeydown()!
    不过return FALSE;要改成return;