1 (изменено: Ottiwell_Wood, 2011-05-03 19:39:09)

Тема: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Кто нибудь, подскажите пожалуйста, как узнать координаты окна(х и у). Я просто не знаю где искать.

2

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Если я правильно понял, Вам нужны window.screenLeft и window.screenTop

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

3

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Да,Xameleon, спасибо, это оно.
А вы случайно не подскажете обработчик события перетаскивания окна?

4

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Т.к JS-ом владею плохо, сваял пример на VBS. Как такового события не нашёл, поэтому сделал по таймеру.


<html>
    <body>
        <script language=vbscript>
            Dim x,y
            setInterval "CheckWindowPos",10
            x = window.screenLeft
            y = window.screenTop
            
            Sub CheckWindowPos()
                if x <> window.screenLeft or y <> window.screenTop Then
                    x = window.screenLeft
                    y = window.screenTop
                    window_onmove()
                End if
            End Sub
            
            Sub window_onmove()
               document.body.innerText = x & " / " & y
            End Sub
        </script>
    </body>
</html>
Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

5

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Ottiwell_Wood пишет:

... обработчик события перетаскивания окна?

Такого не существует в клиентских (подчеркиваю это) JScript/VBScript. Идея коллеги Xameleon - периодически проверять текущее положение окна и сравнивать с предыдущим - прекрасно справляется с Вашей проблемой. Ниже - вариант на JScript. Если не обращать внимание на разную интерпретацию используемых параметров, то можно считать этот скрипт применимым для большинства популярных браузеров.

<html>
<head>
<script type="text/javascript">

window.onload = function()
{
    var x;
    var y;

    setInterval(function()
    {
        var i = window.screenX || window.screenLeft;
        var j = window.screenY || window.screenTop;

        if ( x == i && y == j ) {
            return;
        }

        x = i;
        y = j;

        document.title = document.body.innerHTML = x + ' / ' + y;
    }, 10);
};

</script>
</head>
<body style="margin: 50px; text-align: center;">
</body>
</html>
( 2 * b ) || ! ( 2 * b )

6

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Спасибо.
Но проблема вот в чём: мне нужно "прилепить" к верхнему левому краю окна HTA LangMF-форму. На этой форме кнопка особой формы, представленная в виде gif-изображения.

7

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Ottiwell_Wood пишет:

... нужно "прилепить" к верхнему левому краю окна HTA LangMF-форму. На этой форме кнопка особой формы, представленная в виде gif-изображения.

Ничего не понятно. Что значит "прилепить" и что это такое - "LangMF-форма"? Переформулируйте свои вопросы яснее.

Если я правильно понял термин "прилепливание к краю", то это задается стилевыми правилами - например, позиционирование (position), отбивка (margin, padding). "Особый" вид кнопки и любого другого htnl-элемента определяется опять же стилевыми правилами - background-image.

( 2 * b ) || ! ( 2 * b )

8

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Извините за путаницу.
LangMF - это скриптовый язык программирования. Похож на Visual Basic (соответственно на VBScript).
LangMf-форма - это отдельное окно. В моём случае - это окно без заголовка и всего лишь с одной кнопкой, похожей на кнопку главного меню MS Office 2007. "Прилепить" мне эту кнопку нужно к верхнему левому краю окна HTA, как это показано на рисунке.
http://forum.atombyte.com/files/forms_187.png
А вот сама LangMF-форма.

9 (изменено: Ottiwell_Wood, 2011-05-03 19:44:58)

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Кстати про обработчик события.
Теперь он есть .

<html>
<head>
<script type="text/javascript">
    var x;
    var y;

    setInterval(function()
    {
        var i = window.screenX || window.screenLeft;
        var j = window.screenY || window.screenTop;

        if ( x == i && y == j ) {
            return;
        }
else{if(window.onMove){window.onMove()}}

        x = i;
        y = j;

        document.title = document.body.innerHTML = x + ' / ' + y;
    }, 10);

</script>
</head>
<body style="margin: 50px; text-align: center;">
</body>
</html>

10

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Понятно. Стандартными средствами этого добиться нельзя. Можно эмулировать, но только внутри документа - средствами html, css, jscript (vbscript). Элементы оконного интерфейса - системные, они не доступны.

Кстати про обработчик события.
Теперь он есть

Ну тогда гораздо проще:


window.onmove = function()
{
        var x = window.screenX || window.screenLeft;
        var y = window.screenY || window.screenTop;
  
        document.title = document.body.innerHTML = x + ' / ' + y;
};
( 2 * b ) || ! ( 2 * b )

11

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Rumata пишет:

Ну тогда гораздо проще:


window.onmove = function()
{
        var x = window.screenX || window.screenLeft;
        var y = window.screenY || window.screenTop;
  
        document.title = document.body.innerHTML = x + ' / ' + y;
};

Такой метод не подходит, потому что onmove - не сам обработчик события, а только функция, вызываемая обработчиком!

12

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Ottiwell_Wood пишет:

onmove - не сам обработчик события, а только функция, вызываемая обработчиком!

Ну что же Вы морочите голову людям. Я обнадежился, подумал, что я что-то упустил, и поверил в существование такого обработчика. Это не обработчик - а просто обычная функция.

else{if(window.onMove){window.onMove()}}

Лишено смысла, так как там уже стоит return - выход из функции. Просто замените код после проверки и до конца функции чем-то своим, да хоть вызовом внешней функции:

...
    setInterval(function()
    {
        var i = window.screenX || window.screenLeft;
        var j = window.screenY || window.screenTop;
 
        if ( x == i && y == j ) {
            return;
        }

        // Здесь должен быть код, написанный Вами

    }, 10);
( 2 * b ) || ! ( 2 * b )

13

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Ottiwell_Wood, а зачем лепить LangMF-форму к HTA?

14

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Rumata, вы не так поняли. Именно эта простая функция и есть обработчиком события и именно она вызывает window.onmove.
JSMan, прочитайте пожалуйста посты #6 и #8

15

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Ottiwell_Wood, то что некоторая функция называется onXXX еще не значит, что она является обработчиком события XXX. То что Вы называете обработчиком события является простой функцией, которая вызывается из таймера через определенные интервалы времени.
Грубо говоря, обработчик события - это функция, которая выполняет определенные действия в момент возникновения события. Чтобы обработчик начал выполнять заданные действия, его необходимо создать или зарегистрировать. Событие XXX создается с помощью следующей команды:


объект.onXXX = function() 
...

Объявление функции window.onmove не приведет к созданию обработчика события move - перемещение окна браузера. Также Вы не сможете зарегистрировать обработчик события move и с помощью следующей конструкции:


window.attachEvent('onmove', function()
...

Пример - и мой и Xameleon - обходное решение. В данном случае для эмуляции несуществующего события.

( 2 * b ) || ! ( 2 * b )

16

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Вариант из поста #11 не подходит из-за того, что эта функция ни чем не будет вызываться. Мой вариант подходит из-за того, что он выполняет функцию, описанную в window.onmove.

17

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Вариант из поста #12 корректнее.

( 2 * b ) || ! ( 2 * b )

18

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Да, но тогда приходится дописывать код в конце "обработчика". Кстати про второй пример из поста #15: его можно реализовать с помощью функции типа window.FireEvent('move');?

19

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Нет. Проверьте.


alert(document.fireEvent);

приходится дописывать код в конце "обработчика"

Ну так допишите )))


...
    setInterval(function()
    {
        var i = window.screenX || window.screenLeft;
        var j = window.screenY || window.screenTop;
 
        if ( x == i && y == j ) {
            return;
        }
 
        onmove();
 
    }, 10);
( 2 * b ) || ! ( 2 * b )

20

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Нет.

A если через WSC?

21

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

2 Ottiwell_Wood: ИМХО, Rumata и я уже дали Вам понятный ответ на Ваш вопрос. Rumata так и вообще "разжевал" Вам всё до мелочей. Если что то в коде не устраивает, изложите пожалуйста подробнее. Желательно одним постом.

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

22

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Хотелось бы зарегистрировать обработчик события.

23

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Предполагаю, что не получится, т.к самого события нет.

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

24

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Понятно. Спасибо большое.

25

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

Ottiwell_Wood, я понимаю, что вы хотите прилепить. Но я спрашиваю: зачем? Так как можно прилепить круглую кнопку путем использования HTML. Что касается перемещения окна, то тут можно использовать два способа: первый - встроенный (как описали выше), второй - использовать другие языки программирования для клика возвращать HT_CAPTION.

26

Re: HTA, Javascript,LangMF: координаты окна. Прикрепление сторонней формы.

А можно поподробней?