2016-02-11 99 views
-1

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

从我在搜索网页时收集的信息看来,它似乎可以在C#中完成。但是,我不愿意将我的程序翻译成C#,因为我对该语言没有经验。请注意,我不希望让表单接受将文件作为参数放置,但特别是桌面图标。

所以我的问题归结为以下几点:你可以传递丢弃的文件作为C++ winforms应用程序的起始参数?

+0

这不是你,它是负责通过命令行参数传递文件的操作系统。您只能在应用程序中使用这些参数。只要是.net,你可以使用'Environment :: GetCommandLineArgs()' –

回答

0

在新的Win32 C++项目中,在主.cpp文件中有一个wWinMain函数,它是应用程序启动的地方。你有一个指向字符串的指针和命令行参数(这将是你的拖/放文件路径)。看看我的代码和下面的评论,我假设你知道如何处理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 
+0

谢谢。所以,我必须切换到Win32项目,WinForms在这种情况下是不可行的? –

+0

我不知道为什么你被困在C++中,但是任何可执行文件都可以使用命令行参数。使用任何您熟悉的语言,我个人更喜欢C#.NET – Mangist

相关问题