tinyfiledialogs как сохранить файл в русской папке имен - PullRequest
1 голос
/ 13 апреля 2020

Я использую tinyfiledialogs lib, и я могу сохранять файлы в папках с именами на английском языке sh, но когда я пытаюсь сохранить точно такой же файл в папке, имя которой похоже, например, "Кот", другими словами в Русская буква я не мог.

Это код

IntPtr p = tinyfd_saveFileDialog(sDialogTitle, sInitialPathAndFile, 
            filterPatterns.Length, filterPatterns, sPatternDesc);

Это определено в somelib, который я использую

        [DllImport("tinyfiledialogs", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        public static extern IntPtr tinyfd_saveFileDialog(string aTitle, string aDefaultPathAndFile, int aNumOfFilterPatterns, string[] aFilterPatterns, string aSingleFilterDescription);

Любая помощь? Я новичок в эта библиотека и не смог найти никакой важной информации об этом.

Ответы [ 2 ]

2 голосов
/ 13 апреля 2020

Библиотека экспортирует версии своих функций в ANSI и Unicode (т.е. суффиксы A и W). Таким образом, вы можете просто изменить

CharSet = CharSet.Ansi

на

CharSet = CharSet.Unicode

, а маршалер pinvoke сделает все остальное.

1 голос
/ 14 апреля 2020

ОБНОВЛЕНИЕ: я только что исправил многие вещи в C# импорте DLL. Можете ли вы попробовать версию 3.6.0 с новыми DLL?

Я являюсь автором tinyfiledialogs. Сначала убедитесь, что вы получаете его с сайта sourceforge https://sourceforge.net/projects/tinyfiledialogs, а не с какой-либо копии github (обычно устарела).

Как сообщалось, вам следует использовать UTF-16 (wchar_t - CharSet = CharSet.Unicode) звонки. Но UTF-8 (char = CharSet.Ansi) также работает сейчас.

...