Obtient la position inter-caractères avant le mot précédent
#include <GuiRichEdit.au3>
_GUICtrlRichEdit_GetCharWordBreakInfo ( $hWnd, $iCP )
$hWnd | Handle du contrôle |
$iCP | La position entre-caractère à gauche du caractère qui vous intéresse |
Succès: | Retourne une chaîne constituée de valeurs séparées par des virgules: valeur 1 - indicateur(s) de coupure de mot: c - la ligne peut être coupée après ce caractère d - le caractère est un délimiteur de fin de mot. Les lignes peuvent être coupées après ces délimiteurs w - le caractère est un espace blanc. (des espaces blancs ne sont pas inclus dans la longueur de la ligne.) valeur 2 - classe de caractère: un nombre |
Échec: | Retourne "" et définit @error <> 0. |
@error: | 101 - $hWnd n'est pas une handle 102 - $ICP n'est pas un nombre |
Les lignes peuvent être coupées à des délimiteurs ou entre les caractères de classes différentes.
Les classes de caractères sont définies dans les procédures coupure de mot.
Les classes de procédure par défaut sont:
0 = caractère alphanumérique,
1 = autre caractère imprimable (sauf trait d'union),
2 = espace,
3 = tabulation,
4 = trait d'union ou de fin de paragraphe.
_GUICtrlRichEdit_GetCharPosOfNextWord, _GUICtrlRichEdit_GetCharPosOfPreviousWord
Consultez EM_FINDWORDBREAK dans la librairie MSDN.
#include <GUIConstantsEx.au3> #include <GuiRichEdit.au3> #include <SendMessage.au3> #include <WindowsConstants.au3> Global $g_idLblMsg Example() Func Example() Local $hGui, $iMsg, $idBtnNext, $hRichEdit, $iCp = -1, $s $hGui = GUICreate("Exemple (" & StringTrimRight(@ScriptName, 4) & ")", 320, 350, -1, -1) $hRichEdit = _GUICtrlRichEdit_Create($hGui, "Ceci est un test.", 10, 10, 300, 220, _ BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL)) $g_idLblMsg = GUICtrlCreateLabel("", 10, 235, 300, 60) $idBtnNext = GUICtrlCreateButton("Suivant", 270, 310, 40, 30) GUISetState(@SW_SHOW) $s = Chr(9) For $i = 32 To 126 $s &= Chr($i) Next _GUICtrlRichEdit_AppendText($hRichEdit, $s & @CRLF) _GUICtrlRichEdit_AppendText($hRichEdit, "AutoIt v3 est un langage de script freeware semblable à BASIC conçu pour " _ & "l'automatisation Windows GUI et le scripting en général.") _GUICtrlRichEdit_AppendText($hRichEdit, @CRLF & "Un autre paragraphe") Do $iMsg = GUIGetMsg() If $iMsg = $idBtnNext Then $iCp += 1 _GUICtrlRichEdit_GotoCharPos($hRichEdit, $iCp) GUICtrlSetData($g_idLblMsg, _GUICtrlRichEdit_GetCharWordBreakInfo($hRichEdit, $iCp)) EndIf Until $iMsg = $GUI_EVENT_CLOSE _GUICtrlRichEdit_Destroy($hRichEdit) ; Nécessaire sauf si le script se bloque ; GUIDelete(); est OK aussi EndFunc ;==>Example Func Report($sMsg) GUICtrlSetData($g_idLblMsg, $sMsg) EndFunc ;==>Report Func GetWord($hWnd, $iCp, $bForward, $bStartOfWord, $bClass = False) Local $iRet, $wParam If $bClass Then If $bForward Then $wParam = $WB_MOVEWORDRIGHT Else $wParam = $WB_MOVEWORDLEFT EndIf Else If $bForward Then If $bStartOfWord Then $wParam = $WB_RIGHT Else $wParam = $WB_LEFT EndIf Else If $bStartOfWord Then $wParam = $WB_RIGHTBREAK Else $wParam = $wb_LEFTBREAK EndIf EndIf EndIf $iRet = _SendMessage($hWnd, $EM_FINDWORDBREAK, $wParam, $iCp) ConsoleWrite('@@ Debug('& @ScriptLineNumber & ') : $wParam = '& $wParam & @CRLF & '>Code d'erreur: '& @error & @CRLF) ; ### Console de débogage Return $iRet EndFunc ;==>GetWord