View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002047 | Far Manager | Interface | public | 2012-03-06 10:14 | 2017-11-02 15:58 |
Reporter | Maximus | Assigned To | |||
Priority | normal | Severity | minor | Reproducibility | have not tried |
Status | new | Resolution | open | ||
Product Version | 3.0 | ||||
Summary | 0002047: Недочеты 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 реальные координаты, и не заставлять длл-ку решать где действительно нужно рисовать текст. | ||||
Tags | WindowMode | ||||
Build | |||||
|
1-й вариант сделать несложно, но в extendedconsole.dll нет ф-и Init(). |
|
Ест-но нету. Ее же нету в АПИ. И еще наверное так, на будущее typedef unsigned __int64 EXTENDEDCONSOLE_FLAGS; static const EXTENDEDCONSOLE_FLAGS ECF_WINDOWMODE = 0x0000000000000001ULL, ECF_VIRTUAL = 0x0000000000000002ULL, ECF_NONE = 0x0000000000000000ULL, ECF_VIRTUAL флаг того, что координаты отдаются не "консольные", а "виртуальные панельные", как сейчас. |
|
> 2. Либо все-таки передавать в ExtendedConsole реальные координаты, и не заставлять длл-ку решать где действительно нужно рисовать текст. А я давно предлагал: "В принципе, да, можно абстракцию опустить с уровня "замена фаровских адванцед-врапперов над winapi-функциями" до уровня "просто замена winapi-функций". Но в этом случае будет немного больше экспортов и заменяющий получит в наследство всякие console-specific приколы вроде деления буферов в <Read|Write>Output на куски по 32 к." |
|
А зачем протаскивать её в API? Один раз 'приватно' вызвать после загрузки длл не достаточно? |
|
DrKnS, наверное это будет правильно (т.е. п.2). Куски по 32к - по фигу, все-равно ведь координаты передаются. Главное, чтобы Commit никуда не делся. В любом случае, "полной" замены WinApi не будет, т.к. в WinApi как минимум отсутствует FAR_CHAR_INFO 2useven10, ест-но имеется в виду "ExtenderConsole api". В Plugin.hpp ты не найдешь WriteOutput и все такое. |
|
Я посмотрел и что-то мне уже не хочется переделывать. Реальных координат в ReadOutput/WriteOutput тебе достаточно? |
|
я имел ввиду class console. но если DrKnS переделает на реальные координаты - несущественно. |
|
Да. думаю, с реальными координатами будет норм. |
Date Modified | Username | Field | Change |
---|---|---|---|
2012-03-06 10:14 | Maximus | New Issue | |
2012-03-12 07:17 | 2useven10 | Note Added: 0008737 | |
2012-03-12 07:21 | Maximus | Note Added: 0008738 | |
2012-03-12 07:25 | 2useven10 | Note Edited: 0008737 | View Revisions |
2012-03-12 07:26 | DrKnS | Note Added: 0008739 | |
2012-03-12 07:27 | 2useven10 | Note Added: 0008740 | |
2012-03-12 07:47 | Maximus | Note Added: 0008741 | |
2012-03-12 08:01 | DrKnS | Note Added: 0008742 | |
2012-03-12 08:39 | 2useven10 | Note Added: 0008743 | |
2012-03-12 09:10 | Maximus | Note Added: 0008745 | |
2017-11-02 15:58 | JohnDoe | Tag Attached: WindowMode |