MFC 文本编程1 --(未实现退格键,相同文字位置会发生覆盖)

来源:互联网 发布:python 颜色渐变 编辑:程序博客网 时间:2024/05/29 07:05
主要消息:键盘按下消息 onchar 
              鼠标左键按下消息 onlbuttondown

因为鼠标、键盘的操作是由视图类view 捕获的  所以,操作要在view类上建立
因为是要对屏幕输出设备进行操作,所以要用到CClientDc类 来操作设备(屏幕输出)

添加的成员变量 CPoint 类 m_point  用来保存上一次坐标位置

首先是插入符的建立 createsolidcaret()   里面可以传递两个int型参数 可以用来设置插入符的高度和宽度
    我们可以根据文本的大小来设置插入符的宽高
    获取文本的大小需要用到一个结构体 TEXTMETRIC 
   通过函数GetTextMetric() 可以得到当前所用字体的信息 高度、平均宽度等。
   最后需要用ShowCaret函数显示插入符出来。
接下来需要对键盘按下字符进行处理。
  为view类添加一个onchar消息响应函数
  我们先考虑普通文本的输入(去掉回车,退格等) 
  为view类添加一个字符串变量将键盘按下的字符存放到该字符串中,然后显示该字符串即可。对于后面输入的字符可以通过对字符串”+=“重载,
  通过设备描述表对象dc 调用TextOut函数将字符串输出
输出之后需要将插入符移动到当前字符后面
  首先需要获取我们输入字符串的长度, 声明一个CSize类的对象sz  调用GetTextExtend获取字符串的长度和宽度存放到sz中  参数即为所要获取的字符串
  声明一个坐标类 CPoint类的对象p 设置当前坐标 当前x坐标=初始坐标+字符宽度  y坐标不变
  用SetCaretPos(p) 将插入符移动到指定位置
考虑回车符
  回车之后插入符移动到下一行开始
  即 x坐标为0 y坐标下移一行(即当前y坐标+字符高度)
  所以要对按下的字符进行判断 若为回车符 执行坐标更改 同时注意要将字符串清空
左键按下后插入符的移动
  为view类添加一个左键按下响应函数OnLButtonDown
  该响应函数中会传递一个坐标参数
  调用SetCaretPos(point)设置当前坐标 ok
  同时要清空字符串
   将该坐标保存到当前坐标的变量中。
0 0
原创粉丝点击