将文件拖放到C ++ WinForms中的桌面图标上

时间:2016-02-11 11:37:59

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

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

从搜索网络时收集到的内容来看,似乎可以在C#中进行。但是,我不愿意将我的程序翻译成C#,因为我没有使用该语言的经验。请注意,我没有兴趣让表单接受删除的文件作为参数,但具体是桌面图标。

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

1 个答案:

答案 0 :(得分:0)

In a new Win32 C++ project, in your main .cpp file there is a wWinMain function which is where the application starts. You have a pointer to a string there with the command line arguments (which will be your drag/dropped file path). See my code and comments below, I assume you know what to do with argv and 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