Changing the Mouse Cursor

Programming example that illustrates how to change IC Imaging Control's mouse cursor.

Language:.NET C#/Visual Basic
Version:3.3
Released:20070705

Author:IC Imaging Control Support Department

Requirements:
Software:IC Imaging Control 3.3, Visual Studio™ 2010
Hardware:Camera, converter or grabber with WDM Stream Class drivers.
Download C# sampleCursor on IC window - C#
Download VB.NET sampleCursor on IC window - VB.NET

This sample shows how to change the mouse cursor in IC Imaging Control. The window of the resulting application looks as follows:

IC Imaging Control with new cursor

In order to change the mouse cursor in IC Imaging Control, an extra DLL needs to be used. The DLL icsetcursor.dll exports the function FindICWindow, receives the application's window handle and the file name of the cursor.

First of all the function FindICWindow must be declared in the application:

C#
      
[System.Runtime.InteropServices.DllImport ("icsetcursor.dll")]
private extern static long  FindICWindow(IntPtr ParentWindow, string szCursorName);

        
VB.NET
      
Declare Ansi Function FindICWindow Lib "icsetcursor.dll" (ByVal hWnd As IntPtr, _
ByVal CursorFile As String) As Long

        

The declaration must use Ansi in Visual Basic, because the DLL does not support unicode file names.

After the application has been compiled for the first time, the files icsetcursor.dll and cross.cur must be copied into the directories bin\debug and bin\release for C# and bin for Visual Basic projects. The "DLL not found" exception is thrown, if the files could not be copied.

In the Form_load functions, the cursor is set for the first time:

C#
      
try
{
    // Set the cursor.
    FindICWindow(this.Handle,"cross.cur");
}
catch
{
    // In order to avoid the application stops in case the "icsetcursor.dll" is
    // missing, the application catches the "DLL not found" exception.
    MessageBox.Show("The DLL \"icsetcursor.dll\" was not found.\nPlease make sure it is saved in your working directory!","Set Cursor");
}

        
VB.NET
      
Try
    ' Set the cursor.
    FindICWindow(Me.Handle, "cross.cur")
Catch
    ' In order to avoid the application stops in case the "icsetcursor.dll" is
    ' missing, the application catches the "DLL not found" exception.
    MessageBox.Show("The DLL 'icsetcursor.dll' was not found.Please make sure it is saved in your working directory!", "Set Cursor")
End Try

        

For convenience, the call to FindICWindow is encapsulated in a try - catch block in order to catch the "DLL not found" exception in case the icsetcursor.dll is not in the application's working directory.

After the live video has been started, the new cursor must be set again, because a new internal window was opened. Thus, FindICWindow must be called again to set the mouse cursor.

C#
      
private void StartLiveVideo()
{
    icImagingControl1.LiveStart();
    menuItemLiveStart.Enabled = false;
    menuItemLiveStop.Enabled = true;

    tbStartLive.Enabled = false;
    tbStopLive.Enabled = true;

    // Set the cursor to the live video's display window.
    FindICWindow(this.Handle,"cross.cur");
}

        
VB.NET
      
'Start the live video.
Private Sub StartLiveVideo()
    With IcImagingControl1
        If (.DeviceValid) Then
            .LiveStart()
            FindICWindow(Me.Handle, "cross.cur")

            EnableControlls()
        End If
    End With
End Sub