Avatar billede tdaugaard Nybegynder
29. november 2000 - 17:10 Der er 18 kommentarer og
2 løsninger

Docking code ?

Hejsa!

Jeg skal bruge noget kode der kan holde to forms \"sammen\" ligesom WinAMP\'s vinduer gør.

Indtil videre har jeg brugt en timer der checker for positionen på hovedvinduet og flyttet undervinduet hvis hovedevinduet blev flyttet, men det er for langsomt.

Jeg skal bruge noget kode der med det samme hovedvinduet bæliver flyttet, også flytter undervinduet.
Avatar billede lbs Nybegynder
29. november 2000 - 20:54 #1
min intuition siger mig at man aldrig ville kode noget så kompliceret i VB
Avatar billede tdaugaard Nybegynder
29. november 2000 - 20:56 #2
Min intuition siger mig at det vil jeg!

Der findes en milliard (+/- 999.999.964) API kald der kan bruges i VB og det skulle ikke undre mig andet end en kombination af et par stykker ville kunne gøre det. Noget med at capture den windows message der bliver sendt når man trækker i vinduet..
Avatar billede driis Nybegynder
29. november 2000 - 22:31 #3
En timer kan sættes til 1/1000 sekund; det kan vel ikke være for langsomt? Det er i hvert fald mindre end hvad det menneskelige øje kan nå at opfange.

Hvis du har 2 forms, og en timer sat til 100 millisekunder, virker det her fint:

Private Sub Form_Load()
Form2.Show
Form2.Left = Form1.Left + Form1.Width

Form2.Top = Form1.Top
End Sub

Private Sub Timer1_Timer()
Form2.Left = Form1.Left + Form1.Width
Form2.Top = Form1.Top
End Sub
Avatar billede tdaugaard Nybegynder
29. november 2000 - 22:45 #4
driis:> jeg bruger allerede en timer .. og desuden to variabler til hhv. Left, Top for ikke at opdatere hvis der ikke er sket nogen ændring i positionen.

Jeg kan desværre ikke bruge en \"timet\" docking kode..
Avatar billede tdaugaard Nybegynder
29. november 2000 - 22:46 #5
Desuden er Interval på min nuværende timer sat til 1 ...
Avatar billede driis Nybegynder
29. november 2000 - 23:01 #6
Problemet med en \'timet\' docking kode er, at .Left og .Top først opdateres, når brugeren slipper vinduet - hvis du lægger mærke til det, hopper det andet vindue straks på plads, når vinduet slippes.

Det du leder efter, er altså et API kald, der kan aflæse positionen realtime - et sådant har jeg godt nok \"ikke lige på lager\" - men måske et eller andet klogt hovede kunne bikse noget sammen?

Hvis du trods alt beslutter dig for at bruge nuværende metode, så lov mig lige, at du sætter timeren til noget mere end 1 - ellers bruger du en masse systemressourcer til ingenting.
Avatar billede tdaugaard Nybegynder
29. november 2000 - 23:05 #7
driis:> jeg kan tydeligt se forskel på 1ms og 100ms, og Left, Top bliver faktisk opdateret imens du trækker vinduet for mit \"undervindue\" \"følger\" med, men i hakker...
Avatar billede tdaugaard Nybegynder
29. november 2000 - 23:08 #8
men DET hakker skulle der havde stået..
Avatar billede driis Nybegynder
29. november 2000 - 23:09 #9
Mystisk; hos mig bliver der først opdateret når jeg slipper vinduet, ligegyldigt hvor længe jeg venter. Hvilken version af VB bruger du? (jeg har 5.0)
Avatar billede tdaugaard Nybegynder
29. november 2000 - 23:11 #10
Jeg bruger VB 6.0 nu, men da jeg startede på det program jeg er i gang med var det i 5.0 og der virkede det på samme måde ...

Lyder underligt hvis ikke det gør det samme hos dig ..
Avatar billede driis Nybegynder
29. november 2000 - 23:14 #11
Det undrer også mig...
Avatar billede tdaugaard Nybegynder
29. november 2000 - 23:20 #12
Hvis ikke det er noget kæmpe stort projekt du har gang i gider du så ikke prøve at sende mig det så jeg kan se hvordan l**** opfører sig her ?
Avatar billede lbs Nybegynder
30. november 2000 - 00:46 #13
hmm tjae jeg holder stadig på at det stinker at lave det på det med en timer

men hvis du kan grabbe en besked fra windows, så er det vel ligeså godt som
c++

beskeden du leder efter hedder
WM_WINDOWPOSCHANGED

hvordan du opfanger den i vb aner jeg intet om :)
Avatar billede tdaugaard Nybegynder
30. november 2000 - 00:49 #14
lbs:> ja, det stinker totalt at lave det med en timer ..
Mange tak for din WM_WINDOWPOSCHANGED .. jeg vil gemme den og se om jeg kan bruge den til noget senere..
Avatar billede lbs Nybegynder
30. november 2000 - 00:58 #15
selv tak :)
Avatar billede tdaugaard Nybegynder
30. november 2000 - 01:00 #16
*S* okai .. så får du lidt point som tak...
Avatar billede lbs Nybegynder
30. november 2000 - 01:04 #17
jeg tror svaret står her.
Det er vist en lidt heftig artikel, håber at du kan bruge den til noget.

http://msdn.microsoft.com/library/periodic/period98/fb0198.htm

iøvrigt er fandt jeg også ud af en anden besked hedder WM_MOVE, ved ikke hvilken af dem du skal bruge, men jeg foreslår du prøver dig frem
Avatar billede lbs Nybegynder
30. november 2000 - 01:04 #18
hey tak!
Avatar billede tdaugaard Nybegynder
30. november 2000 - 01:06 #19
DEt var så lidt, og tak for den artikel .. det ligner noget jeg kan bruge .. tror jeg ..
Avatar billede lbs Nybegynder
30. november 2000 - 01:07 #20
god fornøjelse :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester