当我做:
SendMessage(editControlHWND, EM_EXGETSEL, 0, (LPARAM)&charRange);
我得到选定的文本范围。但是,我想知道插入符号在此选择中的位置,即在末尾或开头。
即,用户是否选择了“向后”文本,就像从右向左拖动一样。
EM_EXGETSEL
中的数字总是较小cpMin
,因此显然与选择顺序无关。
在这种情况下,我显然无法获得插入符号位置EM_EXGETSEL
进行比较,因为已经选择了一大块东西。
有什么方法可以获取插入符号的当前个人位置(以便我可以将其与 cpMin/cpMax 进行比较)?或者,是否有任何方法可以确定插入符号在选定文本块中的位置?
编辑:
我对为什么要这样做的解释: 我以编程方式将文本插入到只读 RichEdit 控件中,用户可以从中选择文本。但是,当在末尾添加文本时,它必须将插入符号移到末尾并插入文本,这可能在选择文本/用户当前正在选择文本时发生。
麻烦的是最后一个。在以编程方式输入文本之前和之后,我使用EM_EXGETSEL
and来获取和设置选定的文本。EM_EXSETSEL
默认情况下,EM_EXGETSEL
总是将较小的数字放在 中cpMin
,这意味着如果用户当前正在向后选择文本(即从右到左),并且将文本添加到控件中,则选择区域中插入符号的位置会从开头变为最后,因为我将这些数字直接输入EM_EXSETSEL
. 我知道它EM_EXSETSEL
能够向后选择(我已经用 in 中的较大数字和 in 中cpMin
的较小数字对此进行了测试cpMax
),但EM_EXGETSEL
没有表明用户已经向后选择了文本。
因此,我需要知道插入符号的位置以将其与之进行比较cpMin
或cpMax
检查它是在选择的开头还是结尾,并采取相应的行动。