【问题标题】:Selecting dragging and dropping a file into GLFW application from Windows选择从 Windows 拖放文件到 GLFW 应用程序
【发布时间】:2016-03-10 22:48:48
【问题描述】:

所以基本上我很想知道我需要了解哪些 Windows api,以便能够在 Windows 中使用鼠标选择文件并将其拖放到我的应用程序窗口中

我的应用程序窗口将由 GLFW 处理,它主要处理图像格式,但这并不重要

我感兴趣的只是如何在 Windows 中执行此操作

基本上我有一个想法,我必须参考 Windows API,并利用它们的一些功能/方法,并通过一些管道将文件从 Windows 应用程序移植到我的应用程序

所以,如果你能指导我找到正确的 API 和一个简短的方法/想法,如何做到这一点以及它是如何工作的

谢谢

【问题讨论】:

    标签: c++ c windows glfw


    【解决方案1】:

    既然您使用的是 GLFW,为什么不使用 GLFW 中处理拖放的native method

    如果您希望接收放置在窗口上的文件和/或目录的路径,请设置文件放置回调。

    glfwSetDropCallback(window, drop_callback);

    回调函数接收编码为 UTF-8 的路径数组。

    void drop_callback(GLFWwindow* window, int count, const char** paths)
    {
    int i;
    for (i = 0;  i < count;  i++)
        handle_dropped_file(paths[i]);
    }
    

    路径数组及其字符串仅在文件删除回调返回之前有效,因为它们可能是专门为该事件生成的。如果要保留路径,则需要制作数组的深层副本。

    【讨论】:

      【解决方案2】:

      您只需要处理WM_DROPFILES 消息。

      为了接收到你应该在你的窗口上调用 DragAcceptFiles 来启用它作为 D&D 目标。

      【讨论】:

        猜你喜欢
        • 2016-02-16
        • 2013-03-06
        • 2012-07-31
        • 2013-09-17
        • 2013-04-08
        • 2022-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多