Перетащите в Winapi - PullRequest
       35

Перетащите в Winapi

4 голосов
/ 10 октября 2008

У меня есть чистое приложение Winapi, которому нужно несколько новых функций. Один из них лучше всего реализовать в виде двух списков, в которые можно перетаскивать (несколько) элементов между списками. Новая функция может быть ограничена одним диалогом.

Какой самый быстрый способ реализовать это? Несколько идей:

  • Чистый Винапи (это DetectDrag)
  • Отдельная MFC или .NET DLL, которая обеспечивает это одно диалоговое окно
  • Вставить элемент управления Microsoft WebBrowser и использовать JQuery

Любой из этих вариантов, которых следует избегать?
Есть идеи получше?
Что быстрее всего реализовать?
Любые указатели о том, как начать?

Ответы [ 5 ]

7 голосов
/ 10 октября 2008

Мой совет: если приложение написано на чистом winapi, оставьте его таким.

Запуск среды выполнения .NET Framework только для одного диалогового окна с перетаскиваемыми элементами так же плох, как размещение элемента управления WebBrowser и использование JQuery для этой единственной функциональности - по крайней мере, если вы спросите меня, то стоит того не спрашивай меня;)).

В противном случае вы попадете в себя (и, возможно, в других) в какой-то кошмар, связанный с ремонтопригодностью, и самый быстрый способ станет самым проблематичным.

Редактировать: Возможно эти две статьи помогут в реализации drag-drop - они о переупорядочении строк в ListViews, но, вероятно, помогут в получении идея.

5 голосов
/ 10 октября 2008

Не так давно Рэймонд Чен написал серию постов на эту тему. Начало здесь .

2 голосов
/ 02 ноября 2008

Несколько замечаний после реализации этого в Win32 API:

Перетаскивание не поддерживается элементом управления ListBox. Это должен быть элемент управления ListView.

Эта статья CodeProject очень хороша. (Спасибо macbirdie)
MSDN-раздел ListViews , конечно, очень полезен.

0 голосов
/ 11 октября 2008

Весь код в MSDN на C и Win32 API Просто скопируйте и вставьте.

И смотрите профессиональный Win32 API Новости: //194.177.96.26/comp.os.ms-windows.programmer.win32 где все это обсуждалось десятилетиями ...

0 голосов
/ 10 октября 2008

Какой бы метод вы ни знали, он будет самым быстрым.

Конечно, это очень легко сделать в .NET Windows Forms. Вы можете легко перетаскивать элементы между записями ListBox, написав всего несколько строк кода. Посмотрите где-нибудь как CodeProject для образцов.

...