2008-10-10 7 views
4

J'ai une application Winapi pure qui a besoin de quelques nouvelles fonctionnalités. L'un d'eux serait mieux implémenté comme deux listes où vous pouvez glisser-déposer (plusieurs) éléments entre les listes. La nouvelle fonctionnalité peut être limitée à une seule boîte de dialogue.Faites glisser et déposer dans winapi

Quel serait le moyen le plus rapide de mettre en œuvre cela? Quelques idées:

  • pure winapi (est-il DetectDrag)
  • Un MFC distinct ou DLL .NET qui fournit ce un dialogue
  • Intégrer le contrôle Microsoft WebBrowser et utiliser JQuery

Une de ces options qui devrait être évitée?
De meilleures idées?
Quel est le plus rapide à mettre en œuvre?
Des pointeurs sur la façon de commencer?

Répondre

7

Mon conseil serait que si l'application est en pur winapi, gardez-le comme ça. Démarrer un environnement d'exécution .NET juste pour une boîte de dialogue avec des éléments déplaçables est aussi mauvais que d'héberger un contrôle WebBrowser et utiliser JQuery pour cette fonctionnalité - c'est au moins le bonjourwtf.com-digne si vous me demandez (mais encore une fois, tu ne me demandes pas;)). Sinon vous vous mettrez (et potentiellement d'autres) dans un cauchemar de maintenabilité et le moyen le plus rapide deviendra le plus problématique.

Edit: Peut-êtrethosetwo articles aideront à mettre en œuvre glisser-déposer - ils sont sur la ligne en réorganisant listviews, mais aidera probablement à obtenir l'idée.

-1

La méthode que vous connaissez le mieux sera la plus rapide.

Il est certainement très facile de le faire dans Windows Forms .NET. Vous pouvez facilement faire glisser et déposer des éléments entre les entrées ListBox en écrivant juste quelques lignes de code. Regardez quelque part comme CodeProject pour les échantillons.

5

Raymond Chen a écrit une série de blogue sur ce sujet il n'y a pas si longtemps. Commencez here.

0

Tout le code est dans MSDN en C et win32 api Il suffit de copier-coller.

Et voir api Win32 professionnelle ng nouvelles: //194.177.96.26/comp.os.ms-windows.programmer.win32 où tout cela a été discuté depuis des décennies ...

+0

'news: // 194.177.96.26 /' est maintenant juste une chaîne de recherche de navigateur (Google dans ce cas).Le matériel "discuté pendant des décennies" ne s'affiche malheureusement pas. Une archive peut exister, mais les informations sur la localisation ne sont pas révélées via cette recherche de nouvelles. –

2

Quelques notes après l'implémentation dans l'API Win32:

Le glisser-déposer n'est pas pris en charge par le contrôle ListBox. Ce doit être un contrôle ListView.

Cette CodeProject article est très bonne. (Merci macbirdie)
La section MSDN de ListViews est bien sûr très utile.