HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Drag and Drop alkalmazások között


Példaprogram letöltése

6558 bájt

Nagyon sok alkalmazás képes arra, hogy ha a Windows Intézőjéből kijelölünk állományokat és Drag and Drop-al az adott programra húzzuk, akkor ezek az állományok valamilyen módon felhasználásra kerülnek az alkalmazásban.
Ha saját programunkban is szeretnénk ezt a lehetőséget megvalósítani, akkor a mellékelt példából megtudhatjuk ennek a módját.
A Drag and Drop nem csak a Windows Intézőből indulhat, hanem bármely olyan alkalmazásból, mely képes erre.

A megoldást egy Windows üzenet figyelése adja. Amikor a WM_DROPFILES üzenetet kapja az alkalmazásunk, akkor biztosak lehetünk abban, hogy valamely másik programról Drag and Drop érkezett.
Azonban ezt az üzenetet nem kapja meg bármely alkalmazás, hanem csak azok, melyek ezt kérik a Windows-tól. E kéréshez a DragAcceptFiles függvény hívása szükséges, melynek első paraméterében annak az ablaknak az azonosítóját (Handle) kell megadni, mely képes fogadni a WM_DROPFILES-t, amikor egy Drag and Drop érkezik. A második paraméterben arról rendelkezhetünk, hogy kérjük, illetve nem kérjük a WM_DROPFILES üzenetet.
Win32.DragAcceptFiles(Handle, True)
Most már csak azt kell megvalósítanunk, hogy figyelve legyen a WM_DROPFILES üzenet. Ehhez felülírjuk a WndProc függvényt.
  Protected Overrides Sub WndProc(ByRef m As Message)
    If m.Msg = Win32.WM_DROPFILES Then
      label1.Text = ""
      Dim filename As New StringBuilder(260)
Ha a WM_DROPFILES üzenetet megkaptuk, akkor meg kell állapítanunk, hogy milyen állományok lettek Drag and Drop-al a programunkra húzva. Mivel a Windows Intézőben több állomány is kijelölhető és áthúzható, így elsőnek ezt a darabszámot állapítjuk meg. Ehhez a DragQueryFile függvényt kell úgy meghívnunk, hogy második paramétere 0xFFFFFFFF értéket kapjon. Ennek hatására a függvény visszatérési értéke az áthúzott objektumok számával lesz egyező.
      Dim count As Integer = Win32.DragQueryFile(m.WParam, -1, filename, 260)
Most már indíthatunk egy ciklust, melyben végigmegyünk az összes állományon. Az egyes állományneveket szintén a DragQueryFile függvénnyel tudjuk lekérdezni, csak most a második paraméterben a kérdéses objektum sorszámát kell megadnunk. Az adott állománynév a harmadik paraméterben átadott StringBuilder-be kerül.
      Dim i As Integer
      For i = 0 To count - 1
        If Win32.DragQueryFile(m.WParam, i, filename, 260) > 0 Then
          label1.Text += filename.ToString + ControlChars.Lf.ToString
        End If
      Next i
      m.Result = IntPtr.Zero
A műveletet lezárásához a DragFinish függvény hívása szükséges.
      Win32.DragFinish(m.WParam)
    Else
      MyBase.WndProc(m)
    End If

Cikksorozat

#IDKategóriaCikk címeSorozat
4397Windows.NET Framework konfigurálása az operációs rendszerben1. rész
4446Windows.NET Framework konfigurációs snap-in2. rész


Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |