Microsoft KB Archive/230731

= INFO: Visual Studio 6.0 SP3 Readme: Part 7 - Visual J++ =

Article ID: 230731

Article Last Modified on 2/10/2005

-

APPLIES TO


 * Microsoft Visual Studio 6.0 Service Pack 3

-



This article was previously published under Q230731



SUMMARY
This Readme file contains updated information for the entire Microsoft Visual Studio suite of developer tools. If you downloaded a Core service pack from the Internet, not all sections of this file apply to the updates you received. The fixed issues appropriate for the Core downloads are those listed in the Visual Studio section plus the sections for the products updated by your Core download.

The Microsoft Visual Studio 6.0 Service Pack 3 Readme contains the following sections:

PART 1: Overview and Installation

PART 2: Visual Studio

PART 3: Visual Basic

PART 4: Visual C++

PART 5: Visual FoxPro

PART 6: Visual InterDev

PART 7: Visual J++

PART 8: Visual SourceSafe

PART 9: File Versions

For the latest product information, see the Visual Studio Web site at:

http://msdn.microsoft.com/vstudio

For the latest product updates, see the Visual Studio Support Highlights site at:

http://support.microsoft.com/support/vstudio

Please see the REFERENCES section below for more information about the other parts of this readme.



Installation Information
Some features of Visual J++ 6.0 relating to debugging Microsoft Transaction Server (MTS) require Windows NT 4.0 Service Pack 4 (SP4). Windows NT 4.0 SP4 is available from the Microsoft Windows Update Web page.

Visual J++ Applications Cannot be Debugged on Windows 2000 Beta 3

A late-breaking issue may prevent the debugging of Visual J++ applications onWindows 2000 Beta 3. This bug does not prevent you from compiling your applications. For more information, see:

Microsoft Visual Studio Support Highlights page.

New Microsoft Virtual Machine
In response to the automation issues noted in Automation, the Microsoft virtual machine (Microsoft VM) files have been updated, beginning with Service Pack 2. The Microsoft VM version included in this service pack is listed in the Visual J++ section of the file list in Part 9 of this readme. This change will be applied both on the machine where Microsoft Visual J++ is installed and also to the Visual J++ redistributable folder, so Visual J++ applications that are distributed will also include the updated Automation files.

To switch between retail and debug versions of the Microsoft VM system classes, run classd.exe or classr.exe.

This service pack contains the required Visual J++ files needed to comply with the preliminary ruling issued by Federal District Court Judge Ronald H. Whyte. These changes were also included in Service Pack 2. For more information, please read \vj98\extwarn.txt in your Visual Studio folder or go to:

http://msdn.microsoft.com/visualj

Compiler, Debugger, ActiveX, and IDE Fixes
In this service pack release, the following issues in the general programming environment have been resolved:
 * The onCOMRegister method was not being invoked from a Java/COM-packaged DLL, causing problems in registering DLLs.
 * A general protection fault occurred involving the Pdm.dll file after running script that transformed XML data.
 * A particular sequence of spaces, line feeds, and carriage returns caused the Visual J++ code editor and debugger to fall out of sync when stepping through code.
 * Controls created using Visual J++ were marked as using the default-threading model Both. This default setting creates several problems. First, user interface controls are bound to the thread that owns the control's window handle, which prevents the control from working properly in a multithreaded apartment thread. In service pack 3, the default-threading model for ActiveX controls has been changed to Apartment.
 * Exiting Internet Explorer 5 on a computer with the Visual J++ debugger installed may terminate abnormally. This problem is dependent on the type of content viewed in Internet Explorer 5 and the speed of your machine. This has been corrected in Visual Studio Service Pack 3.
 * IDE crashed when doing a Save As of a utility project. This has been fixed in this service pack.
 * If users opened the Break Point Properties dialog box several times while debugging in break mode, Visual J++ had trouble handling these multiple instances.
 * JVC would not correctly compile against com.ms.fx.IFxLocaleFormatting.class or com.ms.fx.FxFormattedText.class.
 * Problem Debugging Scripted Behaviors. Internet Explorer 5 scripted behaviors (.htc) were not accessible via the debugger and, therefore, were not able to be debugged. This has been corrected in Visual Studio 6.0 Service Pack 3.
 * Run-time Errors handled by Visual Studio even if Script Debugger was present. Run-time errors would be handled by Visual Studio 6.0 even if the Script Debugger were installed. Users were unable to choose the Script Debugger as the application to use in this situation. Either Visual Studio or the Script Debugger can now handle run-time errors.
 * Service Pack 3 contains a debugger update that enables the user to set design-time breakpoints in .js and .vbs files.
 * The behavior of a form that included a single-threaded ActiveX control varied, depending on the environment in which the application was run. For example, if you created a single-threaded edit control, included that control on a form, and compiled the form into an executable file, the edit control would be unable to process keystrokes. However, if you did not compile the form to an executable file and ran your application through JView, the edit control behaved as expected. This service pack includes an update that enables single-threaded ActiveX controls embedded in a WFC form to behave as expected, regardless of the environment in which they are run.
 * When adding a DHTML Edit control for Internet Explorer 5, Visual J++ started to generate the appropriate wrappers and compile them, but it would freeze. This has been fixed in the Jactivex.exe included in this service pack.
 * When debugging Visual J++ 6.0 on Windows NT, the Machine Debug Manager previously retrieved a process's file name by querying the performance data registry. This approach to retrieving process information caused crashes. Consequently, the Machine Debug Manager has been modified to first attempt to use the Process Status API to retrieve process data. If this attempt fails, the Machine Debug Manager queries the performance data registry.

Microsoft Windows Foundation Classes Fixes
The following items have been fixed in the 1.0.0.8443 release of the Windows Foundation Classes. This release is installed with the Microsoft VM included with Service Pack 3.

ActiveX support fixes

 * 215353 ActiveXHost doesn't handle license with certain ActiveX controls. When hosting certain ActiveX controls, such as DB Grid 6.0, that require a license on a computer other than the one where the form was originally authored, a warning or error dialog box would appear stating the license would expire in n days. This would happen even if the computer where the application was deployed had a valid copy of the license. This is now fixed, and the warning will not appear unless the control is unlicensed.

Code-behind-HTML Fixes
See also Known issues.  194787 DhDocument.setTitle does not work from initForm. Calling DhDocument.setTitle(string title) had no effect on the document's title. Calling setTitle in onDocumentLoad would work around this problem. DhDocument.setTitle now works correctly from both initForm and onDocumentLoad. 195174 When  tags are not capitalized, JDHTML controls can't be added to a bound template. When doing server-side code behind-HTML and the  tags in the HTML template document were not in uppercase (), the code-behind module could not properly bind to the document, and DhElements could not be added to the page. The search for  tags is now case insensitive. 195173 WinIOException when calling DhDocument.dumpDHTML and DhDocument.dumpHTML.DhDocument.dumpHTML and DhDocument.dumpDHTML are unsupported methods. They have been marked as @deprecated, and the compiler will issue a warning if they are used. 197567 DhCell.resetTextAlign does not set the cells text alignment to that of its containing row.DhCell.resetTextAlign now resets the alignment of the text in the cell to match that of the DhRow in which the cell is contained. 197566 After removing a header row or footer row, DhTable.removeAll throws an exception. In the released WFC, an ArrayIndexOutOfBounds exception was thrown when removing a header or footer. This is no longer the case.</li> 223366 DhStyleBase is missing setBackgroundImage. There was no way to directly set the background image style for DhStyleBase-derived elements without programming through the Internet Explorer Document Object Model. DhStyleBase now has a new method: setBackgroundImage(String imageURL) where imageURL is the path (fully qualified or relative) to the image.</li> 223370 Event-Handler Support for WFC.UI controls in Code-Behind HTML Scenario. In a code-behind HTML project in Visual J++ 6.0, users will find when wfc.ui controls are added to an HTML page, they do not support event handlers for the onEnter and onLeave events. However, the onMouseEnter and onMouseLeave events will still run properly. The onEnter and onLeave run only when a control is placed on a wfc.ui.Form.</li> Binding to a DhInlineFrame stops onDocumentLoad from being called. Binding a DhInlineFrame to an <IFRAME> tag in initForm with DhDocument.setBoundElements(DhElement elements[]) would throw an exception that was silently handled by the framework. As a result, onDocumentLoad was never called for a document. This bug is now fixed. The framework now correctly binds a DhInlineFrame to the <IFRAME> tag, and onDocumentLoad is called as expected.</li> Binding to a DIV element that has text which is not enclosed in SPAN tags causes an exception. Binding to elements that were heavily nested sometimes caused an element not found exception to be thrown. The workaround was to enclose raw HTML text in tags. This problem has been fixed, and the workaround is no longer necessary.</li> Calling and Binding Methods on WFC Controls in a Code-Behind Scenario. Users can add com.ms.wfc.ui controls to an HTML page and have them participate in a code-behind scenario. To achieve the proper behavior, users should either call the DhBaseContainer.add( com.ms.wfc.ui.Control c) method or use DhComponentWrapper. Creating a DhComponentWrapper, setting its Control property (or specifying the control in the constructor), and adding it to a container is equivalent to calling the DhBaseContainer.add method. For more information, see DhComponentWrapper and DhBaseContainer.</li> Calling DhModule.doMain from a console application causes a NullPointerException. Server-side applications can be tested from a console application by creating a DhModule object, setting the server-side code class, and then calling doMain. Previously, calling doMain in this manner would cause a null pointer exception; this now works correctly.</li> Changing a tab selection cause NullPointerException. Selecting a tab in a TabControl that is hosted in an HTML page in a code-behind scenario would cause a NullPointerException. This exception is no longer thrown.</li> Code-behind-HTML applications edited in the HTML Designer do not function in Internet Explorer 5. Code-behind-HTML applications edited in the HTML Designer do not function with Internet Explorer 5 installed, because the <PARAM> tags of <OBJECT> elements are incorrectly discarded. Code-behind-HTML applications that are already deployed are not affected. This has been corrected in Visual Studio Service Pack 3.</li> Code-behind-HTML samples from vj6sampl.exe may stop working when Internet Explorer 5 is installed. The Code-behind-HTML samples from vj6sampl.exe such as "dhButton," "dhContainer," and "dhImage" may stop working when Microsoft virtual machine version 5.0.3167 is installed. Microsoft VM version 5.0.3167 ships with Internet Explorer 5. This has been corrected in Visual Studio Service Pack 3.</li> DhBulletedList.resetID throws DhElementNotFoundException. Calling resetID on a DhBulletedList will still throw DhElementNotFoundException, and the method is now marked as @deprecated. However, a warning will be generated at compile time. Moreover, the method is not displayed in CodeSense or in the Object Browser to prevent a developer from accidentally calling it.</li> DhCell.getText on cell in data-bound DhTable returns an empty string. This now works correctly.</li> DhDocument.findElement throws DhElementNotFoundException if called after DhDocument.getAllElements. Calling DhDocument.findElement(string elementID) would throw a DhElementNotFoundException if it was called to find an element after a call to DhDocument.getAllElements.DhDocument.findElement now works correctly even if DhDocument.getAllElements was called first.</li> DhEdit.addOnClick throws a com.ms.wfc.core.WFCException for multiline text boxes only. Adding an event handler to a multiline DhEdit in initForm would throw a WFCException claiming the element was not a <INPUT type=text> or <TEXTAREA>. The workaround was to add the event handlers to the multiline edit control in onDocumentLoad. Adding event handlers now works as expected in both initForm and onDocumentLoad.</li> DhElement resetID Method has been Deprecated. The DhElement class resetID method failed. In this service pack, the method works, but it has been deprecated.</li> DhModule is never finalized, causing an IIS memory leak. In this service-pack release, DhModule is now properly discarded after use.</li> <li>DhModule Methods to Retrieve an Object's PARAM Value. The DhModule class now supports the following methods that make it possible to retrieve the value of an object's PARAM tags: <ul> <li>public String getParameter(String paramName)</li> <li>public String[] getParameterNames</li></ul>

The paramName parameter identifies the object parameter that you want to retrieve. If no object parameter corresponds to the one that you request, this method returns an empty string.

The second method, getParameterNames, retrieves the names of all available PARAM values and returns these names in an array of String objects. These methods are supported for use only within Internet Explorer. A call to these methods from within any other environment triggers a WFCInvalidStateException.

</li> <li>DhRadioButton and DhCheckBox won't surface Document Object Model attributes or styles set in HTML. Binding to an HTML radio button or check box that had custom properties set on it would not keep those properties once the object was bound in JDHTML. These unique properties would be lost once the object was bound. This is now fixed, and custom properties for radio buttons and check boxes are available from JDHTML.</li> <li>DhRow.add now takes only DhCell. In the first release of WFC, DhRow.add would take any DhElement-derived object. If the object was not a DhCell derivative, the method would silently fail. In this release, a WFCInvalidParameterException is thrown if the DhElement is not derived from DhCell.</li> <li>DhTable.showNextPage throws a null pointer exception when called after getBodyCell. This issue shows up only on Internet Explorer 5. Calling DhTable.showNextPage now works correctly even if getBodyCell has already been called.</li> <li>DhText.setFont, DhText.getFont, and DhText.resetFont do not work correctly. If text represented in a DhText object was rendered in a struck-out or underlined font, calling setFont on that object with a non-underlined or non-struck-out font would not remove the underline or strike-out attributes from the font. This now works as expected.</li> <li>Getting an exception in WFC in server-side code will create problems in IIS, causing memory shortage. DataBound DhTables that were never added to a container would not be properly finalized, causing IIS to consume but never free its memory.</li> <li>Internet Explorer 5 returns "can't get WFC form surface exception" if loading a complex code-behind scenario across network. The default security settings in Internet Explorer 5 were preventing WFC controls in a code-behind scenario from working correctly if the HTML document was loaded from a local network drive or intranet site. This scenario now works as expected.</li> <li>Internet Explorer problem with Mshtml.dll would close the browser window after the timer started. The IOleClientSite for the timer control was being destroyed before the object was deactivated. The object is now deactivated before its site is destroyed.</li> <li> Performance improvement: Add DhBaseContainer.removeAllSafe. DhBaseContainer now has a method removeAllSafe that removes all child elements very quickly. It is currently used on DhBulletedList and can also be used in a developer's derived container as follows: public void setElement(DhElement e) { removeAllSafe; m_item = e;   if (e != null) super.add(e); }                   </li> <li>Problems binding elements to DHDocument if no objects were bound first. There was a problem with binding and adding objects to a DhDocument. If no objects were added to a DhDocument before a call to setHTMLDocument, then all subsequent additions, such as setBoundsElement, to DhDocument would fail. This behavior has been corrected.</li> <li>'''ReadyStateEvent has "???" as the value for the readyState. The ReadyStateEvent''' had the string "???" as the value for the readyState regardless of what the ready state was. The ready state can now be one of the following values: complete, interactive, loaded, or uninitialized.</li> <li>Styles without a period (.) at the beginning of the name can't be added to elements. If a DhStyle was created using the DhStyle(string name) constructor, and the name parameter did not begin with a period, the style could not be added to an element. This constructor now prepends a period to the style name if one is not already there.</li> <li>The getPropertyBag method has been added to DhModule. In the first release of WFC, it was impossible for a DhDocument-derived class in a code-behind scenario to get at any <PARAM> tags within its DhModule <OBJECT> tag. DhModule has two new methods: <ul> <li>public String[] getParameterNames

returns an array of strings representing the NAME attributes for each of the <PARAM> tags.</li> <li>public String getParameter(string parameterName)

Returns the VALUE attribute for the passed in parameterName.</li></ul> </li> <li>When binding to a table with an existing header or footer row, the header/footer row is not treated as part of the table. Calling DhDocument.setBoundElements(DhElement elements[]) to bind a DhTable to an existing <TABLE> in HTML would bind to the table. However, if that table had a <THEAD> or <TFOOT>, they were not treated as a part of the table. For example, myTable.removeAll would remove all the body rows, but the header and footer rows would remain. The previous workaround was to get the <TABLE> with DhDocument.findElement(string id) in onDocumentLoad. Both of these scenarios now work as expected.</li></ul>

Other WFC Library and Control Fixes
<ul> <li>223358 Creating more than two MDI children in the parent's constructor throws a WFCException. If a form created more than two multiple-document interface children in its constructor, a WFC Win32Exception would be thrown. After this exception, the form would have only two children added. This is now fixed. An arbitrary number of MDI children can be created and added to a form in its constructor.</li> <li>223365: MouseEnter and MouseLeave get confused on a PictureBox that has to re-create a handle. The MouseEnter and MouseLeave events would cause problems if, in response to one of them, a PictureBox were to be re-created. For example, calling the setBorderStyle method on a PictureBox will cause a handle re-creation. If this method were called in a MouseEnter or MouseLeave event handler, the state of the MouseEnter/Leave would be left unresolved, and future Enter/Leave events would not be recognized. This is fixed in most cases, though it is possible to miss one or more enter/leave events. The control, however, will resynchronize itself, and Enter/Leave events are triggered as expected after some time.</li> <li>223351 The setSelectedIndex in Tab Control does not properly paint children. Calling the method setSelectedIndex on a TabControl would sometimes fail to render the child controls on that page correctly. This issue has been resolved.</li> <li>223368 Method setChecked not working on Context Menu. Context menus for controls were not receiving their WM_INITMENUPOPUP message. Therefore, any menu checks performed were not applied. Calling the method setChecked on context menus now works as expected.</li> <li>223352 Button sizing is inconsistent between the Forms Designer and run-time. Child MDI windows that are created in the constructor of their MDI frames would have autoscaling applied to them twice, once by the parent and once by themselves. This could cause controls on the child window to be sized differently at run time and at design time. MDI parents no longer autoscale their children.</li> <li>223344 The com.ms.wfc.app.RegistryKey.setValue method doesn't work correctly for string arrays. When calling com.ms.wfc.app.RegistryKey.setValue(Object) with a string array that is its parameter, several characters of the last string element in the array would not be written correctly. Writing string arrays with this method now works correctly.</li> <li> 223367 The com.ms.wfc.app.RegistryKey.setValue method does not account for terminating characters on Windows NT. When setting the value of a string with com.ms.wfc.app.RegistryKey.setValue on Windows NT, it was not adding to null-terminating characters correctly. This has been corrected. A NullPointerException is thrown when removing a RebarBand without a child control. The following code threw a NullPointerException: RebarBand Band = new RebarBand; rebar1.addBand(Band); rebar1.removeBand(Band); // throws NullPointerException This now works correctly, and the exception is not thrown.

</li> <li>Can't start up Rebar with multiple RebarBands on the same row. At design-time, it was possible to create a Rebar control with multiple RebarBands on the same row. At run-time, however, each RebarBand would appear in its own row. The RebarBands now appear in the row where they belong.</li> <li>Databinding issues for dateTimePicker. The date field in the DateTimePicker control can now successfully be bound to a date data field in a database.</li> <li>Form.createWindowGraphics throws a WFCInvalidArgumentExceptioN. This method now works as expected, and a usable com.ms.wfc.ui.Graphics class is returned.</li> <li>Garbage appears on toolbar after installing IE5. When running Internet Explorer 5 in Windows 95 or Windows 98, garbage characters would appear in the ToolBar ToolTip and under the ToolBar button image. This has been corrected in this service pack.</li> <li>ImageList sets defaults to 16 colors. The ImageList control now has a new property: colorDepth. The value of this property should be set to one of the constants in the ColorDepth enumeration. However, when running on a system with more than 256 colors where the ImageList is to contain images that have 256 colors, the colorDepth property should be set to one of the following: <ul> <li>ColorDepth.COLORDEPTH_64K_COLORS</li> <li>ColorDepth.COLORDEPTH_MILLIONS_OF_COLORS</li> <li>ColorDepth.COLORDEPTH_TRUE_COLOR</li></ul> </li> <li>ListItem.setSelected(false) and setFocused(false) don't work. In code, you can now successfully clear and remove the focus from ListItems in a ListView control.</li> <li>Modifying drop-down Data Field menu on DataBinder's Properties page. Visual J++ 6.0 would stop responding when the user attempted to modify the drop-down Data Field menu on the Properties page of a DataBinder object. RasterOp.BRUSH and RasterOp.PEN do not work as expected with transparent images. Drawing a transparent image with a RasterOp of PEN or BRUSH would draw the non-transparent areas of the image in white instead of the color of the BRUSH or PEN. This is fixed for the RasterOp.BRUSH case. For RasterOp.PEN, nothing is drawn.</li> <li>Saving an Image object to a memory stream does not work as expected. Extracting an Image object from an ImageList and trying to persist it to a memory stream or file would fail if the underlying PICTDESC was null. A valid bitmap PICTDESC is now returned, and the image can successfully be persisted.</li> <li>System problems on Windows NT 4.0 Service Pack 3. Under specific circumstances, a computer running Windows NT 4.0 Service Pack 3 freezes when running a WFC application that showed a window that did not have a parent window. This problem has been fixed in Windows NT 4.0 Service Pack 4 and Visual Studio 6.0 Service Pack 3. The WFC now checks for the parent window correctly.</li> <li>When extending HTMLControl, onDocumentReady is never called. A user-written control that extended the com.ms.wfc.ui.HTMLControl never called the onDocumentReady method. This is now fixed, and the method is called as expected.</li></ul>

Other Fixes
<ul> <li>223361 Method Time.getDayOfWeek Value Returned Error. The "Remarks" section for the Time.getDayOfWeek method contains incorrect information. It should state the number returned by the getDayOfWeek method is always from 0 through 6 where a value of 0 represents Sunday.</li> <li>Overloaded File.File Constructors Omitted from WFC Reference Documentation. The following overloaded versions of the constructor were omitted in the File.File topic: <ul> <li>public File (String path, int mode)</li> <li>public File (String path, int mode, int access)</li></ul>

In the first version, file access is set to FileAccess.READWRITE, and file sharing is set to FileShare.NONE. In the second version, file sharing is set to FileShare.READ if the access parameter is set to FileAccess.READ; otherwise, file sharing is set to FileShare.NONE.</li></ul>

Access 2000 databases must be connected via ODBC in Data Form Wizard
You might get a "Unrecognized database format" error when connecting to an Access 2000 database using the Data Form Wizard. To connect to an Access 2000 database, specify the database type as ODBC (rather than Access, which will assume Access 98) on the "Database Type" page. On the Connect Information page, you can then specify the Access 2000 database file (*.mdb) as the database, and Microsoft Access Driver (*.mdb) as the driver. Alternatively, you could set up a DSN using the ODBC Data Source wizard from the Windows Control Panel and specify the DSN on the Connect Information page of the Data Form Wizard.

Code-behind HTML support and Windows 2000 Beta 3
WFC controls from the com.ms.wfc.ui package that are added to a DhDocument (via the DhComponentWrapper method) do not work on Windows 2000 Beta 3. This issue will be fixed in a future release of Windows 2000.

<div class="references_section">