Page 24 of 96
Posted: Wed Mar 14, 2012 2:25 pm
by Infocatcher
Instructor
Это я знаю, но тут сразу два неудобства: и файлы надо заново глазами искать, и для не соседних неудобно, что надо еще и Ctrl зажимать – уже две руки нужны.
Плюс сначала надо хоткей жать (пункт меню же скрыт, пока мало документов), а потом мышкой орудовать.
Вообще, тут неплохо бы опцию, чтобы всегда показывать этот пункт.

Posted: Wed Mar 14, 2012 8:23 pm
by DV
И опять
RunMe.js. На этот раз при работе с Log::Output из запускаемой команды автоматически убирается "|| pause" в конце. Также в run_cpp() добавлено WScript.Sleep(2000) как временное решение проблемы с переменными окружения, упомянутой в форуме плагина Log.
Posted: Thu Mar 15, 2012 8:13 am
by Infocatcher
Так есть возможность подписаться на событие переключения вкладки?
Или надо тупо периодически проверять, не изменилась ли текущая вкладка?
Posted: Thu Mar 15, 2012 9:16 am
by Instructor
Infocatcher
Code: Select all
var hMainWnd=AkelPad.GetMainWnd();
var oSys=AkelPad.SystemFunction();
if (AkelPad.WindowSubClass(hMainWnd, MainCallback, 0x416 /*AKDN_FRAME_ACTIVATE*/))
{
//Message loop
AkelPad.WindowGetMessage();
AkelPad.WindowUnsubClass(hMainWnd);
}
function MainCallback(hWnd, uMsg, wParam, lParam)
{
if (uMsg == 0x416 /*AKDN_FRAME_ACTIVATE*/)
{
AkelPad.MessageBox(0, "AKDN_FRAME_ACTIVATE", WScript.ScriptName, 0);
//Exit message loop
oSys.Call("user32::PostQuitMessage", 0);
}
}
Posted: Thu Mar 15, 2012 4:14 pm
by Infocatcher
Instructor wrote:Code: Select all
...
if (AkelPad.WindowSubClass(hMainWnd, MainCallback, 0x416 /*AKDN_FRAME_ACTIVATE*/))
...
Спасибо.
Я правильно понимаю, что для перемещения произвольных MDI-окон надо воспроизвести нечто вроде void ArrangeListBoxSelItems(HWND hWnd, int nBar) из Edit.c? То есть получить указатели на сами окна и переместить их вручную?
Теперь бы придумать, куда вывести сообщение «выберите вкладку».

А то, вроде, и надо бы, а модальных сообщений видеть не хочется.
[Upd]
И если да, то как заполучить hMdiClient?
А то в коде он создается, так что получения там нигде нету, как я понимаю.
Posted: Thu Mar 15, 2012 4:23 pm
by VladSh
Infocatcher wrote:Теперь бы придумать, куда вывести сообщение «выберите вкладку».

А то, вроде, и надо бы, а модальных сообщений видеть не хочется.
Где-то тут был пример, как в статусбар писать

Posted: Thu Mar 15, 2012 5:23 pm
by Instructor
Infocatcher
Да, примерно как в ArrangeListBoxSelItems.
И если да, то как заполучить hMdiClient?
Code: Select all
hMdiClient=AkelPad.SendMessage(hMainWnd, 1222 /*AKD_GETMAININFO*/, 12 /*MI_WNDMDICLIENT*/, 0);
Posted: Fri Mar 16, 2012 5:14 am
by Infocatcher
Так, едем дальше.

Есть простой способ получить lpFrame->hWndEditParent ?
А то там какие-то рекурсивные ужасы:
Code: Select all
typedef struct _FRAMEDATA {
struct _FRAMEDATA *next;
struct _FRAMEDATA *prev;
//Edit state external
HWND hWndEditParent; //Edit parent window.
...
Пока только с lpFrame хоть понятно:
Code: Select all
var lpFrame = AkelPad.SendMessage(hMainWnd, 1288 /*AKD_FRAMEFIND*/, 1 /*FWF_CURRENT*/, 0)
Posted: Fri Mar 16, 2012 6:20 am
by Fr0sT
Infocatcher
так это не рекурсия, а просто двусвязный список
Posted: Fri Mar 16, 2012 1:55 pm
by Instructor
Infocatcher wrote:Есть простой способ получить lpFrame->hWndEditParent ?
Code: Select all
hWndEditParent=AkelPad.SendMessage(hMainWnd, 1223 /*AKD_GETFRAMEINFO*/, 1 /*FI_WNDEDITPARENT*/, lpFrame);
Posted: Fri Mar 16, 2012 10:14 pm
by KDJ
FileAndStream.js
Added:
- view file in external viewer (F3),
- set external viewer (Ctrl+Shift+F3) - eg. UniversalViewer,
- edit file in external editor (Ctrl+F4),
- set external editor (Ctrl+Shift+F4),
- compare files in external comparer (F12),
- set external comparer (Ctrl+Shift+F12) - eg. WinMerge.
Posted: Sat Mar 17, 2012 12:58 pm
by KDJ
Posted: Sat Mar 17, 2012 5:07 pm
by Infocatcher
Instructor wrote:Да, примерно как в ArrangeListBoxSelItems.
Пытаюсь сделать аналог
Code: Select all
if (GetWindowLongPtrWide(lpFrame->hWndEditParent, GWL_STYLE) & WS_MAXIMIZE)
SendMessage(hMdiClient, WM_MDIRESTORE, (WPARAM)lpFrame->hWndEditParent, 0);
Но все время 0:
Code: Select all
var lpFrame = AkelPad.SendMessage(hMainWnd, 1288 /*AKD_FRAMEFIND*/, 1 /*FWF_CURRENT*/, 0);
var hWndMdi = AkelPad.SendMessage(hMainWnd, 1223 /*AKD_GETFRAMEINFO*/, 1 /*FI_WNDEDITPARENT*/, lpFrame);
WScript.Echo("" + oSys.Call("user32::GetWindowLongPtr" + _TCHAR, hWndMdi, -16 /*GWL_STYLE*/));
Posted: Sat Mar 17, 2012 5:45 pm
by Instructor
Posted: Sat Mar 17, 2012 7:28 pm
by Infocatcher
Instructor
Спасибо, заработало:
tileTabs.js