|
forums.silverfrost.com Welcome to the Silverfrost forums
|
View previous topic :: View next topic |
Author |
Message |
Bartl
Joined: 16 Oct 2009 Posts: 58 Location: München
|
Posted: Tue Apr 13, 2021 5:25 pm Post subject: call back with mouse click |
|
|
Hello, with
%ac[Enter] i can force a call back to „integer*4 function ienter()“
%ac[UP] i can force a call back to „integer*4 function iup()“
a.s.o. (see following code)
Code: |
module mouse_click
character*20 cdata1,cdata2,cdata3
integer*4 ifocus,ncontrol,icontrol(3)
common/focus_control/ifocus,icontrol,cdata1,cdata2,cdata3
end module mouse_click
winapp
program mouse_click_test
use mouse_click
include <windows.ins>
external ienter,iup,idown,iesc,ifw
cdata1 = '11.11'
cdata2 = '22.22'
cdata3 = '33.33'
!i=ifw()
call add_focus_monitor@(ifw)
ncontrol = 3
i=winio@('%ac[Enter]&',ienter)
i=winio@('%ac[UP]&',iup)
i=winio@('%ac[DOWN]&',idown)
i=winio@('%ac[ESC]&',iesc)
i=winio@('%tc[black]%co[right_justify]&')
i=winio@('%co[data_border]&')
!i=winio@('%nl%rs%lc&',cdata1(1:10),icontrol(1))
i=winio@('%nl%rs%lc&',cdata1(1:10),icontrol(1))
i=winio@('%nl%rs%lc&',cdata2(1:10),icontrol(2))
i=winio@('%nl%rs%lc' ,cdata3(1:10),icontrol(3))
call remove_focus_monitor@(ifw)
end
integer*4 function ienter()
use mouse_click
include <windows.ins>
ienter=1
if(ifocus.eq.icontrol(1))call set_highlighted@(icontrol(2))
if(ifocus.eq.icontrol(2))call set_highlighted@(icontrol(3))
if(ifocus.eq.icontrol(3))call set_highlighted@(icontrol(1))
end
integer*4 function iup()
use mouse_click
include <windows.ins>
iup=1
if(ifocus.eq.icontrol(3))call set_highlighted@(icontrol(2))
if(ifocus.eq.icontrol(2))call set_highlighted@(icontrol(1))
end
integer*4 function idown()
use mouse_click
include <windows.ins>
idown=1
if(ifocus.eq.icontrol(1))call set_highlighted@(icontrol(2))
if(ifocus.eq.icontrol(2))call set_highlighted@(icontrol(3))
end
integer*4 function iesc()
use mouse_click
include <windows.ins>
iesc=0
end
integer*4 function ifw()
use mouse_click
include <windows.ins>
ifw=2
ifocus=clearwin_info@('FOCUSSED_WINDOW')
end
|
Is there a possibility to force a call back with a left or right mouse click analogous to %ac[Enter]?
I tried it with a call back to cmouse as shown in following code,
but this didn't work
[code:1:92377ea7de]
module mouse_click
character*20 cdata1,cdata2,cdata3
CHARACTER*256 reason
integer*4 ifocus,ncontrol,icontrol(3)
common/focus_control/ifocus,icontrol,cdata1,cdata2,cdata3,reason
end module mouse_click
winapp
program mouse_click_test
use mouse_click
include <windows.ins>
external ienter,iup,idown,iesc,ifw,cmouse
cdata1 = '11.11'
cdata2 = '22.22'
cdata3 = '33.33'
call add_focus_monitor@(ifw)
ncontrol = 3
i=winio@('%ac[Enter]&',ienter)
i=winio@('%ac[UP]&',iup)
i=winio@('%ac[DOWN]&',idown)
i=winio@('%ac[ESC]&',iesc)
i=winio@('%tc[black]%co[right_justify]&')
i=winio@('%co[data_border]&')
i=winio@('%nl%^rs%lc&',cdata1(1:10),cmouse,icontrol(1))
i=winio@('%nl%rs%lc&',cdata2(1:10),icontrol(2))
i=winio@('%nl%rs%lc' ,cdata3(1:10),icontrol(3))
call remove_focus_monitor@(ifw)
end
integer*4 function ienter()
use mouse_click
include <windows.ins>
ienter=1
if(ifocus.eq.icontrol(1))call set_highlighted@(icontrol(2))
if(ifocus.eq.icontrol(2))call set_highlighted@(icontrol |
|
Back to top |
|
|
DanRRight
Joined: 10 Mar 2008 Posts: 2816 Location: South Pole, Antarctica
|
Posted: Wed Apr 14, 2021 6:33 am Post subject: |
|
|
Code did not fit into way too limited space of each post. Try to cut it and post continuation in the following post post |
|
Back to top |
|
|
Bartl
Joined: 16 Oct 2009 Posts: 58 Location: München
|
Posted: Wed Apr 14, 2021 9:03 am Post subject: |
|
|
sorry, here is the second code again
Code: |
module mouse_click
character*20 cdata1,cdata2,cdata3
CHARACTER*256 reason
integer*4 ifocus,ncontrol,icontrol(3)
common/focus_control/ifocus,icontrol,cdata1,cdata2,cdata3,reason
end module mouse_click
winapp
program mouse_click_test
use mouse_click
include <windows.ins>
external ienter,iup,idown,iesc,ifw,cmouse
cdata1 = '11.11'
cdata2 = '22.22'
cdata3 = '33.33'
call add_focus_monitor@(ifw)
ncontrol = 3
i=winio@('%ac[Enter]&',ienter)
i=winio@('%ac[UP]&',iup)
i=winio@('%ac[DOWN]&',idown)
i=winio@('%ac[ESC]&',iesc)
i=winio@('%tc[black]%co[right_justify]&')
i=winio@('%co[data_border]&')
i=winio@('%nl%^rs%lc&',cdata1(1:10),cmouse,icontrol(1))
i=winio@('%nl%rs%lc&',cdata2(1:10),icontrol(2))
i=winio@('%nl%rs%lc' ,cdata3(1:10),icontrol(3))
call remove_focus_monitor@(ifw)
end
integer*4 function ienter()
use mouse_click
include <windows.ins>
ienter=1
if(ifocus.eq.icontrol(1))call set_highlighted@(icontrol(2))
if(ifocus.eq.icontrol(2))call set_highlighted@(icontrol(3))
if(ifocus.eq.icontrol(3))call set_highlighted@(icontrol(1))
end
integer*4 function iup()
use mouse_click
include <windows.ins>
iup=1
if(ifocus.eq.icontrol(3))call set_highlighted@(icontrol(2))
if(ifocus.eq.icontrol(2))call set_highlighted@(icontrol(1))
end
integer*4 function idown()
use mouse_click
include <windows.ins>
idown=1
if(ifocus.eq.icontrol(1))call set_highlighted@(icontrol(2))
if(ifocus.eq.icontrol(2))call set_highlighted@(icontrol(3))
end
integer*4 function iesc()
use mouse_click
include <windows.ins>
iesc=0
end
integer*4 function ifw()
use mouse_click
include <windows.ins>
ifw=2
ifocus=clearwin_info@('FOCUSSED_WINDOW')
end
integer*4 function cmouse()
use mouse_click
include <windows.ins>
cmouse=1
write(*,*)"Einsprung in function cmouse"
REASON=clearwin_string@('CALLBACK_REASON')
write(*,*)"Einsprung bei linker Maustaste,reason =", reason
end |
|
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7925 Location: Salford, UK
|
Posted: Thu Apr 15, 2021 2:16 pm Post subject: |
|
|
You can use...
Code: | i=winio@('%mg&', WM_LBUTTONDOWN, cmouse)
|
but this only works when clicking on the "client" area, not when you click inside one of the integer edit boxes.
cmouse should return the value 2.
To get it to work within an edit box would probably be much more difficult. |
|
Back to top |
|
|
Bartl
Joined: 16 Oct 2009 Posts: 58 Location: München
|
Posted: Fri Apr 16, 2021 8:37 am Post subject: |
|
|
That's a shame, maybe I'll try it with %eb when I have time.
Thank you very much for the quick help. |
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7925 Location: Salford, UK
|
Posted: Fri Apr 16, 2021 10:36 am Post subject: |
|
|
Bartl
Your edit boxes are in fact %rs edit boxes and not %rd edit boxes as I implied above.
I was not suggesting that you try %eb edit boxes.
%rs uses a Microsoft edit control and in theory you can interact with it directly but it would take me some time to work out how to do it from a ClearWin+ program.
The standard way to move from one control to another is to use the TAB key or Ctrl+TAB (if I remember correctly) for going backwards. |
|
Back to top |
|
|
Bartl
Joined: 16 Oct 2009 Posts: 58 Location: München
|
Posted: Fri Apr 16, 2021 6:50 pm Post subject: |
|
|
Paul,
Thank you for the information.
I thought you meant the% eb function.
I'm going to consider using the% rd function instead of% rs.
My current solution with the% rs function actually works very well. I just wanted to find a way to achieve the same effect with the mouse button as with the ENTER, UP or DOWN button.
But it is not a problem if there is no corresponding possibility.
Thanks again. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|