2016-02-11 6 views
-1

Я начинающий на C++, и я пишу простое приложение для форм Windows. Мне было интересно, можно ли реализовать передаваемые файлы в качестве аргументов, например, в консольных приложениях. В последнем случае просто использовать параметры argc и argv [] в main(), но, очевидно, это не может быть сделано в приложении winforms (по крайней мере, не напрямую).Перетаскивание файлов на значок на рабочем столе в C++ WinForms

Из того, что я собрал при поиске в Интернете, кажется, что это можно сделать на C#. Однако я не хочу переводить свою программу на C#, поскольку у меня нет опыта работы с этим языком. Обратите внимание, что я не заинтересован в том, чтобы форма принимала отбрасываемые файлы в качестве аргументов, а именно значок рабочего стола.

Так что мой вопрос сводится к следующему: Можете ли вы передать упавшие файлы в качестве начальных аргументов в приложении Winforms C++?

+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 - это не-go в этом случае? –

+0

Я не уверен, почему вы застряли на C++, но любой исполняемый файл может принимать аргументы командной строки. Используйте любой язык, с которым вам удобно, лично я предпочитаю C# .NET – Mangist

Смежные вопросы