dragdrop files v CLR C++
Ladislav Vaiz
spam na nagano.cz
Čtvrtek Září 22 20:09:36 CEST 2022
Když tak koukám na
> Collections::Specialized::StringCollection ^ list =
(Collections::Specialized::StringCollection
^)e->Data->GetData(DataFormats::FileDrop,
tak i ta příroda se vám snaží naznačit, že je to špatná cesta :-)
V C# je univerzální foreach, tady by to mohlo být:
auto lst = e->Data->GetData(DataFormats::FileDrop, false);
for each(String ^ s in lst){
Debug.Print("{0}\n", s);
}
L.
P.S. Snažím se teď v už dříve zmiňovaném projektu používat "pokročilé"
vlastnosti, co znám z C# používat v C++. Konkrétně procházení a řazení
kolekcí, lambda funkce. V C++ je to šílenost. I ve "starém" C# to
všechno funguje jednoduše a logicky, o LINQ v aktuálních verzích ani
nemluvě. Bohužel dělat pod ESP32 v C# asi bude stejně okrajový případ
jako vaše C++ CLR.
On 22.09.2022 17:54, Pavel Hudeček wrote:
> Tak z tohodle jsem nic rozumného nevyzískal.
>
> Ale už předtím mi selhala snaha dostat to do
> 1. List<String^>^ - ani nešla deklarovat proměnná takového typu
> 2. std::vector<std::string> o kterých se tam zmiňují
>
> jediné co jse, je
> auto lst = e->Data->GetData(DataFormats::FileDrop, false);
> (je jedno zda fale/true)
>
> lst->GetType() vyplivne samořejmě zase System.String[]
>
> ale nemá žádný ->Items, nebo něco takovýho, přes co bych z něj dostal
> ty stringy
>
> PH
>
> Dne 22.09.2022 v 16:49 Nesvacil Jiri napsal(a):
>> https://stackoverflow.com/questions/32786187/passing-an-array-of-strings-from-c-to-c-sharp
>>
>>
>> Dne 22.09.2022 v 16:43 Pavel Hudeček napsal(a):
>>> Trochu jsem s tím pohnul:
>>> Collections::Specialized::StringCollection ^ list =
>>> (Collections::Specialized::StringCollection
>>> ^)e->Data->GetData(DataFormats::FileDrop, true);
>>> for (int n=0; n<list->Count; n++) listBox1->Items->Add(list[n]);
>>> To jde aspoň přeložit:-)
>>> Ale stejně to skončí na chybě, že System.String[] nelze přetypovat
>>> na System.Collections.Specialized.StringCollection.
>>> Takže je ten výstup jinej než z Clipboard.GetFileDropList
>>>
>>> Pořád tedy to samé: Jak v c++ udělat System.String[]?
>>>
>>> PH
>>>
>>>
>>> Dne 22.09.2022 v 16:25 Pavel Hudeček napsal(a):
>>>> No to přepínátko funguje jen částečně, asi podle toho, které části
>>>> mají udělané a když stránka neobsahuje alternativní jazyk, tak ho
>>>> nezobrazí vůbec. Např. u toho clipboardu se tím do c++ přepne
>>>> definice, ale example už ne. Ten jde přepnout třeba do vb.
>>>>
>>>> PH
>>>>
>>>> Dne 22.09.2022 v 16:04 Ladislav Vaiz napsal(a):
>>>>> Asi nechcete slyšet knížecí radu, ale já bych přešel na C# :-(
>>>>> V MSDN se někdy dají jazyky přepnout, např. v
>>>>> https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.clipboard.getdata?view=netframework-4.0
>>>>> je přepínátko nad nadpisem vpravo.
>>>>> L.
>>>>>
>>>>> On 22.09.2022 15:55, Pavel Hudeček wrote:
>>>>>> Dobrý den všem,
>>>>>>
>>>>>> tady
>>>>>> Provide file drag and drop functionality - Visual C++ | Microsoft
>>>>>> Learn
>>>>>> <https://learn.microsoft.com/en-us/troubleshoot/developer/visualstudio/cpp/language-compilers/provide-file-drag-drop-functionality>
>>>>>> je popis jak udělat, aby se v listboxu zobrazil seznam na něj
>>>>>> hozeých souborů.
>>>>>> To funguje.
>>>>>>
>>>>>> Jak totéž udělat v C++ CLR?
>>>>>>
>>>>>> První část s DragEnter funguje:
>>>>>> private: System::Void listBox1_DragEnter(System::Object^ sender,
>>>>>> System::Windows::Forms::DragEventArgs^ e) {
>>>>>> if (e->Data->GetDataPresent(DataFormats::FileDrop))
>>>>>> e->Effect = DragDropEffects::All;
>>>>>> else
>>>>>> e->Effect = DragDropEffects::None;
>>>>>> }
>>>>>>
>>>>>> Ale všechny pokusy o DragDrop selhaly na tom, že nem;žu najít C
>>>>>> ekvivalent pro
>>>>>> string[] s = (string[]) e.Data.GetData(DataFormats.FileDrop, false);
>>>>>> Nějaké nápady?
>>>>>>
>>>>>> Díky,
>>>>>> PH
>>>>>
>>>>> _______________________________________________
>>>>> HW-list mailing list - sponsored by www.HW.cz
>>>>> Hw-list na list.hw.cz
>>>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>>
>>>> _______________________________________________
>>>> HW-list mailing list - sponsored by www.HW.cz
>>>> Hw-list na list.hw.cz
>>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
>>> _______________________________________________
>>> HW-list mailing list - sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>> _______________________________________________
>> HW-list mailing list - sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list