I do want to create the impression that the VCX BOOPSI class is a self-contained, ready-to-link module that solves all your problems!
VCX is very limited (at least in this release; some basic features could be added without great effort). For instance, VCX gadgets will never send an IDCMP message. They only perform ICA_TARGET notification.
Using VCX starts with creating the BOOPSI class. You do this by calling the library function initVCXClass(). freeVCXClass() will free that class again. Once you have the class, you can create as many instances (gadgets) of that class as you want by calling NewObject().
A VCX gadget is set up similarly as a proportional (propgclass) gadget: You have to specify PGA_Freedom, PGA_Total, PGA_Top, PGA_Visible, GA_Left (or GA_RelRight), GA_Top (or GA_RelBottom) and GA_Width (GA_RelWidth) or GA_Height (GA_RelHeight).
If the gadget is horizontal, its height will be automatically taken to be equal to the height of the arrow images. Similarly, if the gadget is vertical, it will be of the same width as the arrow images. In either case redundant tags will be ignored.
You supply a SYSIA_DrawInfo tag with a proper DrawInfo pointer (obtainable using GetScreenDrawInfo(), see AutoDocs). VCX needs it to create instances of the arrow images. If you are using a screen resolution other than that of default Workbench you must also supply a SYSIA_Size tag with one of the values SYSISIZE_LOWRES, SYSISIZE_MEDRES or SYSISIZE_HIRES defined in <intuition/imageclass.h>.
At present, the only way to be informed of a VCX gadget's state change is the ICA_TARGET tag. It should support the special target ICTARGET_IDCMP, but that feature is untested.