FORM MAGNETICA COMO NO WINAMP

KURTGU 28/03/2011 13:52:08
#369463
Alguem ja tentou ou tem algum exemplo de codigo que faz esse efeito de magnetismo entre forms como no winamp.....??????????


Pra quem nao sabe o que estou falando, e aquele efeito que quando se tem duas forms voce arrasta um pra perto da outra ela se autocola a form do lado......
PEGUDO 28/03/2011 14:09:17
#369469
KURTGU 28/03/2011 14:11:31
#369470
na verdade ja tinha visto mais nao esta funcionando tentei fazer funcionar mais nao deu....
KURTGU 28/03/2011 14:20:51
#369475
achei um exemplo em C# que funciona do jeito que eu quero mais tentei converter para vb, Mais fica dando um erro e nao consigo resolver....
JONATHANSTECKER 28/03/2011 14:42:24
#369481
Resposta escolhida
JANELA MAGNETICA

Não funciona? Como não?
Acabei de baixar, testar e afirmo: funciona perfeitamente!

Você ainda pode ajustar a distância entre os limites da tela, neste exemplo a distância é 10.

Caso realmente não esteja funcionando, de duas uma.
Ou você não está entendendo como funciona ou não é isto que você está querendo fazer.
Mas qualquer coisa, me passe esse exemplo em C# que converto manualmente ele para VB.NET e reenvio para você.

Const WM_NCHITTEST As Integer = &H84
Const HTCAPTION As Integer = 2
Const HTCLIENT As Integer = 1

[ô]enable moving captionless form
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
If m.Msg = WM_NCHITTEST AndAlso m.Result.ToInt32() = HTCLIENT Then
m.Result = New IntPtr(HTCAPTION)
End If
End Sub

Private myXSize As Integer
Private myYSize As Integer
Private deskXSize As Integer
Private deskYSize As Integer

[ô]enable magnetic form
Private Sub Form1_LocationChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LocationChanged

myXSize = Me.Left + Me.Width
deskXSize = Screen.PrimaryScreen.WorkingArea.Width
myYSize = Me.Top + Me.Height
deskYSize = Screen.PrimaryScreen.WorkingArea.Height

[ô]magnetize right side
If myXSize >= deskXSize - 10 And myXSize < deskXSize Then
Me.Left = Screen.PrimaryScreen.WorkingArea.Width - Me.Width
End If

[ô]magnetize left side
If Me.Left <= 10 And Me.Left > 0 Then
Me.Left = 0
End If

[ô]magnetize down side
If myYSize >= deskYSize - 10 And myYSize < deskYSize Then
Me.Top = Screen.PrimaryScreen.WorkingArea.Height - Me.Height
End If

[ô]magnetize up side
If Me.Top <= 10 And Me.Top > 0 Then
Me.Top = 0
End If

End Sub
KURTGU 28/03/2011 15:10:32
#369491
juro MEsmo entao nao to sabendo usar pois aqui, to fazendo assim com esse projeto ai de cima, to criando outra form e colocando o mesmo codigo que a form1......... e simplesmente no load da form1 coloco form2.show.... abre as duas forms mais o efeito de arrastar e elas se agruparem nao funciona....
JONATHANSTECKER 28/03/2011 15:15:42
#369494
Esta explicado então! Essa é uma janela magnética para as dimensões no monitor.
Exemplo, pegue esse formulário e arraste até quase chegar até a barra de iniciar do windows.
Você verá que ela se juntará.

Se tiver interesse, passe esse projeto em C# que eu converto ele para você!
JONATHANSTECKER 28/03/2011 15:17:51
#369497
Citação:

:
o projeto de c# e muito extenso muito grande.....mais ta ai........ o exemplo que eu achei.............



Ok, vou ver o que posso fazer!
KURTGU 28/03/2011 15:18:13
#369499
o projeto do c# ta ai em cima.....
KURTGU 28/03/2011 15:20:04
#369501
Citação:

:
Esta explicado então! Essa é uma janela magnética para as dimensões no monitor.
Exemplo, pegue esse formulário e arraste até quase chegar até a barra de iniciar do windows.
Você verá que ela se juntará.

Se tiver interesse, passe esse projeto em C# que eu converto ele para você!





agora entendi heheheh entao da uma olhada ai nesse projeto de c# e nesse mesmo esquema que quero fazer mais, o unico defeito desse projeto e que o cara nao colocou o esquema de quando se arrastar a form1 a form 2 vim junto, isso nao tem pelo que eu vi mais o projeto ficou muito bom....
FROSTYNHO 21/04/2011 23:35:37
#372162
eu ja num te mandei um exemplo de janela magnetica?
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas