Здравствуйте,
>> let X = GetCursorPos ()
>> let Y = GetCursorCol ()
> Это будет работать, если только при
Это не будет работать ни при каких условиях. Я по невниманию допустил
ляп.Должно быть так:
let x = getCursorCol ()
let y = getCursorRow ()
манипуляциях с PC-курсором не происходит
[...совершенно верные замечания поскипаны...]
> позицию, пользователь обнаружит не ту строку таблицы, в которой он
> запустил скрипт.
Совершенно верно. Но я же не могу Ивану предложить использовать функцию
SendMessage, правильно? Это конечно не полноценное, но часто срабатывающее
решение.
> Насколько я помню, в Total Commander не
> listWview, но ситуация с прокруткой списка файлов и папок похожая. Цитирую
> техзадание:
Там вообще непонятно что. Насколько я понял из объяснений Олега Кутищева в
рассылке, там используется VCL от Борланда. Похоже, что этот класс построен
на основе listbox, но полной уверенности у меня нет, а проверять неохота,
поскольку я не пользуюсь Тоталом.
> Кроме того (в более общей ситуации), поскольку функции GetCursorCol/Row
> возвращают
> экранные координаты, то если скрипт перемещает
> или меняет состояние окна приложения, то пользователь может и не понять,
> куда
> это его занесло после выполнения скрипта.
Вообще в более общей ситуации необходимо делать примерно так:
handle hwnd,
int pos
[...здесь что-то делаем...]
let hwnd = GetCurrentWindow ()
let pos = SendMessage (hwnd, LB_GETCURSEL, 0, 0)
; здесь делаем что нам необходимо.
SendMessage (hwnd, LB_SETCURSEL, Pos, 0)
Это более корректный вариант. Значения сообщений можно посмотреть, например
в winuser.h.
До свидания.
***
Это сообщение No3879
было разослано для 306 участников дискуссионного листа
[JFWRus] Re[3]: Не срабатывает скрипт.