The WaveMetrics IgorXOPToolkit FTP Archive

This is the main directory of Igor XOP Toolkit-related content.

INDEX of IgorXOPToolkit Manual FTP Archive

INDEX of IgorXOPToolkit Xcode FTP Archive


  • XOPsInXcode3.2.pdf

    CarbonBundleTemplates.zip

    December 10, 2009

    Addendum to the XOP Toolkit manual describing how to create an XOP project in Xcode 3.2 or later.

    CarbonBundleTemplates.zip contains Xcode 3.2 template files for building an XOP.


INDEX of IgorXOPToolkit Examples FTP Archive

XOP examples from 2007 and 2008.


  • MFC_XOPs.pdf (PDF)

    MFC_XOPs.odt (Open Doc)

    MFC_XOPs.doc (Word 97-2003)

    June 16, 2008

    Creating an MFC-Based XOP With ActiveX

    Extract from the document:

    WebBrowser is an Igor external operation (XOP) that shows how to use an ActiveX control in Igor. The XOP was created using MFC (Microsoft Foundation Class).

    WebBrowser is a demonstration Igor XOP built as an "MFC regular DLL". MFC stands for "Microsoft Foundation Class" and is a Microsoft technology for creating Windows programs in C++. MFC is mostly used for creating standalone applications but we will use it to create an XOP which is a form of DLL (dynamic link library).

    The motivation for creating an MFC XOP is to use MFC's support for accessing ActiveX controls. Many scientific instruments come with ActiveX controls which provide the means for controlling the instruments programmatically. Rather than using an instrument ActiveX control for demonstration purposes, this chapter uses Microsoft]s web browser control because it is already installed on every Windows system and does not require any additional hardware. But the principles and techniques discussed here apply to all ActiveX controls.

    Some ActiveX controls provide a visual component and support "in place activation". This means that the ActiveX controls' visual component can be embedded in a window of another application. Such an ActiveX control also usually provides functions that can be called by the host application to control aspects of the visual component and related functionality. This is the type of ActiveX control that we are dealing with here.

    Another type of ActiveX control provides functions that the host application can call but no visual component. This type of ActiveX control can also be wrapped in an XOP but that is not covered in this document.

    An ActiveX control is an ActiveX server, usually supplied in the form of a DLL, hosted by an ActiveX container, which is usually an application. MFC provides the containment functionality for the application. It also creates wrapper functions that allow us to invoke methods and get and set properties of the ActiveX control. To implement this in straight C++ would require a very high degree of ActiveX expertise.

    Using MFC, that level of expertise is not needed. But some familiarity with MFC is required. The Visual C++ help system includes a wealth of information about MFC but does not include a good overview or introduction to MFC. The Wikipedia entry for MFC provides good background information.

    Visual C++ supports creating two kinds of MFC DLLs: MFC extension DLLs and MFC regular DLLs. In an MFC extension DLL, pointers to MFC objects can be passed between the DLL and the host MFC application. Igor is not an MFC application so we will not create an MFC extension DLL. In an MFC regular DLL, the DLL uses MFC and the host application may or may not use MFC, but there is no sharing of MFC objects between the two. We will create an MFC regular DLL.


  • MFCXOP_VC7.zip (Visual Studio 7)

    MFCXOP_VC8.zip (Visual Studio 8)

    July 30, 2007

    WebBrowser is an Igor external operation (XOP) that shows how to use an ActiveX control in Igor. The XOP was created using MFC (Microsoft Foundation Class).

    Source code and VC7 and VC8 projects are included.

    In addition to adding functions to Igor that allow you to control a web page from within Igor, the WebBrowser XOP adds a window through which the Microsoft web browser ActiveX control provides a user interface.

    WebBrowser adds two types of functions to Igor's repertoire.

    1. The first type gives control of the WebBrowser XOP. For example, the WebBrowserShowWindow function displays the Web Browser window and the WebBrowserKillWindow function kills it. These functions are called "WebBrowser XOP management functions".
    2. The second type provides access to the methods and properties provided by the Microsoft web browser ActiveX control (C:\Windows\System32\shdocvw.dll). These functions are called "web browser control functions" in this help file.

    WebBrowser adds no menu items or dialogs to Igor.

    Note: Windows only, WebBrowser requires Igor Pro 6.02B02 or later.


  • MGMotor_110_VC2008.zip

    MGMotor_110_VC2008_Project.zip

    July 13, 2022

    MGMotor is an Igor external operation (XOP) that permits you to control a ThorLabs motor controller from Igor's command line or from an Igor procedure. It calls functions in an ActiveX control supplied by Thorlabs as part of their APT software package. MGMotor runs on Windows only.

    In addition to adding functions to Igor that allow you to control motors, the MGMotor XOP adds a window through which the Thorlabs ActiveX control provides a user interface.

    MGMotor adds two types of functions to Igor's repertoire.

    1. The first type, gives control of the MGMotor XOP. For example, the MGMotorShowWindow function displays the MGMotor window and the MGMotorKillWindow function kills it. These functions are called "MGMotor XOP management functions".
    2. The second type provides access to the methods and properties provided by the Thorlabs MG17Motor.ocx ActiveX control. These functions are called "motor control functions" in this help file.

    MGMotor adds no menu items or dialogs to Igor.

    MGMotor was originally written in 2008 in Visual C++ 2005 for 32-bit Igor only. In 2022, WaveMetrics added a 64-bit version compiled in Visual C++ 2008.

    Note: Windows only, MGMotor requires Igor Pro 6.02B02 or later.


  • Qpod080624.zip

    July 31, 2007

    The Qpod XOP allows you to control the Qpod deposition rate/thickness transducer from Sigma Instruments. It provides access to most of the functionality of the Qpod.dll ActiveX/COM component. This component is described in the Qpod Interface.pdf file available from Sigma Instruments. Qpod XOP does not support the event (QpodReading) mentioned in Qpod Interface.pdf or the SetReadingsTimer function that works with the event.

    Source code and a VC7 project are included. MFC is used for the XOP.

    The Qpod XOP adds the following external functions to Igor. You must access the Qpod device via these functions.

    • QpodFindQpods
    • QpodInitFreq
    • QpodGetReading
    • QpodMaterial
    • QpodPeriod
    • QpodZero
    • QpodZeroAll

    Qpod adds no menu items or dialogs to Igor.

    Note: Windows only, The Qpod XOP requires Igor Pro 6 or later.


INDEX of IgorXOPToolkit User_Contributions FTP Archive


  • MFC_XOP.zip

    July 20, 2006

    This is an example of creating an XOP using MFC (Microsoft Foundation Classes). It was submitted by Igor Pro user Ivan Mevedev.

    The project is a Visual Studio 2005 project. In order to use it, you must have MFC installed. Note that MFC is not included with Visual Studio Express Edition.

    Here is a note that Ivan sent to WaveMetrics with the example MFC XOP:

    Attached you will find a project created using Microsoft Visual Studio 2005 which was written using MFC.

    This XOP adds command "XopCmd" and Igor menu "Xop Menu" to Igor. Both command and menu activate a simple Dialog.

    Things I had to do to make it work:

    1. In the general configuration properties I selected "Use MFC in static Library". "Use MFC in shared dll" did not work. Static library makes XOP a lot larger and slower to load.
    2. I had to modify "XOPStandardHeaders.h" file in "XOPSupport" folder. I commented out line:

      //#include <Windows.h>		// This creates the _WINDOWS_ symbol.
      										

      and added the following line:

      #include <afxwin.h>			//MFC
      										

    I hope other Igor users will find this helpful.

    Cheers, Ivan.