我用GetCaretPos测试了,获取的位置总是不对,但是在记事本输入窗口中获取的是对的。
我是在撰写输入法界面时候遇到这个问题的,我需要在输入法系统中获取当前使用输入法的应用程序的文本框中插入符的位置,在有些程序如notepad中是对的,可在有些程序如word中又不对了,真是郁闷,请有经验之士赐教!

解决方案 »

  1.   

    针对word,是否要调用word的api?
      

  2.   

    OLE Automation :Selection wordSelection;wordSelection=objWord.GetSelection();
    wordSelection.InsertAfter("insert text row 1\n");
    wordSelection.InsertAfter("insert text row 2\n");
    long lss=wordSelection.GetEnd();
    wordSelection.SetStart(0);
    wordSelection.SetEnd(1000000);
      

  3.   

    好像是selection.Start
    你可以使用录制宏看看
      

  4.   

    word 有自己专门的接口方法的自己查一下吧。
      

  5.   

    问题是我怎么获取当前word对象呢?程序是处于word进程之中的,知道word进程实例指针以及当前文本输入窗口的HWND,怎么获取当前word进程中相关对象实例呢,如Document对象实例?
      

  6.   

    后来终于发现其实光标跟随的起始坐标肯定是IME系统提供才对,如果用GetCaretPos的话,岂不针对类似Word的程序,都要调用其com接口,这肯定不是解决之道。我之前在写输入法时犯的错误是在用户开始输入时没有发送WM_IME_STARTCOMPOSITION消息,从而导致在IMN_SETCOMPOSITIONWINDOW消息响应函数中不能正确获取坐标。