Хорошо, поэтому у меня есть эта программа, которая принимает файлы, которые пользователь перетаскивает на ярлык. В настоящее время программа может принимать удаленные файлы. Затем я сохраняю файлы в System :: Object ^. Внутри System :: Object ^ находится {System.Array}, содержащий путь к файлам, перетаскиваемым на поле метки.
Мне нужно иметь доступ к путям к файлам в {System.Array} внутри System :: Object ^. Я конвертирую другую программу, написанную на Visual Basic, в C ++; поэтому я стараюсь держать код обеих программ довольно близко друг к другу. Я немного посмотрел на OLE для перетаскивания и думаю, что должен быть в состоянии выполнить перетаскивание, как я начал в этом коде. Я чувствую, что OLE - это слишком много для того, что мне нужно, мне просто нужны пути к файлам. Любые идеи о том, как я могу получить пути к файлам?
private: System::Void lblDragHere_DragEnter(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e)
{
if (e->Data->GetDataPresent(System::Windows::Forms::DataFormats::FileDrop))
e->Effect = System::Windows::Forms::DragDropEffects::All;
else
e->Effect = System::Windows::Forms::DragDropEffects::None;
lblError->Visible = false;
blnSaveSuccessful = false;
}
private: System::Void lblDragHere_DragDrop(System::Object^ sender, System::Windows::Forms::DragEventArgs^ e)
{
bool blnContinue = false;
// Checks if the user has not set a save location for the files.
if (lblSaveLocation->Text == "Current Save Location")
{
lblError->ForeColor = Color::Red;
lblError->Text = "Please select a save location first.";
lblError->Visible = true;
}
else
{
lblError->Visible = false;
// Checks to see if the user actually dropped anything onto lblDragHere
if (e->Data->GetDataPresent(DataFormats::FileDrop))
{
System::Object ^ MyFiles;
// Assign the files to the array.
MyFiles = e->Data->GetData(DataFormats::FileDrop);
}
}
}