我写了一个程序,视图从CRichEditView继承。现在我添加了一个CListBox列表框,希望在选择一个 列表框里面的选项的时候,取得选项的值并且显示到当前视图中当前光标的位置,同时不影响原有的文本,而且光标自动移到文本尾,并支持继续键盘输入。该怎么办????????做好有程序。我尝试用SetWindwoText结果自动覆盖原有的文本且光标位置不变

解决方案 »

  1.   

    我的方法:
    1、用GetSel()获取当前光标的位置;//具体用法请参考MSDN;
    2、用GetWindowText()获取所有文本;
    3、在获取的文本中,在光标的位置,插入你选中Item的对应文本;
    4、用SetWindowText()写入RichEdit;
    5、用SetSel()设置当前光标的位置这样做,应该没有问题
      

  2.   

    以上方法适用于不带格式的文本,你的RichEdit是带格式的吧?如果带格式,处理起来相当麻烦,我原来用过偷懒的方法,就是使用Copy()和Paste()的方法,即将你的Item对应的文本,拷贝到剪贴板中(具体请参考CWnd类的Clipboard部分的方法),然后用Paste()命令将剪贴板的中的文本粘贴到RichEdit中,方法是可行的;至于设置光标,和上面第五步一样
      

  3.   

    假设我已经把选项的内容付给字符串m_strLeft,那么怎样把m_strLeft放到剪切板里呢
      

  4.   

    一段代码,仅供参考:
    HGLOBAL clipbuffer;
    char * buffer;
    OpenClipboard();
    EmptyClipboard();
    clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1);
    buffer = (char*)GlobalLock(clipbuffer);
    strcpy(buffer, LPCSTR(m_strLeft));
    GlobalUnlock(clipbuffer);
    SetClipboardData(CF_TEXT,clipbuffer);
    CloseClipboard();我这里是可行的,你试试看,:)
      

  5.   

    是不是要把source改成m_strLeft,如果不是,source作事么用,怎样定义??我把source改成m_strLeft试了一下,结果不显示,是不是要另外再设置粘贴阿??如果是的话,又怎么粘贴??
      

  6.   

    呵呵,对,我只将一个地方的source改为m_strLeft了,不好意思这些语句只是将你的字符串拷贝到了剪贴板,你用RichEdit的Paste()语句就可以进行粘贴了
      

  7.   

    谢谢你的帮助,另外麻烦一下,如果不是在CRichEditView而是在CEditView中,又会怎样呢