Click here to Skip to main content
15,913,250 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
In the C # windows forms application, how to use the mouse hook to capture mouse scroll wheel to control the googleearth zoom in and out ? Thank you, eh.
Posted

1 solution

Why do you think you need a Hook? You just need to handle the event System.Windows.Forms.Control.OnMouseWheel:

C#
MyControl.OnMouseWheel += (sender, eventArgs) => {
    GoogleEarth.ZoomBy(eventArgs.Delta); //or whatever you do for zoom, see below
}


I see you also want to use C# v.2. In this case, the lambda form will not work. You need to use older syntax:

C#
using System.Windows.Forms; 

//...

MyControl.OnMouseWheel += delegate(object sender, MouseEventArgs eventArgs) {
    GoogleEarth.ZoomBy(eventArgs.Delta); //or whatever you do for zoom, see below
}


In this form you need explicit declaration of the delegate arguments as the type inference was not yet introduced in C# v.2.

The property Delta here gets a signed value of the wheel rotation which caused the event. For more detail, please see:
http://msdn.microsoft.com/en-us/library/system.windows.forms.mouseeventargs.aspx[^].

—SA
 
Share this answer
 
v4
Comments
Kim Togo 22-May-11 2:58am    
Good answer SA. My 5.
Sergey Alexandrovich Kryukov 22-May-11 3:04am    
Thank you, Kim.
--SA
George Hendrickson 26-Apr-12 12:59pm    
How do you capture the mouse wheel while holding down the CTRL key?
Sergey Alexandrovich Kryukov 26-Apr-12 14:52pm    
Capture the key separately using Form.KeyDown Form.KeyUp events and remember the status of this key. The form should have Form.KeyPreview = true;
--SA

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900