我用鼠标在文本框中选择一部分文字,怎么用用API读取选择的文字(不是全部)呢?
我试过用剪贴板,可以实现,但这样就改变了剪贴板的内容,效率也慢。
我能否用API实现直接读取呢?
或发消息,用钩子截获消息取得呢?
请高手指点,谢谢!

解决方案 »

  1.   

    ::SendMessage(hbtnWnd,WM_GETTEXT,0,(LPARAM)&str.GetBuffer(str.GetLength()));
    ::SendMessage(hbtnWnd,EM_GETSELTEXT,0,(LPARAM)&str.GetBuffer(str.GetLength()));
      

  2.   

    EM_GETSELTEXT是用于rich edit的吧。
    SendMessage( 
      (HWND) hWnd,              // handle to destination window 
      EM_GETSEL,                // message to send
      (WPARAM) wParam,          // starting position (LPDWORD)
      (LPARAM) lParam          // ending position (LPDWORD)
    );
      

  3.   

    您可以取得目前选择的起始位置和末尾位置:SendMessage (hwndEdit, EM_GETSEL, (WPARAM) &iStart,
            
                                     (LPARAM) &iEnd) ;
            
    结束位置实际上是最后一个选择字符的位置加1。您可以选择文字:SendMessage (hwndEdit, EM_SETSEL, iStart, iEnd) ;