如何在PaintBox上生成文本。(100分)

  • 主题发起人 主题发起人 wxb761014
  • 开始时间 开始时间
W

wxb761014

Unregistered / Unconfirmed
GUEST, unregistred user!
在类如autocad之类的绘图程序中,
如何动态输入文本。
我使用PaintBox为画板,想在用户选择文本输入时,响应
键盘输入,但PaintBox并无keypress事件,请问大峡们
应该怎么做???
 
可以放一个TEdit,将Visible设成false.
然后用TEdit来响应键盘事件,对PaintBox的Canvas作图。
 
另外用编辑框输入就得了,要不然,重载WndProc,响应键盘消息
 
实际上,Edit 应该就是这么实现的(最底层)
WM_KEYDOWN WM_KEYUP WM_CHAR 等消息,
然后用一个 string 记录输入的内容。
然后在 canvas 上画,我记得
有一本红白相间皮的 windows 编程的书上,
有一个类似的例子, 从最底层编一个简单的 编辑器。
 
SuperMMX:那个例子还能找到吗?
 
我有代码,是 c++ 的,要吗?
 
我开始是这么想的:
自己 CreateCaret, ShowCaret SetCaretPos HideCaret,
捕获 PaintBox(Parent) 的 WM_KEYPRESS, 发现根本捕获不了,
看了一下 画图,它确实是有一个 Edit,
然后就简单了:
给 PaintBox 加一个 Memo, 然后在适当的时候显出来,BorderStyle 为 bsNone,
DrawText(Canvas.Handle, PChar(aMemo.Text), Length(aMemo.Text),
DF_EDITCONTROL or DF_WORDBREAK);
搞定,和 画图 差不多。
 
superMMX,有c++ 的代码更好。
我用的就是C++ Builder.
e-mail:wxb761014@sina.com.cn.
另外,如何捕获windows的WM_KEYPRESS
之类的消息,请说的详细些。
谢谢!!!
 
我说的 c++ 的代码是 回答 beta 的,

这个没有 c++ 的, delphi 要吗?

关于捕获消息,TControl 有个 WndProc 属性,
可以看看帮助。
 
我看还是用Edit或Memo的好,如果真要在paintbox的基础上做出一个edit之类
的可能会比较复杂。
 
to Zephyr:
要的是 画图中的 文字输入,:)

最好用 image, 方法一样,PaintBox 的重画不好处理,我做出来的
很难看,image 比较好。
 
多人接受答案了。
 
后退
顶部