- Ottenere una linea di una casella di testo -
 
COSA SERVE PER QUESTO TUTORIAL
Download | Chiedi sul FORUM | Glossario Microsoft Visual Basic 6 - Conoscenze basiche di VB
SendMessage con parametri: EM_GETLINE

OTTENERE IL TESTO DI UNA RIGA DI UNA CASELLA DI TESTO TRAMITE LE API
La funzione SendMessage di user32.dll e il messaggio EM_GETLINE

Come accennato nel precedente articolo (sul cui codice questo tutorial si basa) alcuni messaggi richiedono che ulteriori parametri a SendMessage, uno di questi è EM_GETLINE, messaggio di richiesta del testo di una riga specificata di una casella di testo.
Per prima cosa rispetto al vecchio progetto nel modulo va sostituita la riga che dichiarava la costante con quella che segue (sempre ottenuta tramite l'API Viewer di Visual Studio).
Public Const EM_GETLINECOUNT = &HBA

deve diventare:

Public Const EM_GETLINE = &HC4

Mentre nel form, la routine Agisci_Click deve diventare:


Private Sub Agisci_Click()
    Dim strRiga As String
    Dim lngLunghezzaRiga As Long
    strRiga = String(255, Chr(1))
    lngLunghezzaRiga = SendMessage(Prova.hwnd, EM_GETLINE, 2, ByVal strRiga)
    NumRighe.Text = Left(strRiga, lngLunghezzaRiga)
End Sub

Per prima cosa è stata dichiarata una stringa di testo ed è stata riempita con una sequenza di 255 caratteri uguali  una parte dei quali sarà rimpiazzata dal testo della riga che verrà richiesta (gli altri andranno scartati). Fatto questo viene richiamata la funzione SendMessage, passandogli sempre l'handle della casella di testo Prova, l'identificativo del messaggio EM_GETLINE e in seguito il numero della linea che si desidera ottenere (dove 0 indica la prima, 1 la seconda e così via) e infine un riferimento alla stringa che dovrà contenere il risultato. SendMessage in questo caso restituirà il numero di caratteri copiati in strRiga: per questo nel mostrare la stringa di risultato nella casella NumRighe viene utilizzata la funzione Left.
 

<< INDIETRO by VeNoM00