Отловить MouseLeftDoubleClick на окне

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
StillZero
Ветеран
Сообщения: 458
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Поблагодарили: 1 раз
Контактная информация:

Сообщение StillZero »

Здравствуйте.

Существует окно без наличия на нем каких либо контролов.
Необходимо отловить двойное нажатие на нем (если точнее то в клиентской области окна) левой кнопки мыши.
Пробовал через ALERT MouseLeft2 - не работает.
Пробовал сабклассить и отлавливать WM_LBUTTONDBLCLK с установкой доп стиля окну (Prop:ClientHandle) CS_DBLCLKS - не работает.

Вопрос: как отловить двойное нажатие мыши ?

Случай использования очереди WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDOWN, WM_LBUTTONUP + таймер просьба не рассматривать.

Спасибо.

PS
еб...кларион (просьба не флэймить)
Написал: PAA(27)
Аватара пользователя
StillZero
Ветеран
Сообщения: 458
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Поблагодарили: 1 раз
Контактная информация:

Сообщение StillZero »

Вопрос снят. Решен.
Написал: PAA(27)
Гость

Сообщение Гость »

Привет, Всем!

Хм, по идее WM_LBUTTONDBLCLK должно работать. Возможно не то окошко сабклассите. Вообще, в событиях Windows очень помогает ориентироваться утилита MS Spy++ из состава MS Visual Studio. Она имеется на http://www.clarionlife.net Очень рекомендую, многое из событийного управления окон становится понятным.

Удачи!
__________________________________
Владимир Якимченко (IСQ 16 993 194)
Написал: ClaList(2)
Гость

Сообщение Гость »

А не получится положить на окошко регион, а уже с него ловить?
Region# = Create(0,Create:Region)
SetPosition(Region#,0,0,0{Prop:Width},0{Prop:Height})
Region#{Prop:Alrt,255}=MouseLeft2
Unhide(Region#)
Ну и дальше отловить Alert с региона

--
C уважением
Yuri
Адрес:yufil@mail.ru
Написал: ClaList(2)
Гость

Сообщение Гость »

Так устроит?

Код: Выделить всё

clickmouse           PROCEDURE                             ! Declare Procedure
! Start of "Data Section"
! [Priority 4000]
Window WINDOW('Caption'),AT(,,185,92),MDI,SYSTEM,RESIZE,GRAY,FONT('MS Sans Serif',8,,FONT:regular)
       END
! End of "Data Section"
  CODE                                                     ! Begin processed code
! Start of "Processed Code"
! [Priority 4000]
  open(window)
  TARGET{Prop:Alrt,255} = MouseLeft
  TARGET{Prop:Alrt,254} = MouseLeft2
  TARGET{Prop:Alrt,253} = MouseRight
  accept
    case event()
      OF EVENT:AlertKey
      CASE KEYCODE()
      OF MouseLeft
      OROF MouseLeft2
      OROF MouseRight
        POST(Event:CloseWindow)
      END
    end
  end
! End of "Processed Code"
--
Best regards,
Владимир mailto:ut5jbh@ua.fm
Написал: ClaList(2)
Ответить