C++ 在Windows Universal App上拖放文件

C++ 在Windows Universal App上拖放文件,c++,directx,uwp,C++,Directx,Uwp,如何在Windows Universal App上拖放文件 我找到的唯一教程是: 然而,它在XAML UI对象上运行,而我有一个DirectX游戏,根本不使用XAML 我只想将文件拖放到应用程序窗口(不是单个UI元素,而是整个窗口),然后在事件回调中获取文件的完整路径 我使用C++,这需要Windows 10通用应用程序。< /P> < P>请你告诉我为什么你不想用XAML来解决这种情况?由于UWP XAML UI控件对拖放功能非常方便,并且它还支持C++与DX的互操作。可能会有帮助。从这个在

如何在Windows Universal App上拖放文件

我找到的唯一教程是:

然而,它在XAML UI对象上运行,而我有一个DirectX游戏,根本不使用XAML

我只想将文件拖放到应用程序窗口(不是单个UI元素,而是整个窗口),然后在事件回调中获取文件的完整路径


我使用C++,这需要Windows 10通用应用程序。< /P> < P>请你告诉我为什么你不想用XAML来解决这种情况?由于UWP XAML UI控件对拖放功能非常方便,并且它还支持C++与DX的互操作。可能会有帮助。从这个在线帮助中,您可以发现您可以自定义自己的控件,使其完全不显示UI

如果您想在没有XAML帮助的情况下实现拖放文件,则需要做大量工作:将文件拖动到UWP游戏意味着在应用程序之间共享数据,因此您的实现需要遵循,这意味着您需要重新编码XAML UIElement已经封装的所有内容,例如:实施DropTarget控制模式

对于您的情况,若您只想打开文件,那个么文件选择器就更简单方便了。如果仍然希望支持拖放,强烈建议互操作XAML和DX。在这里你可以找到有用的。您可以在C++中构建应用程序,这将满足您对保存内存和提高性能的关注。
如果您有任何问题,请告诉我。

您能告诉我为什么不想在这种情况下使用XAML吗?由于UWP XAML UI控件对拖放功能非常方便,并且它还支持C++与DX的互操作。可能会有帮助。从这个在线帮助中,您可以发现您可以自定义自己的控件,使其完全不显示UI

如果您想在没有XAML帮助的情况下实现拖放文件,则需要做大量工作:将文件拖动到UWP游戏意味着在应用程序之间共享数据,因此您的实现需要遵循,这意味着您需要重新编码XAML UIElement已经封装的所有内容,例如:实施DropTarget控制模式

对于您的情况,若您只想打开文件,那个么文件选择器就更简单方便了。如果仍然希望支持拖放,强烈建议互操作XAML和DX。在这里你可以找到有用的。您可以在C++中构建应用程序,这将满足您对保存内存和提高性能的关注。
如果您有任何问题,请告诉我。

对不起,我不想使用文件选择器或XAML。我想要的是拖放一个文件,然后能够得到它的完整路径和文件名,存储在磁盘上,并且使用标准的C++ IO文件访问函数来访问它,如FPEN、FRAAD等。从我所看到的,UWP应用程序太有限,不能做这样简单的事情。我不想使用XAML,因为:它看起来很复杂,看起来它可能会降低性能,我正在制作需要全面性能的3D重DirectX应用程序。我使用自己的命令使用DirectX渲染来处理整个界面的渲染。在WinAPI中,我可以很容易地做到这一点,只需处理“case WM_DROPFILES”回调并获取文件名。这只需要几行代码就可以轻松地工作。这意味着UWP没有真正简单的API来做这件事,我想要的是一个简单的API。我不想要一个文件选择器解决方案,因为更自然(更快)的方式是拖放,如果我已经看到我想要处理的文件,例如在桌面上,那么我可以简单地拖放到应用程序上。但是如果我必须使用文件选择器,那么我需要:1)单击“打开”打开文件选择器2)转到文件的路径文件夹位置-非常慢的任务3)选择文件4)按“确定”。与拖放相比,要做的事情太多了。我也关注了你的链接,这听起来非常复杂,老实说,我不知道从哪里开始。谢谢想象一下,我正在编写一个可以转换文件的应用程序。例如,我拖放一个BMP图像,我的应用程序将其压缩并自动保存为PNG图像,保存在同名的同一文件夹中。例如:我将“C:\Folder\image.bmp”文件拖放到我的应用程序窗口,我的应用程序将生成“C:\Folder\image.png”,所以我需要的是一个简单的API,比如:void onfilesdroped(字符串文件名[],int window\u client\u pos\u x,int window\u client\u pos\u y){..}其中“file_names”是拖放到app上的所有文件/文件夹的完整路径名数组,其他2个参数是发生拖放的客户端窗口位置的XY坐标。所以在我的示例应用程序中,我会这样做:对于每个文件名{Image Image;Image.loadBMP(file_names[I]);Image.savePNG(file_names[I]+“.png”);},对不起,我不想使用文件选择器或XAML。我想要的是拖放一个文件,然后能够得到它的完整路径和文件名,存储在磁盘上,并且使用标准的C++ IO文件访问函数来访问它,如FPEN、FRAAD等。从我所看到的,UWP应用程序太有限,不能做这样简单的事情。我不想使用XAML,因为:它看起来很复杂,看起来它可能会降低性能,我正在制作需要全面性能的3D重DirectX应用程序。我使用自己的命令使用DirectX渲染来处理整个界面的渲染。在WinAPI中,我可以很容易地做到这一点,只需处理“case WM_DROPFILES”回调并获取文件名。这只需要几行代码就可以轻松地工作。这意味着UWP没有真正简单的API来做这件事,我想要的是一个简单的API。我不想要一个文件选择器解决方案,因为更自然(更快)的方式是拖放,如果我已经看到我想要处理的文件,例如在桌面上,那么我可以简单地拖放到应用程序上。但如果我必须使用文件选择器,那么我需要: