Переключение на Главную Страницу Страницы: 1 [2] 3 4 5 ОтправитьПечать
Очень популярная тема (более 25 ответов) Как определить, что кликнули на пустом месте? (число прочтений - 17504 )
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Как определить, что кликнули на пустом месте?
Ответ #15 - 12. Сентября 2013 :: 08:29
Печать  
alyuev писал(а) 12. Сентября 2013 :: 08:14:
Стрелкой показал на скриншоте


Понятно, это MDI окно.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как определить, что кликнули на пустом месте?
Ответ #16 - 12. Сентября 2013 :: 09:00
Печать  
стрелка показывает на MDIClient
но не все окна процесса являются дочерними к MDIClient
поэтому скрипт из топика на Мисте не решает твоей задачи в полной мере
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как определить, что кликнули на пустом месте?
Ответ #17 - 12. Сентября 2013 :: 09:08
Печать  
но можно попробовать так:
получить hwnd MDIClient - это в примере есть
и получить hwnd WindowFromPhysicalPoint, если DynamicWrapper позволяет передавать структуры в качестве параметров
и сравнить
  

1&&2&&3
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Как определить, что кликнули на пустом месте?
Ответ #18 - 12. Сентября 2013 :: 11:31
Печать  
trad писал(а) 12. Сентября 2013 :: 09:08:
если DynamicWrapper позволяет передавать структуры в качестве параметров


Может.

  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как определить, что кликнули на пустом месте?
Ответ #19 - 12. Сентября 2013 :: 12:39
Печать  
chessman писал(а) 12. Сентября 2013 :: 11:31:
trad писал(а) 12. Сентября 2013 :: 09:08:
если DynamicWrapper позволяет передавать структуры в качестве параметров


Может.


в двух словах, как ?
тут http://www.script-coding.com/dynwrapx.html#inparams не нашел
  

1&&2&&3
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Как определить, что кликнули на пустом месте?
Ответ #20 - 12. Сентября 2013 :: 13:03
Печать  
1. Выделяешь память под структуру. Во всех примерах народ пользуется внутренней ф-й Space/StrPtr. Я использую системные HeapAlloc/HeapFree. В общем дело вкуса.
2. Заполняешь структуру. DWX имеет прямой доступ к памяти (NumPut).
3. Передаешь в ф-ю указатель на структуру.

  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как определить, что кликнули на пустом месте?
Ответ #21 - 12. Сентября 2013 :: 13:45
Печать  
это передача указателя, а если структура в функцию передается непосредственно через стек, как POINT в WindowFromPhysicalPoint, тоже сработает?
  

1&&2&&3
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Как определить, что кликнули на пустом месте?
Ответ #22 - 12. Сентября 2013 :: 14:08
Печать  
trad писал(а) 12. Сентября 2013 :: 13:45:
это передача указателя, а если структура в функцию передается непосредственно через стек, как POINT в WindowFromPhysicalPoint, тоже сработает?


Там все параметры передаются через стэк.
Чтоб передать через ECX нужно написать бинарную вставку.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как определить, что кликнули на пустом месте?
Ответ #23 - 12. Сентября 2013 :: 15:43
Печать  
понятно что через стек, но ты предлагаешь передать через стек указатель на структуру, тогда как я говорю про передачу структуры через стек
  

1&&2&&3
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Как определить, что кликнули на пустом месте?
Ответ #24 - 12. Сентября 2013 :: 19:58
Печать  
trad писал(а) 12. Сентября 2013 :: 15:43:
понятно что через стек, но ты предлагаешь передать через стек указатель на структуру, тогда как я говорю про передачу структуры через стек

Просто описываешь столько параметров у ф-и, сколько DWORD'ов в структуре. В данном случае 2 параметра.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как определить, что кликнули на пустом месте?
Ответ #25 - 13. Сентября 2013 :: 04:57
Печать  
понятно. хитро Улыбка
  

1&&2&&3
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Как определить, что кликнули на пустом месте?
Ответ #26 - 13. Сентября 2013 :: 05:59
Печать  
trad писал(а) 13. Сентября 2013 :: 04:57:
понятно. хитро Улыбка


Я ни разу так не делал Улыбка, но должно работать.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Как определить, что кликнули на пустом месте?
Ответ #27 - 13. Сентября 2013 :: 07:31
Печать  
Небольшой класс для определения класса окна под мышкой.
  

DWX_HitTest.zip ( 2 KB | Загрузки )
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 854
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Как определить, что кликнули на пустом месте?
Ответ #28 - 13. Сентября 2013 :: 08:58
Печать  
Спасибо! Это то, что нужно! А именно ПолучитьКлассОкна="MDIClient"!
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 854
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Как определить, что кликнули на пустом месте?
Ответ #29 - 23. Сентября 2013 :: 09:07
Печать  
На одной из машин, на которой Win Serv 2003 класс выдает такую ошибку:

"КлассОкна=класс.ПолучитьКлассОкна();
{Глобальный модуль(63404)}: DWX.ClickOnWindow::ПолучитьКлассОкна() : Microsoft VBScript runtime error: Object doesn't support this property or method: 'Wrap.GetCursorPos'
Возврат ScrptCtrl.Run("GetClassName");
{D:\copy\CopyAC\ACIni\Classes\Systems\DWX.ClickOnWindow.ert(83) }"

С чем бы это могло быть связано?
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 5
ОтправитьПечать