INFO: eMbedded Visual Basic 3.0 Release Notes (260080)



The information in this article applies to:

  • Microsoft eMbedded Visual Basic 3.0

This article was previously published under Q260080

SUMMARY

To locate material in the Microsoft eMbedded Visual Basic 3.0 (eVB 3.0) Release Notes, select one of the following general categories, or choose Find from the Edit menu of the browser.

MORE INFORMATION

Contents

Major Changes

  • New F1 Functionality. The code window supports new F1 Help functionality. To get help for a particular property or keyword when you are in the Code window, position the cursor on the word you want information about, and then press the F1 key. The system searches for the word in the Help index, and opens the appropriate page. In the event that there is more than one match for your request, a dialog box opens and lists the available topics.
  • Menu Editor Removed. The Menu Editor has been removed from the IDE. Projects created in previous versions that contain a Menu from the Menu Editor have the Menu removed when opened in the new IDE. You must use the CommandBar (for H/PC Pro and Palm-Size PC 1.2) or the MenuBar (Pocket PC) instead.

Supported SDKs

This release supports the following SDKs:
  • Microsoft Windows Platform SDK for Pocket PC
  • Windows CE Platform SDK (H/PC Pro)
  • Windows CE Platform SDK (Palm-size PC 1.2)

SDK Release Notes

Palm-size PC 1.2
  • Recommended Installation Procedure. Microsoft eMbedded Visual Basic is a stand-alone product. You do not need to install Visual C/C++ 6.0, Visual Basic 6.0, or the Windows CE Toolkit for these programs in order to use eMbedded Visual Basic 3.0.

Supported Operating Systems

This release supports the following desktop operating systems:
  • Windows 98 Second Edition (US English, German, Japanese)
  • Windows NT4 Service Pack 5 (US English, German, Japanese)
  • Windows 2000 (US English, German, Japanese)

Supported Languages (Localization) for this Release

  • US English
  • German
  • Japanese

Installation

  • Microsoft eMbedded Visual Basic 3.0 may be installed without any conflicts on a workstation that has Visual Basic for Windows CE 6.0 (VBCE 6.0) or Visual Studio 6.0 installed.
  • To develop for H/PC Pro and Palm-size PC 1.2 devices, you must install the Windows CE SDKs for those platforms. These SDKs are included with eMbedded Visual Tools.
  • To develop for the Pocket PC, you must install the Windows CE SDK for this platform as well. Additionally, users must install the ActiveX components for the Pocket PC, or the runtimes are not installed.
  • To develop eMbedded Visual Basic applications for H/PC Pro devices, you must choose either full installation or custom installation. The compact installation option does not work.
  • When you install VBCE 6.0 after installing eMbedded Visual Basic 3.0, the new platform SDKs (H/PC Pro, Palm-size PC 1.2) are replaced with the old ones. You must re-install the new platform SDKs.
  • When you uninstall VBCE 6.0 after installing eMbedded Visual Basic 3.0, the H/PC Pro SDK is removed. To develop for this platform, you must re-install the new H/PC Pro SDK.
  • Uninstalling either VBCE 6.0 or eMbedded Visual Basic 3.0 leaves design-time ActiveX controls unregistered.

    Workaround:

    When VBCE 6.0 has been uninstalled, you must reinstall eMbedded Visual Basic 3.0.

    When eMbedded Visual Basic 3.0 has been uninstalled, you must reinstall VBCE 6.0.
  • The VBAJET32.dll is not installed with eMbedded Visual Basic. Therefore, the API Text Viewer cannot display API data from a database.

    Workaround:

    This driver is installed with Visual Basic 6.0.

Setup

Invalid Setup File Error

Microsoft suggests that you include no more than one CPU from a CPU family when creating a setup with the Visual Basic App Install Wizard. If you include multiple CPUs from the same family, there is confusion when your users try to install it.

Known Issues for eMbedded Visual Basic

Overall

H/PC Pro - Form Object

The ShowInTaskBar property is always True, regardless of whether it is set to True or False in the Properties or Code windows.

Pocket PC - Quitting an Application

When an Input box is displayed, the CTRL+Q keystroke does not work to quit the application. You must first close the Input box.

Saving Forms

Saving a Visual Basic 6.0 and eMbedded Visual Basic 3.0 form in the same folder with the same name causes errors if the forms contain a ListBox or a ComboBox control, because both forms (Visual Basic 6 and eMbedded Visual Basic) access the same .frx file.

Erroneous Return Value

VarType(Screen.ActiveControl) returns 11(vbBoolean). It should return 9(vbObject).

IDE

Activate vs. Resize Events

On the emulator, eMbedded Visual Basic invokes the Activate event before the Resize event.

ActiveX DLLs, Removing While In Use

The Control Manager allows you to remove the references to ActiveX controls while they are in use. Although the controls are not removed from the device, they are removed from the Registry. Closing the application and trying to run it again results in an error message.

Workaround

Be careful not to uninstall any ActiveX controls from the device that are needed for your application.

ADOCE for H/PC Pro and Palm-size PC 1.2 Platforms

The sample code throughout the online Help documents is modeled on the Pocket PC platform.

Workaround:

To use the ADOCE data access object with the H/PC Pro and Palm-size PC 1.2 platforms:
  • You must use ADOCE 2.0.
  • There is no Connection object for ADOCE 2.0.
Following is sample code showing how to programmatically reference the ADOCE control by using eMbedded Visual Basic for the H/PC Pro and Palm-size PC 1.2 platforms:
Dim objRecordset   'Declare a variable for the recordset
Set objRecordset = CreateObject("ADOCE.Recordset")
				
APIs - Additional Supported:

CreateFileForMapping:

Syntax:
Public Declare Function CreateFileForMapping Lib "Coredll" _
(ByVal lpfilename As String, ByVal dwDesiredAccess As Long, _
ByVal dwShareModule As Long, lpSecurityAttributes As Long, _
ByVal dwCreateDisposition As Long, ByVal dwFlagsandAttributes As Long, _
ByVal hTemplateFile As Long) As Long
				
APIs - Not Supported

The following APIs are not supported:

AbortDocGetCurrentThread
CheckRadioButtonGetCurrentThreadID
CloseEnhMetaFileGetObject
CreateCursorGetProcAddress
DeleteEnhMetaFileGetStringType
EndDocGetStringTypeA
EndPageLockResource
EnumSystemCodePagesMsgWaitForMultipleObjects
EnumTimeFormatsSetClassWord
ExitWindowsExSetSysColors
GetAsyncKeyStateStartPage
GetCurrentProcessWnetOptnEnum
GetCurrentProcessID

CreateObjectWithEvents Keyword

This keyword is recognized, and the functionality works; however, the IDE is case-sensitive in this instance, and the keyword must be properly capitalized: CreateObjectWithEvents.

Custom Menu Bars: Not supported for this release. You are not able to save customizations of menu bars in the IDE.

Declare Statements
  • Used in Forms:

    Declare statements are allowed on forms with no complaints. Declare statements should be limited to Modules (.bas files). When running the Debugger, if a Declare statement is used in a form, unusual side effects occur. Expressions in the Watch window become evaluated as <Can't compile module>.
  • vbNullPtr Constant: The constant vbNullPtr should be used only for ByRef parameters.
"Global" Keyword Not Supported.

The keyword Global is not supported by the version of VBScript used for eMbedded Visual Basic.

MsgBox Constant vbSystemModal

MsgBox is implemented on VBScript and does not support vbSystemModal. The constant is included to allow backward compatibility.

MoveWindow Function

This function does not generate the WM_SIZE message in the emulator for the same size window. The Resize event is not evoked.

Porting VBCE 6.0 Project Causes Loss of Data

When loading a project created in a prior version of eMbedded Visual Basic, the Application Title and all the Version Information is removed. This includes the Title, Comments, CompanyName, FileDescription, LegalCopyright, LegalTrademarks, and ProductName properties of the application.

Recovering Controls Removed from the Toolbox

The Components dialog box notes that: "Pressing SHIFT while clicking OK removes unused control references from your project."

This is true, and works very well with all ActiveX controls. However, if you have not included any intrinsic controls on your form prior to executing this action, all of the intrinsic controls (except Line and Shape) are removed from the toolbox.

Workaround:

  • Deselect the ActiveX controls manually in the Components window instead of using the SHIFT and OK keys. If the intrinsic controls have already been removed, they can be added to the Components.

  • For the H/PC Pro or Palm-size PC project types, the intrinsic controls can be added by selecting Browse, then locating where eMbedded Visual Basic is installed and selecting Wce211Intrinsics.ocx from the devctrls folder.
  • For Pocket PC projects, locate where the SDK is installed and select Wce300Intrinsics.ocx from the Desktop\intrinsics folder.
Resource Editor

The eMbedded Visual C++ Resource editor can be used for creating Resource Files to run in eMbedded Visual Basic.

Sub Main Converts to Form

When you open a .vbp project that uses a Sub Main as the Startup object, it is converted to a form name. This results in the project running but behaving incorrectly.

Workaround:

Use the Project Properties dialog box to change the Startup object back to Sub Main.

Terminating an Application

Pvbkill does not terminate an application if the path does not have "\" at the beginning of it.

Controls

Changing the Icons for a TreeView Control:

There are two images for the TreeView control, the "Image" and "SelectedImage." When the Image property is initially set by the user, the unselected image is the one that is set. To change the image of the SelectedImage property, you must explicitly set SelectedImage.

CommandBar Buttons Not Displayed Properly

If you add a ComboBox to the CommandBar and the ComboBox width exceeds the form width, the CommandBar divides into two lines. At run time, only the upper half of the CommandBar buttons are visible. To avoid this scenario, reduce the width of the ComboBox or try to make it multiple-button width.

ComboBox and ListBox:

  • ItemData Property: When loading a project created in a prior version of eMbedded Visual Basic, the information stored in the ItemData property of the ComboBox and ListBox controls is removed.
  • List Property: When loading a project created in a prior version of eMbedded Visual Basic, the information stored in the List property of the ComboBox and ListBox controls is removed.
CommonDialog Control

When using the ShowSave method, if the filename entered is slightly smaller than the MaxFileSize property, an erroneous error is raised.

Frame and Child controls

When a parent frame is disabled, child controls continue to report their actual window state. Everything works correctly if controls are disabled individually or not contained inside a frame.

Grid Control

CellFontWidth Property

The default value for this property is zero. If you read the value of this property before setting it to anything, it returns a value of zero. However, if you set the CellFontWidth property to a value and then read it back, you are able to read back the value that you set correctly. The new font width is also reflected correctly in the string displayed on the screen. This is true for both English and Japanese fonts.

Constants - ColAlignment Property

The constants for the Grid control's ColAlignment property have changed. The following table illustrates the changes:

Old ConstantNew Constant
FlexAlignCenterFlexAlignCenterCenter
FlexAlignLeftFlexAlignLeftCenter
FlexAlignRightFlexAlignRightCenter

Constants - Sort Property

The constants for the Grid control's Sort property have changed. See the Online Help documentation for the new Sort constants.

Selecting Cells

When the Row or Col property of a Grid control is set to a cell that is already selected, the LeaveCell, EnterCell, RowColChange, and SelChange events all fire, as if a new cell has been selected.

Workaround:

Use a global Boolean variable. Set it before changing Row or Col, test for it in the event handler, and then unset it after changing Row or Col.

Code Example:
Option Explicit
Dim bIgnoreGridEvents As Boolean

Private Sub Form_Load()
bIgnoreGridEvents = False
End Sub

Private Sub MyMethod()
bIgnoreGridEvents = True
GridCtrl1.Col = 1
bIgnoreGridEvents = False
End Sub

Private Sub GridCtrl1_LeaveCell()
If bIgnoreGridEvents Then Exit Sub
MsgBox "You clicked a cell!"
End Sub
				

Image Control

The Picture property of the Image control does not support 24-bit bitmap images.

Workaround:

Use a 16-bit image instead.

Intrinsic Controls

  • Supported Properties: The following properties are available at run time, but do not appear in the Properties window for some of the controls:
    Container HWnd Redraw
    FontBold ItemData SelCount
    FontItalic List SelLength
    FontStrikethru ListCount SelStart
    FontUnderline ListIndex SelText
    FontName NewIndex TopIndex
    FontSize Parent Value

  • Supported Properties (No Effect): Although these can be set at design time, the Appearance property has no effect in Pocket PC applications. This property is only supported for purposes of backward-compatibility.

Label Control, Disabling at Design Time

Setting the Enabled property of a Label control to False at design time causes an Application error.

Workaround:

Set the property at run time in the Form_Load event.

ListView Control

  • Index Out of Range: Adding an item with index out of range adds a blank item to the list.
  • SIP Behavior Anomaly: When editing a label in a ListItem control, the SIP automatically pops up, even when the Form.SIPBehavior property is set to 0 - vbSIPUser.
  • For . Each Syntax: The standard For.Each syntax does not work with the ListView or TreeView controls. See the TreeView control For.Each entry for workaround sample code.

PictureBox Control

  • TabStop property: Although not indicated in the Properties table of the PictureBox control Help topic, the TabStop property is available and does apply to this control.
  • BackColor property (H/PC Pro only): The default BackColor for the PictureBox control differs when created in eMbedded Visual Basic 3.0 and VBCE 6. In eMbedded Visual Basic, the BackColor equals &H8000000F& and on VBCE 6 it equals &H00C0C0C0&.

Shape and Line Controls

The z-order of the Shape and Line controls cannot be changed during run time.

TextBox Control

  • Text Property: When loading a project created in a prior version of eMbedded Visual Basic, the information stored in the Text property of the TextBox control is removed.
  • KeyUp Procedure, H/PC Pro (Device Only): The KeyUp procedure for a TextBox control automatically fires twice.

TreeView Control

  • ExpandedImage property: The image index starts at 0 instead of 1 for only the ExpandedImage property. For all the other Image properties of the TreeView control, the image index starts at 1.
  • For . Each Syntax: The standard For_Each syntax does not work with the TreeView or ListView controls.

    Workaround:

    The following is an example of acceptable syntax:
    Dim n As Node
    On Error Resume Next
    For n = 1 To Tree1.Nodes.Count
    
    If Err.Number <> 0 Then
    MsgBox Err.Number & vbCr & Err.Description
    End If
    
    If Tree1.Nodes(n).Expanded Then
    Tree1.Nodes(n).Expanded = False
    End If
    Next 
    End Sub
    					

Winsock Control

  • Sending data from CE Winsock control to Visual Basic 6.0 Winsock control: When sending data from a CE Winsock control to a Visual Basic 6.0 Winsock control using a single .SendData method, the Visual Basic 6.0 Winsock control's DataArrival event fires twice. The first time it fires, a GetData method returns a 1 char string, which is always the first char of the string that was sent using the SendData method. The second time the DataArrival event fires, a .GetData method returns the remainder of the string sent.

    BytesTotal accurately reports the length of the data string in each DataArrival event.
    When sending data from the Visual Basic 6.0 control to the CE control, the control behaves as expected with a single DataArrival event and data string.
  • Connection Error: Suspending a device with an active TCP connection causes the application on the device to continually raise error message 10054, "The connection is reset by remote side," when the device is turned back on. The application must be closed and restarted in order to use it again.

Debugger

The Debug object is not supported. Code completion shows Debug object methods in the Immediate window.

Break Mode/Setting Breakpoints
  • Break Icon: The Break icon on the debug toolbar does not put the IDE into Break mode.
  • Break on Application Error: Breaking in the debugger when an application error occurs is not supported in this release.
  • Do . Loop: When a breakpoint is set on the Do line of a Do . Loop statement, execution does not stop at the breakpoint.

    Workaround:

    Set the breakpoint on the line following the Do statement.
  • Events Continue to Queue: When the IDE is in Break mode, the application running on the device continues to queue events that are triggered.
Debug Methods
  • Print:Debug.Print does not work when it is included in the code. When an application that includes Debug.Print is run in debug mode, it does not display in the Immediate window.
  • Assert: Executing an application in debug mode that contains a false value in a Debug.Assert statement does not stop execution at that statement.
Err Object - LastDLLError property

This property, though included in the Code Completion options, is not supported for the H/PC Pro or Pocket PC platforms.

Immediate Window
  • Code Completion: A form that contains controls does not display the code completion for those controls unless the fully qualified path to the control is given.
  • Creating Variables "on-the-fly": The version of VBScript used for eMbedded Visual Basic does not support this use of the Immediate window. While users are unable to make assignments to variables that haven't been explicitly declared with a Dim statement, variables which have been explicitly declared are supported for use in the Immediate window.
  • Error Number Descriptions: Typing an error number into the Immediate window to get the full description is not supported for this release.
Watches Window
  • Adding undefined expressions: When debugging an application, adding a variable to the Watches window that is <out of context> of the current scope results in the Err object reporting that an error has occurred.
Unsupported:
  • Form_Unload Event: The Debugger cannot debug the Form_Unload event.

Online Help

Type Property
  • Syntax: The actual implementation of the syntax for the Type property looks like the following sample:
    CommandBar.Controls.Item(1).Type
    					
  • Objects: Member and Project are not applicable to eMbedded Visual Basic 3.0 and should be removed from the documentation.

Samples

Dice- H/PC Pro and Palm-size PC 1.2

After finishing a game of Dice, you are prompted to play another game. If you click Yes, Dice generates the following application error:
Application Error

An error was encountered while running this program: Variable is undefined: "mnuGameNew_Click"
Winsock Sample - H/PC Pro and Palm-size PC 1.2
  • Line 22 of the ReadMe.txt file reads:

    2. "Run the Wsock_HP.vbp (or Wsock_HPCProp.vbp) application on the remote device or emulator."

    The line should read:

    2. "Run the Wsock.ebp application on the remote device or emulator."
  • The code relating to UDP must be removed.
  • Client's Received Bytes Buffer Limit Is 8192 Bytes

    The GetData property within the DataArrival event causes the DataArrival event to fire twice if more than 8K of data is sent to the device. Typically the GetData method is used in the DataArrival event; the docs also state this fact. If less than 8K is sent to the device, then the DataArrival event only fires once and everything works as expected.

    Note: No data is actually lost; it is merely sent in two or more separate events. You can prove that the correct number of bytes are received by the application on the device by changing the sample to output "Len(sockdata)" in a button click event and pressing the button after the DataArrival event stops firing.

Additional Documentation

If you have accepted the default directories when installing Microsoft eMbedded Visual Tools, additional documentation can be found in the following locations:

Subject AreaPath and File Name
Installation and SetupC:\Program Files\Microsoft eMbedded Tools\README.HTM
eMbedded Visual BasicC:\Program Files\Microsoft eMbedded Tools\EVB\releasenotes.htm
eMbedded Visual C++C:\Program Files\Microsoft eMbedded Tools\EVC\releasenotes.htm
SDK: H/PC ProC:\Windows CE Tools\hpcproreadme.htm
SDK: Palm-size PC 1.2 C:\Windows CE Tools\pspc12readme.htm
SDK: Pocket PC C:\Windows CE Tools\pocketpcreadme.htm

Legal Requirements

Information in this document, including URL and other Internet Web site references, is subject to change without notice. Unless otherwise noted, the example companies, organizations, products, people and events depicted herein are fictitious and no association with any real company, organization, product, person or event is intended or should be inferred. Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Microsoft Corporation.

Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property.

© 2000 Microsoft Corporation. All rights reserved.

Microsoft; MS-DOS; Windows; Windows NT; eMbedded Visual Basic; eMbedded Visual C++; SDK for Windows CE, Handheld PC Professional Edition 3.0; SDK for Windows CE for the Palm-size PC 1.2; and Windows Platform SDK for Pocket PC are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.

The names of actual companies and products mentioned herein may be the trademarks of their respective owners.

Modification Type:MajorLast Reviewed:9/4/2002
Keywords:kbDSupport kbinfo KB260080