Toon posts:

[VB.NET] Draggen met een borderless form

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik zit met een klein probleempje. Ik wil graag met een form zonder een border en titlebalk gaan draggen (verplaatsen). Maar dat kan natuurlijk niet meer omdat de titelbalk weg is.

Nu heb ik al een stukje code gevonden:

code:
1
2
3
4
5
6
7
8
9
10
11
    Public Declare Function ReleaseCapture Lib "USER32" () As Long

    Public Declare Function SendMessage Lib "USER32"() Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long 

    Private Sub Form_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        Select Case Button
            Case vbLeftButton
                Call ReleaseCapture()
                Call SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
        End Select
    End Sub


Maar deze code werkt alleen voor visual basic 6 volgens mij. Want ik kan in VB .NET geen Me.hwnd kiezen.

Ik krijg dan de foutmelding:

....WindowsApplication4\Form1.vb(831): 'hwnd' is not a member of 'WindowsApplication4.Form1'.

Kan iemand mij helpen :?

Alvast bedankt,
Daniel

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Uhm....

me.handle?

My personal website


Verwijderd

Topicstarter
Me.handle kan maar ik kan niet controleren ofdat het werkt omdat er nog een fout inzit.

code:
1
2
3
...
    Public Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long
...


Fout:

....WindowsApplication4\Form1.vb(579): 'As Any' is not supported in 'Declare' statements.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Verwijderd schreef op 29 oktober 2003 @ 15:51:
....WindowsApplication4\Form1.vb(579): 'As Any' is not supported in 'Declare' statements.
Wat dacht je ervan om daar ook "As Long" te plaatsen? :?

Professionele website nodig?


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Maak er maar een string van, gok ik zo, maareh....

1. Waar heb je die code vandaan?
2. Weet je wat je aan het doen bent?
3. Het is natuurlijk eigenlijk niet de bedoeling dat wij voor je gaan debuggen he ;)

My personal website


Verwijderd

Topicstarter
Als van die "Any" "Long" maak dan krijg ik:

....WindowsApplication4\Form1.vb(584): Value of type 'System.IntPtr' cannot be converted to 'Long'.

Nog steeds fout dus :?

- update -

Hij geeft geeft aan dat me.handle fout is.

ik heb de code hiervandaan:
http://www.vbwm.com/artic...rticleID=16&CurrentPage=3

[ Voor 41% gewijzigd door Verwijderd op 29-10-2003 15:59 ]


  • Yoeri
  • Registratie: Maart 2003
  • Niet online

Yoeri

O+ Joyce O+

(overleden)
ga dan uitzoeken wat het wel moet zijn, klein beetje zoekwerk hoeven wij toch niet voor jou te doen?

Kijkje in de redactiekeuken van Tweakers.net
22 dec: Onze reputatie hooghouden
20 dec: Acht fouten


Verwijderd

Topicstarter
Robbedoeske schreef op 29 October 2003 @ 15:58:
ga dan uitzoeken wat het wel moet zijn, klein beetje zoekwerk hoeven wij toch niet voor jou te doen?
dat is het probleem juist ik kan het niet vinden :)

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Wat dat betreft is internet heel makkelijk: daar kun je hardstikke veel dingen vinden! Zo vond ik bij google groups bijvoorbeeld een leuk topic waar ze je zomaar de oplossing geven!

Overigens kun je natuurlijk ook snappen dat, als je PC zegt "kan van een appel geen peer maken", het beter werkt als je hem een peer geeft, en geen appel ;)

My personal website


  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

[google="drag a borderless form"] en blammo. Omdat je ook volgens mij niet begrijpt wat je aan het doen bent (waarom in godesnaam ga je hier dllcalls voor lopen porten? Zou je niet eens uitzoeken of VB.NET hier een oplossing voor heeft?), hier de volledige werkende oplossing:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim mouse_offset As Point

Private Sub form1_MouseDown(ByVal sender As Object, ByVal e As _
    System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
    mouse_offset = New Point(-e.X, -e.Y)
End Sub

Private Sub form1_MouseMove(ByVal sender As Object, ByVal e As _
    System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
    If e.Button = MouseButtons.Left Then
        Dim mousePos As Point = Control.MousePosition
        mousePos.Offset(mouse_offset.X, mouse_offset.Y)
        Location = mousePos
    End If
End Sub


Journalism is printing what someone else does not want printed; everything else is public relations.


Verwijderd

Topicstarter
Rataplan schreef op 29 October 2003 @ 16:14:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim mouse_offset As Point

Private Sub form1_MouseDown(ByVal sender As Object, ByVal e As _
    System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
    mouse_offset = New Point(-e.X, -e.Y)
End Sub

Private Sub form1_MouseMove(ByVal sender As Object, ByVal e As _
    System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
    If e.Button = MouseButtons.Left Then
        Dim mousePos As Point = Control.MousePosition
        mousePos.Offset(mouse_offset.X, mouse_offset.Y)
        Location = mousePos
    End If
End Sub
Het werkt!!

Ik snapte mijn gevonden code idd niet. Nu is het een stuk duidelijker :)

Bedankt allemaal!! :)

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

NOFI, maar weet je nu dan wel wat je aan het doen bent? Ik heb namelijk het idee dat je blij bent dat je code hebt die doet wat jij graag wil, en that's it...? Je stapt namelijk ook erg makkelijk van je vorige code af...?

Whatever, fijn dat het nu wel werkt ;)

My personal website


Verwijderd

Topicstarter
OZ-Gump schreef op 29 October 2003 @ 16:24:
NOFI, maar weet je nu dan wel wat je aan het doen bent? Ik heb namelijk het idee dat je blij bent dat je code hebt die doet wat jij graag wil, en that's it...? Je stapt namelijk ook erg makkelijk van je vorige code af...?
ik stapte graag van die andere code af omdat deze net zo makkelijk werkt. En bij deze snap ik tenminste wat de code doet. Bij die andere snapte ik er echt niks van :)

  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

Verwijderd schreef op 29 October 2003 @ 16:27:
[...]


ik stapte graag van die andere code af omdat deze net zo makkelijk werkt. En bij deze snap ik tenminste wat de code doet. Bij die andere snapte ik er echt niks van :)
Dat komt omdat die vorige code geen dotnet-code is. Zullen we afspreken dat als je weer eens wat wil oplossen, je eerst oplossingen zoekt in de taal die voor het platform dat je wil gebruiken :? :)

edit:
Owh, en welkom @ GoT :+

[ Voor 8% gewijzigd door Rataplan op 29-10-2003 17:42 ]


Journalism is printing what someone else does not want printed; everything else is public relations.

Pagina: 1