怎么样实现图形编辑器中的文本框?
怎么样实现图形编辑器中的文本框?
实现过程大致如下:现在屏幕上画出一个矩形框,表示文本框的编辑范围;此时需创建一个edit窗口,多行的属性,没有边框(因为已经有矩形边框了),先把它隐藏起来ShowWindow(hedit,SW_HIDE).当鼠标左键在此区域双击时,就把此edit窗口显示出来ShowWindow(hedit,SW_SHOW),就可以在此edit中输入文本,当结束编辑时,需要把edit中的每行文本取出存入一个字符串中,然后把edit窗口再次隐藏,把字符串以同样的格式显示在此举行边框内,使用DrawText函数即可。这是基本的功能,当然还可以添加矩形框的背景色,边框颜色,修改文本框中的字体属性等等
这里需要注意的是,当得到多行编辑窗口的总行数后(给编辑框发EM_GETLINECOUNT消息),对每一行获取文本时(给编辑框发EM_GETLINE消息),接受字符串的缓冲区的第一个字符必须初始化成你要接收的最大字符数(msdn里有介绍,本人一开始也没仔细看,导致郁闷了一时),当获得一行字符串时,必须在其后添个换行符(TEXT('/n')),再添个结束符TEXT('/0').以便进行多行字符串的连接
另外在实现edit中的复制WM_COPY,粘贴WM_PASTE,剪切WM_CUT文本功能时,可以直接给edit发消息完成,不用自己实现,但是在复制之前,一定要把剪贴板清空,否则粘贴的东西可能不是自己想要的东西。。。
OpenClipboard(GetParent(hEdit));//打开edit的父窗口关联的剪贴板
EmptyClipboard();//清空剪贴板
CloseClipboard();//再关闭剪贴板