View Issue Details

IDProjectCategoryView StatusLast Update
0002047Far ManagerInterfacepublic2017-11-02 18:58
ReporterMaximusAssigned To 
PrioritynormalSeverityminorReproducibilityhave not tried
Status newResolutionopen 
Product Version3.0 
Target VersionFixed in Version 
Summary0002047: Недочеты API для ExtendedConsole.dll
DescriptionНет возможности узнать, используется ли режим буфера.
Сейчас есть хак - проверить размер окна и буфера при запуске.
Но это нифига не работает, если фар запущен с ключом "/w", а прокрутки нет
(размер окна равен размеру буфера), так что после увеличения буфера
через свойства консоли (например) отрисовка будет в неправильном месте.

Варианты.

1. При первом запуске звать функцию в ExtendedConsole.dll

typedef unsigned __int64 EXTENDEDCONSOLE_FLAGS;
static const EXTENDEDCONSOLE_FLAGS
    ECF_WINDOWMODE = 0x0000000000000001ULL,
    ECF_NONE = 0x0000000000000000ULL,
struct ExtendedConsoleInfo
{
    size_t StructSize;
    EXTENDEDCONSOLE_FLAGS Flags;
};
void WINAPI Init(ExtendedConsoleInfo* Info);

2. Либо все-таки передавать в ExtendedConsole реальные координаты,
и не заставлять длл-ку решать где действительно нужно рисовать текст.

TagsWindowMode
Build

Activities

2useven10

2012-03-12 11:17

developer   bugnote:0008737

Last edited: 2012-03-12 11:25

View 2 revisions

1-й вариант сделать несложно, но в extendedconsole.dll нет ф-и Init().

Maximus

2012-03-12 11:21

reporter   bugnote:0008738

Ест-но нету. Ее же нету в АПИ.
И еще наверное так, на будущее

typedef unsigned __int64 EXTENDEDCONSOLE_FLAGS;
static const EXTENDEDCONSOLE_FLAGS
    ECF_WINDOWMODE = 0x0000000000000001ULL,
    ECF_VIRTUAL = 0x0000000000000002ULL,
    ECF_NONE = 0x0000000000000000ULL,

ECF_VIRTUAL флаг того, что координаты отдаются не "консольные", а "виртуальные панельные", как сейчас.

DrKnS

2012-03-12 11:26

administrator   bugnote:0008739

> 2. Либо все-таки передавать в ExtendedConsole реальные координаты,
и не заставлять длл-ку решать где действительно нужно рисовать текст.

А я давно предлагал:

"В принципе, да, можно абстракцию опустить с уровня "замена фаровских адванцед-врапперов над winapi-функциями" до уровня "просто замена winapi-функций".
Но в этом случае будет немного больше экспортов и заменяющий получит в наследство всякие console-specific приколы вроде деления буферов в <Read|Write>Output на куски по 32 к."

2useven10

2012-03-12 11:27

developer   bugnote:0008740

А зачем протаскивать её в API? Один раз 'приватно' вызвать после загрузки длл не достаточно?

Maximus

2012-03-12 11:47

reporter   bugnote:0008741

DrKnS, наверное это будет правильно (т.е. п.2). Куски по 32к - по фигу, все-равно ведь координаты передаются. Главное, чтобы Commit никуда не делся. В любом случае, "полной" замены WinApi не будет, т.к. в WinApi как минимум отсутствует FAR_CHAR_INFO

2useven10, ест-но имеется в виду "ExtenderConsole api". В Plugin.hpp ты не найдешь WriteOutput и все такое.

DrKnS

2012-03-12 12:01

administrator   bugnote:0008742

Я посмотрел и что-то мне уже не хочется переделывать.

Реальных координат в ReadOutput/WriteOutput тебе достаточно?

2useven10

2012-03-12 12:39

developer   bugnote:0008743

я имел ввиду class console. но если DrKnS переделает на реальные координаты - несущественно.

Maximus

2012-03-12 13:10

reporter   bugnote:0008745

Да. думаю, с реальными координатами будет норм.

Issue History

Date Modified Username Field Change
2012-03-06 14:14 Maximus New Issue
2012-03-12 11:17 2useven10 Note Added: 0008737
2012-03-12 11:21 Maximus Note Added: 0008738
2012-03-12 11:25 2useven10 Note Edited: 0008737 View Revisions
2012-03-12 11:26 DrKnS Note Added: 0008739
2012-03-12 11:27 2useven10 Note Added: 0008740
2012-03-12 11:47 Maximus Note Added: 0008741
2012-03-12 12:01 DrKnS Note Added: 0008742
2012-03-12 12:39 2useven10 Note Added: 0008743
2012-03-12 13:10 Maximus Note Added: 0008745
2017-11-02 18:58 JohnDoe Tag Attached: WindowMode