一个编辑器。
1. 界面为两个视图,左边是一个树形控件,右边是编辑窗口,左边树形节点选中的时候相应把右边的文字也选中,但是当  右边选中的字符超过一屏时,如何让光标定位到开始位置。
richedit.SetSel(iParseStart, iParseEnd);如果用这个函数的时候他默认的是在末尾。2. 主菜单中点击编辑的时候报错误。如果当前激活视图是左边的树形,点击编辑的时候,会有报错,但是在右边编辑视图里面不会报错。
Debug assertion Failed!
File:viewrich.cpp
Line:1870第一次发帖~~~~谢谢

解决方案 »

  1.   

    第一个问题使用
    BOOL SetCaretPos(
      int X,  // horizontal position
      int Y   // vertical position
    );
    就行啦,第二个问题,你的编菜单下怎么写的,代码贴出来看看
      

  2.   

    ASSERT(pView->IsKindOf(RUNTIME_CLASS(CRichEditView)));
    第二个问题:
    编辑的代码写在CMainFrame里,而不写在view里
      

  3.   

    多谢各位了~~~
    第一个问题补充一点,我需要选中字符,但是选中的开始位置必须在屏幕内,我试了各位的方法,好像不行,就是我先调用了richedit.SetSel(iParseStart, iParseEnd);
    这里的iParseStart和iParseEnd是代表字符在整个文档的开始和结束位置,并不是坐标位置
    然后光标定位在开始位置,也就是iParseStart;第二个问题,编辑菜单本身没有ID,是MFC自带的菜单,我并没有写代码,我也不知道怎么写,呵呵,如果知道他代码在哪里,那就好办多了,呵呵
    问题只要解决,我会继续开贴给分!!!!多谢大家了
      

  4.   

    你要在MainFrm.cpp里面自己写对应的代码
      

  5.   

    Debug assertion Failed! 
    File:viewrich.cpp 
    Line:1870 
    你去1870行看看是什么错误,应该是ASSERT()这里的指针为空造成的。
    默认的“编辑”菜单是灰显的,不知道你怎么分割的试图,左边的树形控件是
    怎么放上去的,是继承的CFormView类吗
      

  6.   

    int nFlags = WS_VISIBLE|WS_CHILD|WS_GROUP;
    if ( ! m_tree.Create( nFlags|TVS_LINESATROOT|TVS_HASLINES|TVS_HASBUTTONS,
    CRect(0,0,300,640), this, IDC_MARKUP_TREE ) )
    return -1;
    // TODO: Add your specialized creation code here
    m_ilTree.Create(IDB_NODE, 10, 13, RGB(0,0,0));
    m_tree.SetImageList(&m_ilTree, TVSIL_NORMAL);
    我就是这样放上去的,其中这个视图是继承的CView类,右边编辑窗口是继承的CRichEditView
    我不明白你们说的“编辑”菜单为什么会变灰~~~~~,即使变灰了,连续点击两次就报错了