Microsoft KB Archive/97537

{|
 * width="100%"|

VC++ README.WRI Part 2-Visual Workbench (2 of 3)

 * }

Q97537

-

The information in this article applies to:


 * The Visual Workbench
 * Microsoft Visual C++, version 1.0

-

SUMMARY
The text below presents information in Part 2 of the README.WRI file distributed with Microsoft Visual C++ version 1.0. Setup installs README.WRI into the MSVC\HELP directory.

Shortcut Key for Hierarchy Button in MFC Help
The class hierarchy charts invoked by the Hierarchy button are displayed in popup windows. However, popup windows cannot be invoked using an ALT+key command. To display a hierarchy chart using the keyboard, use either CTRL+I or I by itself instead of ALT+I.

Using the Insertion Point with Some Bold Fonts
When you use a bold font that is not a TrueType font, the insertion point may appear to be positioned incorrectly. Use another font if you notice this condition.

External Makefiles that Prompt at the MS-DOS Command Line
If you are using an external makefile in Visual Workbench, remove any commands in the makefile that prompt for input at the MS-DOS command line. Visual Workbench does not recognize prompts in an external makefile and any that occur will pause the build and cause the system to appear to be hung.

Workspace files in Visual Workbench for Visual C++ and FORTRAN
Versions of Visual Workbench for Visual C++ and FORTRAN share the same format for workspace files (.WSP). If you have a Visual Workbench FORTRAN project and Visual C++ project in the same directory, they will use the same workspace file. For example, if a workspace is saved by a FORTRAN Visual Workbench session and a Visual C++ Visual Workbench session is run next, the workspace saved by the FORTRAN session will be loaded.

Building a DLL
When building a dynamic-link library using Microsoft C version 6.0, you needed to link the LibEntry module, which contained startup code that initialized the local heap and called the C LibMain function. LibMain is where you write your DLL initialization code. Equivalent code for LibEntry is now incorporated in the Visual C++ Windows DLL run-time library, and the LIBENTRY.OBJ and LIBENTRY.ASM files are no longer provided with Visual C++.

If you need to initialize your DLL, you can write your own C or C++ LibMain function, which will be called automatically at startup. If you do not need to initialize the DLL, a substitute for the LibMain function (which simply returns 1) is automatically provided by the DLL run-time library.

If you are modifying an existing DLL project to work with Visual C++, remove any statements from your makefile that link LIBENTRY.OBJ, as this file is no longer provided.

Building VBX Controls
To build VBX controls, the VBAPI.LIB library must be added to list of additional libraries used by the linker. This library can be specified by choosing the Projects dialog from the Options menu, and then choosing Miscellaneous options in the Linker options dialog. Specify /LIB:&quot; \VBAPI&quot; in the Other Options field, where describes the directory where the VBAPI.LIB file is installed.

Building Example VBX Controls Supplied With the Visual Basic CDK
The example VBX controls provided in the Visual Basic Control Development Kit must be built using the small memory model to work with Visual C++.

Using #pragma optimize
You can use the #pragma optimize command in your source code to control optimization options for files or functions in Visual Workbench projects. The command must appear outside of function bodies. The syntax is:

  #pragma optimize( &quot;[optimization switch list]&quot;, {off | on} ) The optimization switch list may be zero or more of the following:

  'a', 'w', 't', 's', 'c', 'g', 'e', 'l', 'p', 'z', 'n', 'r', 'o', 'q', 'f', 'v'. These are the same letters used with the /O compiler options. For example,

  #pragma optimize( &quot;lge&quot;, off ) Two special forms are supported. The form below turns off all optimization other than p-code ('q'):

  #pragma optimize( &quot;&quot;, off ) The form below restores all optimization switch settings to the project's original settings:

  #pragma optimize( &quot;&quot;, on ) For more information about pragmas, search for 'pragma' in the C/C++ Language Reference online help file.

Debugging Using an ATI Ultra Display Adapter
If you are using an ATI Ultra display adapter to debug applications in Visual Workbench you may encounter INT 3s as you execute code. Newer versions of the display drivers may solve this problem. The most recent drivers are available on the ATI BBS. The numbers for ATI User Support are:


 * BBS: 905-764-9404
 * Support FAX: 905-882-0546
 * Customer Support: 905-882-2626
 * General Inquiries: 905-882-2600

Using Visual Workbench Debugger in Hard Mode
In Chapter 11 of the &quot;Visual Workbench User's Guide,&quot; in the description of Hard mode debugging, the &quot;Requirements and Restrictions&quot; section on page 197 should contain the following additional restrictions:


 * While in Hard mode you do not have access to the Project Options dialog box nor can you use the mouse to access combo box controls, or the Project Files button on the toolbar. You can, however, use keyboard commands to access combo box controls.
 * Starting other applications (including Help and the Class Wizard) while debugging in Hard mode can cause Windows to crash.

Some Controls Disabled When Debugging in Hard Mode
If you are in Hard Mode, some controls do not accept mouse input. This includes any combo boxes, and the Project Files button on the toolbar. In this case, you must use the keyboard to access these controls.

Using Combo List Boxes in Hard Mode
Combo list boxes may not work well with mouse clicks when the debugger is in hard mode and stopped at a breakpoint. Use keyboard commands to access combo list boxes in Visual Workbench in this situation.

Auto Select Code Generator Option
In the discussion of the Code Generator list box in Chapter 9 of the &quot;Visual Workbench User's Guide&quot; (pages 120-121), the options for the Visual C++ Professional Edition are different than stated. There are actually three options: Auto Select (the default), Fast, and Optimizing.

Auto Select instructs the compiler to determine whether to use the fast or optimizing compiler based on other options you have selected. Normally the Auto Select option selects the fast compiler. However, if any of the following optimizations are selected, then the optimizing compiler is used: /Oa, /Ow, /Oc, /Og, /Oe, /Oi, /Ol, /Os, /Ot, /Ox, /Oz. The same is true if 80386 code generation (/G3), altmath (/FPa), or floating point calls (/FPc, /FPc87) are selected.

Auto Select places neither /f nor /f- in the options string and allows you access to all option controls in the C/C++ Compiler Options dialog box. If you select options that are incompatible, the compiler generates an error or warning at build time. The Fast code generator option places /f in the options string and the Optimizing code generator option places /f- in the options string. Both Fast and Optimizing options deny access to C/C++ Options dialog box controls that are incompatible with their code generator types.

Since Auto Select is the default for Visual C++ Professional Edition, Table 9.1 on page 116, which lists /f- as the default release-specific compiler option for several project types, is in error.

The /f- compiler option is never explicitly selected by default. However, in every case where /f- appears in Table 9.1, the compiler actually implicitly chooses the optimizing compiler because of other options (/O1 or /Ox).

Additional query words: 1.00

Keywords : kb16bitonly

Issue type :

Technology :