如何在CMyView(继承自CScrollView)中用键盘输入字符串?文本

bluearth 2004-08-09 10:39:11
我在做一个绘图软件,类似DrawCli,其他如园、矩形等都没问题,就是动态生成的文本有点难了,我想实现这样的效果:
1、鼠标单击,即在单击的坐标处有一个闪动光标,这段代码我已经实现了
CreateSolidCaret(2,20);
::SetCaretPos(point.x,point.y);
ShowCaret();
2、通过键盘输入字符,能在光标处动态显示出输入的数据
3、输入完毕后,在别处点击,刚才输入的字符串成为一整体,能被拖动
4、双击可以对输入完毕的字符串文本编辑

大概就实现这么多功能,那位大侠有类似的代码,或经验,请指点,多谢!!!

...全文
115 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
walkly 2004-08-10
建议用CEdit
回复
huwei001982 2004-08-10
直接用 CEdit, 你不想要它的框,可以将它的 WS_BORDER属性去掉, 可以达到你的要求
而且 CEdit可以复制, 粘贴等, 你自已捕获 WM_CHAR当然可以输入字母, 但
功能显然不如 CEdit强大
回复
hhwaywj 2004-08-10
直接重载WM_CHAR或WM_KEYDOWN事件的处理程序,获得键盘的输入,将输入的字符构成字符串存放在你定义的一个变量里,再用TextOut或DrawText等函数显示就可以了。
回复
BinaryTreeEx 2004-08-10
你动态生成一个EditView就可以了
回复
liuxianzhi 2004-08-10
使用CEdit或者CScrollEdit的话,必须自己写函数调用TextOut等来解决字符显示问题,如果你使用CRicheditView的话,就不需要自己写函数了。
建议你下载这个看看他的实现方法,然后参考之实现你的画图功能。
Syntax coloring text editor
http://www.codeguru.com/Cpp/controls/editctrl/editors/article.php/c509/
回复
快乐鹦鹉 2004-08-10
用TextOut函数输出阿
回复
bluearth 2004-08-10
如果用CEdit,那么输入完毕之后,哪个陷下去的框怎么处理啊?
回复
快乐鹦鹉 2004-08-09
比如:定义一个类来记录你输入的文字信息
Class CTextRect : public CObject
{
private:
CString m_sText;//字符串
CRect m_textRect;//外包矩形
LONG m_lCurPos;//光标位置
public:
bool ClickTest(CPoint clickPoint);//鼠标点击VIEW时,调用这个点击测试函数。返回是否选中,同时在函数中获取m_lCurPos。
void Draw(CDC* pDC);
}
当然,更多的可能还要考虑字体,段落属性等等。是很复杂的。
回复
bluearth 2004-08-09
能再详细些么,或者相关的代码给我看看好么?多谢多谢!
回复
快乐鹦鹉 2004-08-09
呵呵。我以前做的排版软件完全包含你这样的功能啊。其实你要创建一个类,这个类包含文字串,以及文字串所在的矩形区域等信息。这样当鼠标点击时,你就能知道是不是在文字串上了(就是判断是否在文字串所在的矩形区域中,然后进一步可以判断鼠标点击的位置在那一个文字后,这样就可以定位光标了。
回复
bluearth 2004-08-09
那我怎么能实现将键盘输入的字符串动态的在光标处显示出来哪?
需要用CEdit类么,可是那样有个Edit的框,不好看也不好处理
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-08-09 10:39
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……