五、Windows子窗口控件的编辑类别—发送给编辑控件的消息
因为用SendMessage发送给编辑控件的消息很多,并且其中的几个还将在后面POPPAD修订版本中用到,所以这里不解说所有用SendMessage发送给编辑控件的消息,只概要地说明一下。
这些消息允许您剪下、复制或者清除目前被选择的文字。使用者使用鼠标或者Shift键加上光标控件键来选择文字并进行上面的操作,这样,在编辑控件中选中的文字将被加亮:
SendMessage (hwndEdit, WM_CUT, 0, 0) ; SendMessage (hwndEdit, WM_COPY, 0, 0) ; SendMessage (hwndEdit, WM_CLEAR, 0, 0) ;
WM_CUT将目前选择的文字从编辑控件中移走,并将其发送到剪贴簿中;WM_COPY将选择的文字复制到剪贴簿上并保持编辑控件中的内容完好无损;WM_CLEAR将选择的内容从编辑控件中删除,但是不向剪贴簿中发送。
您也可以将剪贴簿上的文字插入到编辑控件中的光标位置:
SendMessage (hwndEdit, WM_PASTE, 0, 0) ;
您可以取得目前选择的起始位置和末尾位置:
SendMessage (hwndEdit, EM_GETSEL, (WPARAM) &iStart, (LPARAM) &iEnd) ;
结束位置实际上是最后一个选择字符的位置加1。
您可以选择文字:
SendMessage (hwndEdit, EM_SETSEL, iStart, iEnd) ;
您还可以使用别的文字来置换目前的选择内容:
SendMessage (hwndEdit, EM_REPLACESEL, 0, (LPARAM) szString) ;
对多行编辑控件,您可以取得行数:
iCount = SendMessage (hwndEdit, EM_GETLINECOUNT, 0, 0) ;
对任何特定的行,您可以取得距离编辑缓冲区文字开头的偏移量:
iOffset = SendMessage (hwndEdit, EM_LINEINDEX, iLine, 0) ;
行数从0开始计算,iLine值为-1时传回包含游标所在行的偏移量。您可以取得行的长度:
iLength = SendMessage (hwndEdit, EM_LINELENGTH, iLine, 0) ;
并将行本身复制到一个缓冲区中:
iLength = SendMessage (hwndEdit, EM_GETLINE, iLine, (LPARAM) szBuffer) ;