Home | Overview | How Do I | FAQ | Tutorial | Sample
This article explains techniques you can use to optimize your ActiveX controls for better performance.
The topics Turning Off the Activate When Visible Option and Providing Mouse Interaction While Inactive discuss controls that don’t create a window until activated. The topic Providing Windowless Activation discusses controls that never create a window, even when they are activated.
Windows have two major drawbacks for OLE objects: they prevent objects from being transparent or nonrectangular when active, and they add a large overhead to the instantiation and display of controls. Typically, creating a window takes 60 percent of a control’s creation time. With a single shared window (usually the container’s) and some dispatching code, a control receives the same window services, generally without a loss of performance. Having a window is mostly unnecessary overhead for the object.
Some optimizations do not necessarily improve performance when your control is used in certain containers. For example, containers released prior to 1996 did not support windowless activation, so implementing this feature will not provide a benefit in older containers. However, nearly every container supports persistence, so optimizing your control’s persistence code will likely improve its performance in any container. If your control is specifically intended to be used with one particular type of container, you may want to research which of these optimizations is supported by that container. In general, however, you should try to implement as many of these techniques as are applicable to your particular control to ensure your control performs as well as it possibly can in a wide array of containers.
You can implement many of these optimizations through ControlWizard.
ControlWizard OLE Optimization Options
ControlWizard Option | Action | More Information |
Activate when visible checkbox on ControlWizard Step 2 of 2 | Clear | Turning Off the Activate When Visible Option |
Windowless activation checkbox on ControlWizard Advanced ActiveX Features | Select | Providing Windowless Activation |
Unclipped device context | Select | Using an Unclipped Device Context |
Flicker-free activation checkbox on ControlWizard Advanced ActiveX Features | Select | Providing Flicker-Free Activation |
Mouse pointer notifications when inactive checkbox on ControlWizard Advanced ActiveX Features | Select | Providing Mouse Interaction While Inactive |
Optimized drawing code checkbox on ControlWizard Advanced ActiveX Features | Select | Optimizing Control Drawing |
For detailed information about the member functions that implement these optimizations, see COleControl. The member functions are listed by use, such as Windowless Operations and Inactive Pointer Handling Functions.