TN051: Using CTL3D Now and in the Future

This note covers issues specific to the use of CTL3D with MFC as well as what the future holds for CTL3D.

What is CTL3D?

CTL3D hooks into dialog creation and control creation and "subclasses" the standard windows controls to give them a more appealing 3D effect. This technique was first used by Microsoft Excel version 4.0. The Excel team shared the technology with the rest of the industry. Since then, the use of CTL3D has become a de facto standard and is commonly used by professional Windows applications. MFC 3.0 supports the use of this DLL directly.

The Future of CTL3D

There is no getting around it, however, CTL3D and the techniques it uses to accomplish this task are quite tricky (it does some things that you certainly wouldn’t want to do in your own applications). The idea of applications changing the standard look provided by the operating system leads to incompatibilities and user interface inconsistency (since not all applications have the same look). Future Windows operating systems such as Windows 95 will provide a much more pleasing 3D look by default. Eventually, this will make CTL3D unnecessary.

Applications are encouraged to use CTL3D only if the operating system does not provide 3D effects for the built-in controls. MFC 3.0 (and higher) does this by default. CWinApp::Enable3dControls is not operational on systems running Windows 95 (or any version of Windows which reports itself as version 4.0). Your application, even if not MFC-based, is encouraged to do the same thing.

For more information on Windows 95-specific issues, see Technical Note 52: Writing Windows 95 Applications with MFC 3.1.

Technical Notes by NumberTechnical Notes by Category