Я наконец понял это. Вот функция. Крайне важно, чтобы вы поместили заголовочные файлы shlwapi.h и vcclr.h перед любыми вашими собственными заголовочными файлами, если они у вас есть. Это была проблема, с которой я боролся. Не до конца понимаю, почему это так. Если у кого-то есть хорошее объяснение, добро пожаловать комментировать. Кроме того, если кто-то знает, как объединить последние три строки кода в одном операторе возврата, добро пожаловать в добавление комментария.
#include "shlwapi.h" //needed this for StrCmpLogicalW
#include <vcclr.h> //needed this for PtrtoStringChars
//your own header files
ref class FileInfoNameComparer: public IComparer
{
private:
virtual int Compare( Object^ x, Object^ y ) sealed = IComparer::Compare
{
FileInfo^ objX = gcnew FileInfo(x->ToString());
FileInfo^ objY = gcnew FileInfo(y->ToString());
pin_ptr<const wchar_t> wch1 = PtrToStringChars(objX->Name);
pin_ptr<const wchar_t> wch2 = PtrToStringChars(objY->Name);
return StrCmpLogicalW(wch1, wch2);
}
};