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 SupportedThe following APIs are not supported:
AbortDoc | GetCurrentThread |
CheckRadioButton | GetCurrentThreadID |
CloseEnhMetaFile | GetObject |
CreateCursor | GetProcAddress |
DeleteEnhMetaFile | GetStringType |
EndDoc | GetStringTypeA |
EndPage | LockResource |
EnumSystemCodePages | MsgWaitForMultipleObjects |
EnumTimeFormats | SetClassWord |
ExitWindowsEx | SetSysColors |
GetAsyncKeyState | StartPage |
GetCurrentProcess | WnetOptnEnum |
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 FormWhen 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 ApplicationPvbkill 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:
|
FlexAlignCenter | FlexAlignCenterCenter |
FlexAlignLeft | FlexAlignLeftCenter |
FlexAlignRight | FlexAlignRightCenter |
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
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 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:
|
Installation and Setup | C:\Program Files\Microsoft eMbedded Tools\README.HTM |
eMbedded Visual Basic | C:\Program Files\Microsoft eMbedded Tools\EVB\releasenotes.htm |
eMbedded Visual C++ | C:\Program Files\Microsoft eMbedded Tools\EVC\releasenotes.htm |
SDK: H/PC Pro | C:\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.