16/12/14 22:13
pescarese77
Salve
Allora ho il problema di un'acquisizione di coordinate del puntatore, vi spiego meglio come si trova il puntatore lo so vorrei tanto per capirci fare questo pressione un pulsante che fa partire la acquisizione al click cambio il puntatore e fin li tutto bene uso un timer dove metto l'api GetAsyncKeyState per osservare il comportamento del tasto del mouse in quando con il tasto qui mette la coordinata in una text box eseguo tipo la selezione e al rilascio del pulsante del mouse su una seconda textbox mette la coordinata finale del mouse vi posto il codice:
non capisco perché GetAsyncKeyState parte subito al click del pulsante
spero di esser stato chiaro su cosa vorrei provare a fare, mi serve che parta dopo scelta da pulsante se faccio un e non da un nuovo form dopo evento load che sarebbe buon metodo per aggirare la cosa Grazie
Allora ho il problema di un'acquisizione di coordinate del puntatore, vi spiego meglio come si trova il puntatore lo so vorrei tanto per capirci fare questo pressione un pulsante che fa partire la acquisizione al click cambio il puntatore e fin li tutto bene uso un timer dove metto l'api GetAsyncKeyState per osservare il comportamento del tasto del mouse in quando con il tasto qui mette la coordinata in una text box eseguo tipo la selezione e al rilascio del pulsante del mouse su una seconda textbox mette la coordinata finale del mouse vi posto il codice:
Imports System.Runtime.InteropServices Public Class FrmAquisizioneNumero 'Costante per mouse Private Const OCR_NORMAL = 32512& 'Stato dei pulsanti <DllImport("user32.dll")> _ Public Function GetAsyncKeyState(ByVal vKey As System.Windows.Forms.Keys) As Short End Function 'Gestione Mouse con api per cambio icona mouse <DllImport("user32")> _ Private Shared Function CopyIcon(ByVal hIcon As IntPtr) As IntPtr End Function <DllImport("user32")> _ Private Shared Function SetCursor(ByVal hCursor As IntPtr) As IntPtr End Function <DllImport("user32")> _ Private Shared Function LoadCursor(ByVal hInstance As IntPtr, ByVal lpCursorName As IntPtr) As IntPtr End Function <DllImport("user32")> _ Private Shared Function SetSystemCursor(ByVal hcur As IntPtr, ByVal id As IntPtr) As Boolean End Function <DllImport("user32")> _ Private Shared Function LoadCursorFromFile(ByVal lpFileName As String) As IntPtr End Function <DllImport("user32")> _ Private Shared Function GetCursor() As IntPtr End Function Private currenthcurs As IntPtr Private tempcurs As IntPtr ' Dim TastoSinistroPremutoeRilasciato As Boolean = False Private Sub BtnAvviaAquisizione_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAvviaAquisizione.Click 'Cambiamento Mouse Dim hcursor As IntPtr Dim ret_val As Boolean currenthcurs = GetCursor() tempcurs = CopyIcon(currenthcurs) hcursor = LoadCursorFromFile("C:\Windows\Cursors\cross_rl.cur") ret_val = SetSystemCursor(hcursor, New IntPtr(OCR_NORMAL)) End Sub Private Sub TmrAquisizioneNumero_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TmrAquisizioneNumero.Tick If GetAsyncKeyState(Keys.LButton) Then Label1.Text = "Sinistro Premuto" TextBox2.Text = MousePosition.X & "," & MousePosition.Y Else TastoSinistroPremutoeRilasciato = True Label1.Text = "Sinistro Non Premuto" If TastoSinistroPremutoeRilasciato Then TextBox3.Text = MousePosition.X & "," & MousePosition.Y 'Ristabilire Mouse Dim ret_val As Boolean ret_val = SetSystemCursor(tempcurs, New IntPtr(OCR_NORMAL)) TmrAquisizioneNumero.Stop() End If End If End Sub End Class
non capisco perché GetAsyncKeyState parte subito al click del pulsante
spero di esser stato chiaro su cosa vorrei provare a fare, mi serve che parta dopo scelta da pulsante se faccio un e non da un nuovo form dopo evento load che sarebbe buon metodo per aggirare la cosa Grazie
aaa