如何处理更改插入符号的事件?

时间:2017-11-18 23:48:18

标签: c++ c winapi event-handling editcontrol

我需要处理在编辑控件(而非richedit控件)中更改插入符号pos的事件。

我知道如何处理编辑中更改文本的事件,但我不知道如何处理编辑控件中更改插入符位置的事件。

我希望有人可以帮助我。谢谢大家。

2 个答案:

答案 0 :(得分:1)

您可以通过发送 EM_SETSEL 消息在编辑控件中设置插入符号的位置,该消息从所需位置选择到相同位置:

SendMessage(hWnd, EM_SETSEL, pos, pos);

获取插入符号的位置需要发送 EM_GETSEL 消息。请注意,如果开始和结束位于同一位置,您就知道了插入符的精确位置。如果存在差异,则表示选择了文本,您可以将最后一个作为位置。

没有特定事件可以仅跟踪插入/选择更改。在事件循环中,您需要捕获按键和鼠标事件,并检查它们是否更改了位置。但是,只有当您需要它而不是主动跟踪它时,您才能阅读插入位置吗?

答案 1 :(得分:1)

一旦我通过继承编辑控件(finally)并在可能有可能移动插入符号的消息上向父窗口发送消息,就可以在状态栏上显示行号。

SetWindowLongPtr