会员登录 用户名: 密码: 登录 新会员注册 [找回密码]
当前位置:编程论坛 >> C/S程序开发专区 >> VC++编程论坛 >> 怎么做这个文本编辑的程序?
首页
中资源
  发表一个新主题  发表一个新投票  回复主题 您是本帖的第 250 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
 * 贴子主题:怎么做这个文本编辑的程序? 悬赏分100 [提问中] 报告本帖给版主  显示可打印的版本  把本贴打包邮递  把本贴加入论坛收藏夹  发送本页面给朋友  把本贴加入IE收藏夹 
 xiaozhu_zy 美女呀,离线,快来找我吧!
  
  
  等 级:初出江湖
  积 分:899
  专家分:1029
  提问帖:8/7
  回答帖:9
  总帖数:39
  经验值:136
  注 册:2008-9-3
给xiaozhu_zy发送一个短消息 把xiaozhu_zy加入好友 查看xiaozhu_zy的个人资料 搜索xiaozhu_zy在VC++编程论坛的所有贴子 引用回复这个贴子 回复这个贴子楼主

发贴心情 怎么做这个文本编辑的程序?

我写了一个类似文本编辑的小程序,现在能实现的功能只有 回车换行,退格和光标跟着鼠标移动

可是,退格的功能只能删除一行的字符,如果这一行所有字符都删除了,不能到上一行进行退格

不知道该怎么做?
还有如果想在鼠标的位置进行退格应该怎么做?
请朋友们指点。。。


代码部分如下:

(假如所有的变量和函数都已经定义过了)
m_StringLen——保存输入的字符


void CTextView::OnLButtonDown(UINT nFlags, CPoint point) 
{
 // TODO: Add your message handler code here and/or call default
    SetCaretPos(point);//使光标移动到鼠标左键点下的位置
 m_StringLen.Empty();
 m_ptOrigin=point;
 CView::OnLButtonDown(nFlags, point);
}

int CTextView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
 if (CView::OnCreate(lpCreateStruct) == -1)
  return -1;
 
 // TODO: Add your specialized creation code here
 CClientDC dc(this);
 TEXTMETRIC tm; 
 dc.GetTextMetrics(&tm); //得到字体的信息
 CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);//利用字体的信息来确定光标的高度和宽度
 
 ShowCaret();
 return 0;
}

void CTextView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
 // TODO: Add your message handler code here and/or call default
 CClientDC dc(this);
 TEXTMETRIC tm;
 dc.GetTextMetrics(&tm);
 if(0x0d==nChar)//处理回车
 {
  m_StringLen.Empty();
  m_ptOrigin.y+=tm.tmHeight;
 }
 else if(0x08==nChar)//对退格键进行处理
 {
  COLORREF clr=dc.SetTextColor(dc.GetBkColor());//将文本设置成背景色
  dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_StringLen);
  m_StringLen=m_StringLen.Left(m_StringLen.GetLength()-1);//从左边开始保存文本长度-1的字符
  dc.SetTextColor(clr);
 }
 else
 {
  m_StringLen+=nChar;
 }
 CSize sz=dc.GetTextExtent(m_StringLen);//得到字符在屏幕上占据的范围
 CPoint pt;
 pt.x=m_ptOrigin.x+sz.cx;//X坐标为原来坐标加上字符的宽度
 pt.y=m_ptOrigin.y;
 SetCaretPos(pt);//使光标跟着输入的字符
 dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_StringLen);
 CView::OnChar(nChar, nRepCnt, nFlags);
}


发帖:2008-11-20 21:45:00
  鲜花(0)  鸡蛋(0)
 独孤剑圣 帅哥哟,离线,有人找我吗?
  
  
  等 级:职业侠客
  积 分:9360
  专家分:5901
  提问帖:1/1
  回答帖:490
  总帖数:562
  经验值:651
  注 册:2007-11-25
给独孤剑圣发送一个短消息 把独孤剑圣加入好友 查看独孤剑圣的个人资料 搜索独孤剑圣在VC++编程论坛的所有贴子 引用回复这个贴子 回复这个贴子2

发贴心情 

如果m_StringLen==0的时候应该将光标坐标变量pt置为上一行最后一个字符后。

善与恶,只在一念之间~~~~~

发帖:2008-11-21 6:55:00
 361378900 帅哥哟,离线,有人找我吗?狮子座1987-8-13
  
  
  头 衔:学习中。。。
  等 级:论坛游侠
  积 分:3928
  专家分:2217
  提问帖:7/7
  回答帖:192
  总帖数:293
  经验值:451
  注 册:2007-12-30
给361378900发送一个短消息 把361378900加入好友 查看361378900的个人资料 搜索361378900在VC++编程论坛的所有贴子 引用回复这个贴子 回复这个贴子3

发贴心情 

将所有的文本存在一个二维数组中,每一行存在二维数组的行数组中

走过了就不要再回头。。。。。。。。。。

发帖:2008-11-21 18:03:00
 lyc5305562 帅哥哟,离线,有人找我吗?
  
  
  等 级:初出江湖
  积 分:357
  专家分:68
  提问帖:0/0
  回答帖:11
  总帖数:15
  经验值:67
  注 册:2008-12-8
给lyc5305562发送一个短消息 把lyc5305562加入好友 查看lyc5305562的个人资料 搜索lyc5305562在VC++编程论坛的所有贴子 引用回复这个贴子 回复这个贴子4

发贴心情 

楼上的能说的具体点吗?我也因此郁闷中....
发帖:2008-12-8 17:20:00

本主题贴数4,分页:[返回帖子列表] [上一页] [1] [下一页]
 *快速回复:怎么做这个文本编辑的程序?  [ 回帖是一种美德 :) ]
会员账号 用户名    还没注册?    密码    忘记密码?
内容
  • HTML标签: 不可用
  • UBB标签: 可用
  • 贴图标签: 可用
  • 多媒体标签:可用
  • 表情字符转换:可用
  • 上传图片:不可用
  • 最多15KB
  • 点击表情图即可在帖子中加入相应的表情
                                
    邮件回复 显示签名   [Ctrl+Enter直接提交贴子]

    管理选项锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告