Форум » GUI » Как отловить (и обработать) клик правой кнопки? » Ответить

Как отловить (и обработать) клик правой кнопки?

SADSTAR2: Задача. Есть объект DEFINE IMAGE ... [ ACTION |<ActionProcedureName> | <bBlock> ] ... END IMAGE в котором есть реакция на нажатие левой кнопки. А как сделать аналогичное действие для правой?

Ответов - 6

valery2: SADSTAR2 пишет: А как сделать аналогичное действие для правой? На форуме это уже обсуждалось. Нужно организовать ф-ю МуЕvents и вставить : ....... ....... elseif GetNotifyCode ( lParam ) == NM_RCLICK i := Ascan( _HMG_aFormHandles , hWnd ) cFormName := if( i > 0, _HMG_aFormNames[ i ], "" ) i := Ascan( _HMG_aControlHandles, GetHwndFrom( lParam ) ) cControlName := if( i > 0, _HMG_aControlNames[ i ], "" ) if cFormName == "MyWin" .and. cControlName == "MyControl" result:= MyResult() else result:= Events ( hWnd, nMsg, wParam, lParam ) endif ......... .........

fil: oIm:bRClicked:={||MyFunction()}

SADSTAR2: fil пишет: oIm:bRClicked:={||MyFunction()} Это что за объект? Из какой оперы? valery2 пишет: На форуме это уже обсуждалось. Нужно организовать ф-ю МуЕvents и вставить : ....... ....... elseif GetNotifyCode ( lParam ) == NM_RCLICK i := Ascan( _HMG_aFormHandles , hWnd ) cFormName := if( i > 0, _HMG_aFormNames[ i ], "" ) i := Ascan( _HMG_aControlHandles, GetHwndFrom( lParam ) ) cControlName := if( i > 0, _HMG_aControlNames[ i ], "" ) if cFormName == "MyWin" .and. cControlName == "MyControl" result:= MyResult() else result:= Events ( hWnd, nMsg, wParam, lParam ) endif ......... ......... Поискал в форуме, в примерах миниГУИ54, в Хелпе. Описания действия функции MyEvents и ее параметров не нашел. Списка кодов событий тоже.


valery2: #define WM_NOTIFY 78 #define NM_CLICK (-2) #define NM_RCLICK (-5) #define LVN_BEGINDRAG (-109) SET EVENTS FUNCTION TO MYEVENTS ............. ............, ............. Function MyEvents ( hWnd, nMsg, wParam, lParam ) Local i, x, cFormName := "", cControlName := "" , result:=0 if nMsg == WM_NOTIFY if GetNotifyCode ( lParam ) == NM_RCLICK i := Ascan( _HMG_aFormHandles , hWnd ) cFormName := if( i > 0, _HMG_aFormNames[ i ], "" ) i := Ascan( _HMG_aControlHandles, GetHwndFrom( lParam ) ) cControlName := if( i > 0, _HMG_aControlNames[ i ], "" ) if cFormName == "MyWin" .and. cControlName == "MyControl" result:= MyFunc() else result:= Events ( hWnd, nMsg, wParam, lParam ) endif else result:= Events ( hWnd, nMsg, wParam, lParam ) endif else result:= Events ( hWnd, nMsg, wParam, lParam ) endif Return result

SADSTAR2: я сделал так FUNCTION MyEvent1( hWnd, nMsg, wParam, lParam ) LOCAL result := 0, nm, nC, nR, mC:=int(lParam%65536), mR:=int(lParam/65536) do case case nMsg == WM_LBUTTONDOWN //----------------------------------------------------------- ... case nMsg == WM_LBUTTONUP //----------------------------------------------------------- ... case nMsg == WM_RBUTTONDOWN //----------------------------------------------------------- ... case nMsg == WM_RBUTTONUP //----------------------------------------------------------- ... case nMsg == WM_MOUSEMOVE //----------------------------------------------------------- ... OTHERWISE Result := Events( hWnd, nMsg, wParam, lParam ) endcase RETURN result

valery2: SADSTAR2 пишет: Есть объект SADSTAR2 пишет: я сделал так Так нужно - где угодно, или только там, где объект? !!! Почувствуй разницу.



полная версия страницы