用Textout输出文本之后,怎么做选定文本啊?
用Textout输出文本之后,怎么做选定文本啊?就是我要做到像文本框一样能够选定文本?我知道有SetCaretPos等函数来放置一个插入符,但是怎么计算插入符的位置?怎么才能像一般的文本框那样能够选择文本?
[解决办法]
各种消息咯
你可以使用消息自己实现一个文本框
textout输出的矩形你需要知道
鼠标点击的范围你需要计算是否处于输出矩形内
如果处于显示插入符
如果不处于。。。
鼠标按下(不放开)并且移动,你需要计算是否处于编辑框内,并且计算是否出了文本框。
等等啦
[解决办法]
File: "C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\WINCTRL1.CPP"
226: /////////////////////////////////////////////////////////////////////////////
227: // CEdit
228:
229: BOOL CEdit::Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID)
230: {
231: CWnd* pWnd = this;
232: return pWnd->Create(_T("EDIT"), NULL, dwStyle, rect, pParentWnd, nID);
233: }
234:
235: CEdit::~CEdit()
236: {
237: DestroyWindow();
238: }
[解决办法]
个人觉得你可以用子类化来实现:需要修改的,比较简易的可以自己在子类后的消息中处理,光标功能的实现是比较复杂的,需要计算字体的宽度,高度,很复杂的计算,由于windows本身有对光标的处理,所以你可以返回给windows系统来处理光标。
[解决办法]
代码有时不能用看来弄懂,要用单步或设断点调试来弄懂。