Есть предложение добавить FCTL_GETPANELCOLUMNS (и может быть выкинуть FCTL_GETCOLUMNTYPES, FCTL_GETCOLUMNWIDTHS). Чтобы возвращать не просто строку, а и уже распарсенную структуру, в том числе с текущими реальными ширинами колонок.
Для чего могут понадобиться колонки в строковом виде плагинам? Я что-то ни одного usecase придумать не могу. Они нужны для того, чтобы плагин выполнил мартышкин труд по разбору колонок. Так, например, поступает FarHints, ConEmu (приходится в плагине держать свой собственный парсер).
Видится мне что-то вроде
Code: Select all
struct ViewSettingsColumn
{
UINT Type; // ИД колонки (имя, расширение, размер, C0, и т.п.)
UINT WidthType; // ячейки или проценты
UINT Width; // количество, указанное в настройке в WidthType
UINT CurrentWidth; // реальное количество ячеек на экране
size_t Flags; // выравнивание и прочее
const wchar_t *AsString; // мож кому надо
};
struct GetPanelColumnsInfo
{
size_t StructSize;
struct ViewSettingsColumn PanelColumns[10];
struct ViewSettingsColumn StatusColumns[10];
};