Spostare form con frecce

martedì 24 maggio 2011 - 10.35

dupperelko Profilo | Junior Member

Ciao a tutti,
ho inserito nella mia window application questa sub:

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)

MyBase.WndProc(m)
If m.Msg = &H84 Then
If m.Result.ToInt32 = 1 Then m.Result = New IntPtr(2)
End If

End Sub


in modo che possa spostare la window anche con il mouse.
Mi piacerebbe anche spostarla con le frecce, quindi intercettare
keypress...
in pratica se clicco freccia sx, la win si dovrebbe spostare a sx di quanto
decido nel codice (che sarà un pixel alla volta).
avete idee?

Grazie mille

Brainkiller Profilo | Guru

>in modo che possa spostare la window anche con il mouse.
>Mi piacerebbe anche spostarla con le frecce, quindi intercettare
>keypress...
>in pratica se clicco freccia sx, la win si dovrebbe spostare
>a sx di quanto
>decido nel codice (che sarà un pixel alla volta).
>avete idee?

Prova così:

If m.Msg = &H100 Then Select Case m.WParam Case 37 Me.Left = Me.Left - 100 Case 38 Me.Top = Me.Top - 100 Case 39 Me.Left = Me.Left + 100 Case 40 Me.Top = Me.Top + 100 End Select End If

Naturalmente il focus deve essere sulla finestra.
&H100 è il messaggio WM_KEYDOWN
Ciao

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

dupperelko Profilo | Junior Member

Grazie... funziona perfettamente!

ho impostato + - 1 in modo che possa dare precisione pixel.

Ma dove trovo l'elenco dei messaggi?
tipo &H100 o &H84?


grazie ancora ciao

Brainkiller Profilo | Guru

>Grazie... funziona perfettamente!

Se la risposta ti è stata d'aiuto accettala con l'apposito pulsante verde "Accetta" così il thread viene marcato come risolto.

>Ma dove trovo l'elenco dei messaggi?
>tipo &H100 o &H84?

Si trovano definiti negli headers files del C++. Se non ce l'hai prova a cercare su google:
"define wm_keydown"
compresi gli apicetti vedrai che troverai diversi files in cui è definito come H100 che corrisponde al messaggio WM_KEYDOWN
Bisogna avere un po' di espereinza sulle Win32Api per sapersi muovere in questo scenario.
Ciao

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5