在winapi中拖放

时间:2008-10-10 09:06:46

标签: c windows winapi drag-and-drop

我有一个纯粹的Winapi应用程序需要一些新功能。其中一个最好实现为两个列表,您可以在列表之间拖放(多个)元素。新功能可以限制为单个对话框。

实施此操作的最快方法是什么? 一些想法:

  • Pure Winapi(是DetectDrag)
  • 提供此对话框的单独MFC或.NET DLL
  • 嵌入Microsoft WebBrowser控件并使用JQuery

应避免的任何选项?
有什么更好的想法吗? 什么是最快的实施?
有关如何入门的任何指示?

5 个答案:

答案 0 :(得分:7)

我的建议是,如果应用程序是纯粹的winapi,请保持这种方式。

只为一个带有可拖动项目的对话框启动.NET框架运行时与托管WebBrowser控件和使用JQuery实现这一功能一样糟糕 - 如果你问我,那至少是thedailywtf.com值得的(但话又说回来了) “不要问我;))。

否则你会把自己(可能还有其他人)置于一些可维护性的噩梦中,最快捷的方式将成为最有问题的方法。

编辑:也许those two文章有助于实现拖放功能 - 它们是关于ListViews中的行重新排序,但可能有助于实现这一想法。

答案 1 :(得分:5)

Raymond Chen不久前写了一系列关于这个主题的博客文章。开始here

答案 2 :(得分:2)

在Win32 api中执行此操作后的一些注意事项:

ListBox控件不支持拖放。它必须是ListView控件。

CodeProject article非常好。 (谢谢macbirdie)
ListViews的MSDN部分当然非常有用。

答案 3 :(得分:0)

所有代码都在C和win32 api的MSDN中 只需复制粘贴。

看专业的Win32 api ng 新闻://194.177.96.26/comp.os.ms-windows.programmer.win32 所有这些已经讨论了几十年......

答案 4 :(得分:-1)

您最熟悉的方法是最快的方法。

当然,在.NET Windows Forms中执行此操作非常容易。只需编写几行代码,就可以轻松地在ListBox条目之间拖放项目。请查看CodeProject之类的样本。