【问题标题】:Drag and drop files onto desktop icon in C++ WinForms在 C++ WinForms 中将文件拖放到桌面图标上
【发布时间】:2016-05-22 04:03:45
【问题描述】:

我是 C++ 初学者,我正在编写一个简单的 Windows 窗体应用程序。我想知道是否可以像在控制台应用程序中那样实现将删除的文件作为参数传递。对于后者,只是在 ma​​in() 中使用 argcargv[] 参数即可,但显然不能这样在 winforms 应用程序中完成(至少不是直接)。

根据我在网上搜索时收集到的信息,似乎可以在 C# 中执行此操作。但是,我不愿意将我的程序翻译成 C#,因为我没有使用该语言的经验。请注意,我对让表单接受丢弃的文件作为参数不感兴趣,但特别是桌面图标。

所以我的问题归结为以下几点:您能否在 C++ winforms 应用程序中将删除的文件作为起始参数传递?

【问题讨论】:

  • 不是你,是操作系统负责将文件作为命令行参数传递。您只能在应用程序中使用这些参数。而且只要是.net,都可以使用Environment::GetCommandLineArgs()

标签: c++ winforms visual-studio-2010


【解决方案1】:

在一个新的 Win32 C++ 项目中,在您的主 .cpp 文件中有一个 wWinMain 函数,它是应用程序启动的地方。您有一个指向带有命令行参数的字符串的指针(这将是您的拖放文件路径)。请参阅下面的代码和 cmets,我假设您知道如何处理 argv 和 argc。

#include <shellapi.h>

int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);


    // lpCmdLine is your command line arguments
    int argc;
    LPWSTR* argv = CommandLineToArgvW(lpCmdLine, &argc);

    // Now you have argc and argv[] to do with what you want

【讨论】:

  • 谢谢。所以,我必须切换到 Win32 项目,而在这种情况下 WinForms 是不行的?
  • 我不知道你为什么卡在 C++ 上,但任何可执行文件都可以接受命令行参数。使用任何你喜欢的语言,我个人更喜欢 C# .NET
猜你喜欢
  • 2011-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多