Как прорисовать неактивное окно?
Как прорисовать неактивное окно?
Возникла задача перерисовать неактивное окно редактора, которое торчит из-под окна viewer в http://forum.farmanager.com/viewtopic.php?f=4&t=9613
Я знаю его (редактора) ID. Почитав энциклопедию, уверился, что editor.Redraw(ID) должно сработать, однако не работает. Нашёл способ с помощью far.AdvControl сделать активным нужное окно, тогда оно само прорисовывается. Тем не менее, некоторая неудовлетворённость осталась, в связи с чем возникли два вопроса:
1. Если editor.Redraw не перерисовывает неактивное окно, то зачем вообще нужен вызов этой функции с указанием ID?
2. Есть ли способ прорисовать окно, не делая его активным?
Я знаю его (редактора) ID. Почитав энциклопедию, уверился, что editor.Redraw(ID) должно сработать, однако не работает. Нашёл способ с помощью far.AdvControl сделать активным нужное окно, тогда оно само прорисовывается. Тем не менее, некоторая неудовлетворённость осталась, в связи с чем возникли два вопроса:
1. Если editor.Redraw не перерисовывает неактивное окно, то зачем вообще нужен вызов этой функции с указанием ID?
2. Есть ли способ прорисовать окно, не делая его активным?
Как прорисовать неактивное окно?
Спасибо, но ACTL_REDRAWALL не помогло.
Я понимаю так:
1. были панели;
2. запустили редактор - его окно нарисовалось поверх окна с панелями;
3. запустили просмотрщик в сдвинутом окне - из под его окна торчит часть окна редактора;
4. по F11 снова сделали активными панели - их окно нарисовалось поверх;
5. по F11 переключились в просмотрщик - он нарисовался, но из-под него торчит не редактор, а панели.
Если я все окна перерисую, они не изменят своего порядка наложения. Мне нужно именно вытащить наверх окно редактора. ACTL_SETCURRENTWINDOW это делает, но попутно делает окно активным. В данном случае это не так страшно, но если я попробую так-же действовать в случае двух редакторов, то придётся озаботиться тем, чтобы не зациклился обработчик события EE_GOTFOCUS. А хотелось этого избежать.
Я понимаю так:
1. были панели;
2. запустили редактор - его окно нарисовалось поверх окна с панелями;
3. запустили просмотрщик в сдвинутом окне - из под его окна торчит часть окна редактора;
4. по F11 снова сделали активными панели - их окно нарисовалось поверх;
5. по F11 переключились в просмотрщик - он нарисовался, но из-под него торчит не редактор, а панели.
Если я все окна перерисую, они не изменят своего порядка наложения. Мне нужно именно вытащить наверх окно редактора. ACTL_SETCURRENTWINDOW это делает, но попутно делает окно активным. В данном случае это не так страшно, но если я попробую так-же действовать в случае двух редакторов, то придётся озаботиться тем, чтобы не зациклился обработчик события EE_GOTFOCUS. А хотелось этого избежать.
Как прорисовать неактивное окно?
Насчёт минимального не знаю, а вот работающий, вроде, вариант (приложен).
Вместо кода, выделенного комментариями НАЧАЛО - КОНЕЦ, хотелось просто вызвать
editor.Redraw(EID), или что-нибудь простое другое.
Вместо кода, выделенного комментариями НАЧАЛО - КОНЕЦ, хотелось просто вызвать
editor.Redraw(EID), или что-нибудь простое другое.
- Attachments
-
- view2.lua.7z
- (842 Bytes) Downloaded 67 times
Как прорисовать неактивное окно?
Ещё вопрос в догонку. Почему при CtrlO не приходит событие GOTFOCUS? Ну или, если приходит, то почему у меня не работает перерисовка?
Как прорисовать неактивное окно?
Может я неправильно понял, но если я заменяю код между НАЧАЛО - КОНЕЦ на editor.Redraw(EID)
far.AdvControl(F.ACTL_COMMIT), у меня (на 4386 х86) перерисовки не происходит.
far.AdvControl(F.ACTL_COMMIT), у меня (на 4386 х86) перерисовки не происходит.
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Как прорисовать неактивное окно?
я открыл просмотр, переключился в панели, переключился в панели, обратно в просмотр, редактор перерисовался. без коммита слева виден кусок панелей.
Как прорисовать неактивное окно?
Аналогично. Win7 Ult Ru, Far 3.0.4394 x86.iva wrote:заменяю код между НАЧАЛО - КОНЕЦ на editor.Redraw(EID) far.AdvControl(F.ACTL_COMMIT) ... перерисовки не происходит.
В ходе теста последовательно загружены сабжевым макросом 4 файла. И затем они последовательно сбрасывались эскейпом.
Привожу и архив с этими и другими получившимися снимками экрана.
- Attachments
-
- test61.7z
- (841.75 KiB) Downloaded 50 times
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Как прорисовать неактивное окно?
на ACTL_COMMIT это у меня с каким-то макросом/плагином интерференция. на чистом фаре не помогает. на самом деле редактор перерисовывается, но он расположен под панелями, поэтому его не видно.