You must install Microsoft Visual Basic 6.0 before you can install the Microsoft Windows CE Toolkit for Visual Basic 6.0.
- Install Visual Basic 6.0.
- Run Setup.exe from the setup folder on the CD.
- Follow the instructions in the setup program.
: In order to use the H/PC SDK included with this release, you must install it as part of the Visual Basic CE 6.0 install (either Complete or Custom). In addition, you can install it first and then install Visual Basic CE version 6.0.
To save disk space, you can use the Custom install option during the H/PC SDK installation and clear the following components, which are not required for Visual Basic CE development:
- Device Driver Development Kit
- Include Files
- Microsoft Foundation Classes (MFC)
- ActiveX Template Library (ATL)
- Desktop Components
- Help Files
- Win32 Sample Files
- ATL Sample Files
- MFC Sample Files
: These are required for the Windows CE Toolkit for Visual C++ 6.0 development.
The toolkit directory contains a Samples subdirectory, and each sample has its own subdirectory. There is a Readme.txt file for each sample. The following is a listing of the samples included in the toolkit:
- CEPad: A basic text editor.
- Dice: A game sample.
- LoanCalc: Shows how to use Financial library.
- MSCEComm: Serial communications sample.
- NWind: Northwind database order entry application demonstrating the TabStrip, Listview and ADOCE controls.
- Scribble: Graphics interactive sample using the PictureBox.
- Setup1: This is not a Windows CE Project, but a Standard EXE project for Visual Basic 6.0. It is provided here for your use, should you wish to customize your setup programs.
- TreeView: Demonstrates use of the TreeView and ImageList controls.
- WSock: Demonstrates use of Winsock TCP/IP communications.
For additional information about the samples included with the Windows CE Toolkit for Visual Basic 6.0, please see the following article in the Microsoft Knowledge Base:
INFO: VBCE: Samples Included with the Windows CE Toolkit for VB6
The following sections describe the known language-related issues present in the toolkit.Property Issues
- You cannot change the BorderStyle property of a Label control at run-time.
- Setting font properties on Microsoft Foundation Classes (MFC) controls will not cause the controls to repaint automatically. You must manually cause an MFC control to repaint itself after changing the font properties.
- You can highlight items in a combo box control with the Locked property set to True. This behavior differs from Visual Basic 6.0 in that setting the Locked property to True does not prevent the items in the combo box control from being highlighted.
- The Err object does not support the LastDLLError property.
- The Value property of a check box control may return an incorrect result inside the control's Click event in cases where the event is generated by changing the Value property directly instead of by choosing the control with a stylus.
- If you use a coordinate system for the ScaleMode property other than twips, some properties, such as CurrentX, will differ slightly from their expected values. All coordinates are stored internally as twips, so other coordinate systems may be subject to rounding errors during conversion.
- The Appearance property of the command button object has no effect on the appearance of the control.
- The design-time settings for the ScaleHeight and ScaleWidth properties of a form are not returned correctly when read at run-time. If these two properties are changed during run-time, the correct values are returned.
- Some intrinsic controls may generate both a KeyDown and KeyPress event in cases where Visual Basic 6.0 generates only the KeyDown event.
- If you compile or save a Visual Basic for Windows CE 6.0 project and switch to a Visual Basic 6.0 project, the App.Path property of the Visual Basic 6.0 project defaults to the last path where your Windows CE project or .vb file was saved.
- Visual Basic for Windows CE does not save the data in ItemData for combo boxes as it does for list boxes.
- The toolkit does not support setting the TabIndex property on controls during the Form_Load event.
- The ClipControls property for the Form object does not affect how controls are drawn.
- For the Text property of the ListView control, the Item label text is invisible until ListView is refreshed.
- The Comm control ParityReplace property does not use the ParityReplace character when there is a parity mismatch. Additionally, invalid characters are sent when Parity is set to Space.
- The Break property of the Comm control suspends communication until it is set to False. This works the opposite way in Visual Basic 6.0, where setting the Break property to True enables you to send and receive data.
- For the ListView control, only the first line of a multiline ListItem label is visible until you set the WordWrap property at run-time.
- For a CommandBar control, setting the Style property of a button to 3 (cbrSeparator) returns zero when the Style property is read.
- For a Grid control, setting the CellFontItalic property True and then right-aligning the text, causes the text to truncate.
- Using the Form1.ActiveControl property during a Form_Activate event raises error 5 (Invalid Procedure Call or Argument).
- Do not change the CommandBar Height property. If you attempt to do so at run-time, the property value is set to the new height, but the actual CommandBar height does not change. The CommandBar height is determined by the number and size of the controls it contains.
- The index parameter of the ListView.ListItems.Add property is ignored. Items are always added to the end of the list.
- In the CommonDialog control, if a user chooses a combined path and file name longer than the MaxFileSize property, the control reacts as if the user cancelled the dialog box.
- The toolkit does not save an ActiveX controls Enabled property in the project file, so settings for the Enabled property are not maintained across development sessions. To save Enabled property settings, write code to set the Enabled property in the Form_Load event.
- For the ListView control, the LabelWrap property works correctly when you set it at run-time. However, if you set the LabelWrap property to False at design-time, the label text remains wrapped.
- For the TreeView control, using the Key property to access a Node within a collection raises an error 13. To avoid generating an error, use the Index property instead of the Key property.
- Once you specify the ImageList property of a TabStrip control, all tabs will have an image on them, even if an Image parameter was not specified when you added the tab.
- An error occurs if you call the App.End method in a Form_Load event if a Module invokes the form.
- In the WaitForEvents method, .pvbload does not exit when used with the App.End method.
- The application does not exit if you call the WaitForEvents method twice.
- An error does not occur if you call the WaitForEvents method from Form code.
- A method is issued if you call the WaitForEvents method from a control's event code.
- On a Handheld PC (H/PC), Err.Raise does not work unless you call Err.Clear first. However, this does not apply to a H/PC running the Handheld PC Pro Edition software.
- When using the File control Get method, you cannot read any binary file written using Microsoft Visual Basic 5.0. This is because binary files written using the toolkit contain four additional header bytes at the beginning of the file. To read a binary file using the toolkit, use the Declare statement and CreateFile function to access the file.
- The compiler does not test for variable or procedure names that are the same as objects or object properties. This enables you to accidentally override methods such as DrawCircle. Overriding the standard objects and methods is not recommended.
- For the TreeView controls GetVisibleCount method, no partially visible items are included in the count.
- Under some circumstances, the Click event of a Label control may occur twice in a row.
- When the drop-down arrow of a combo box control is clicked, the following events are generated:
- You should not use a common dialog control in a Form_Load event because other applications may cause the dialog box to disappear. If the dialog box disappears, your application may wait indefinitely for a response from the control with no forms visible and no way for the user to terminate the application.
- In the toolkit, the events for the Grid control occur in a different order from Visual Basic 6.0. The following table shows how Grid events start in Visual Basic and in the toolkit.
|Windows CE Toolkit for Visual Basic 6.0|| ||Visual Basic 6.0 |
| || |
|LeaveCell|| ||LeaveCell |
|EnterCell|| ||SelChange |
|RowColChange|| ||EnterCell |
|SelChange|| ||RowColChange |
|GridClick|| ||GridClick |
- The LostFocus and GotFocus events occur when you edit a ListItem label for a TreeView or ListView control. The following table shows the order in which the events take place:
|Control|| ||Events |
| || |
|ListView|| ||BeforeLabelEdit |
| ||LostFocus |
| ||AfterlabelEdit |
| ||GotFocus |
|TreeView|| ||BeforeLabelEdit |
| ||LostFocus |
| ||GotFocus |
| ||AfterLabelEdit |
- When you issue a public function from an unloaded form in Visual Basic 6.0, the function occurs first, then the Form_Load event occurs. In Visual Basic for Windows CE, however, the Form_Load event occurs prior to the function call.
- If you use an accelerator key or the TAB key to navigate to a combo box control, the GotFocus event of the control occurs twice.
- The Click event for the TabStrip control occurs only when the tab is changed. It does not occur when a user attempts to re-select a selected tab.
Constant and Variable Issues
- The Left function does not work correctly in forms because the Left property of the form overrides the function of the same name. Use the Mid function or call the Left function from a module instead.
- The compiler does not check for a valid or unused event prefix for the CreateObjectWithEvents function. Event prefixes must start with an alpha character, and subsequent characters can be either alphanumeric or an underscore. Do not use the same prefix as an existing control.
- When using the CreateObjectWithEvents function, you cannot place event code in a Form file.
- If you use the MsgBox function in the Form_Load event, the application form opens as a minimized form.
- You cannot use a constant to define another constant. All constants must be a literal.
- It is possible to declare a variable that has the same name as a control. However, you should avoid doing this because such declarations are not detected during compilation and may cause unpredictable results.
Control, Object, and Collection Issues
- When using the ListView control, you cannot use the Set statement to set the SelectedItem property. The following code example shows the syntax you should use as an alternative:
Form1.ListView1.SelectedItem = AnItem
- The Dim As statement enables any data type in the As clause, even unsupported data types. The As clause is discarded during compilation and is intended only for use with the Intellisense feature of the integrated development environment IDE.
- You cannot use the Set statement when assigning an object to a property. You can use the Set statement only when assigning an object to a variable. Use the standard assignment operator (=) to assign an object to a property.
- When using the Declare statement, you must pass variant parameters ByRef, not with ByVal. In addition, the Declare statement function cannot have a variant return value.
Project and Module Issues
- When using the Comm control, only the Data Bit settings of 8 and 7 are supported. If you attempt to use a Data Bit setting of 6 or 5, the characters passed are not valid.
- The END, HOME, PAGE UP or PAGE DOWN keys cannot be used to navigate in the Grid Control.
- When using the Winsock control, suspending a device with an active TCP connection causes the application on the device to continually raise the following error when the device is turned back on:
Error 10054 'The connection is reset by remote side'
- Images from an Imagelist control used in some controls may appear in black and white rather than in color. This occurs only in the emulator, not on a device.
- An MFC control does not use the 'Activates when visible' check box option selected in the MFC control wizard when run on a Visual Basic for Windows CE 6.0 form. When you run the created control on a form, the control always runs as if the 'Activates when visible' option is on.
- You cannot create an invisible MFC ActiveX control at run-time.
- An ActiveX control with a transparent background does not display on a form with a transparent background. Instead, the control has a white background.
- In the emulator, if a combo box has the focus when you choose the Close button on the command bar, the application terminates. This happens only under emulation.
- Keyboard accelerators work only on the last MenuBar added to a command bar.
- Intellisense for the File control may suggest parentheses where none are required.
- When using a Form object, illegally accessing a constant or variable does not raise an error.
- When using the CommandBar control, you can change only the width of the right most command bar item.
- The toolkit sets the order of forms in the Forms collection to the design-time order, while Visual Basic 6.0 sets the order of forms to the run-time load order.
- With the toolkit, it is possible to assign extremely large or extremely small Form dimensions. Visual Basic 6.0 typically enforces minimum and maximum Form dimensions based on screen resolution and the window style of the form.
- If you hide all the menu items on a form, the menu names are not visible, but the black box containing the menus is not. In Visual Basic 6.0, the entire menu area disappears.
- To put a bitmap file in a picture box, add the bitmap file to the project and specify the name of the bitmap in the Picture property. Note that the picture does not show up in design-time, only in run-time.
- All the controls that have both Height and Width allow values to be assigned to them that are smaller than the lowest possible value, however the controls will ignore any values lower than their minimum.
Additional Toolkit Issues
- You cannot refer to module names explicitly. Syntax such as Module1.Function1 will not work. All modules are concatenated during compilation, and the specific module names are not retained.
- All Private variables are treated as if they were Public variables.
- You cannot build a Visual Basic for Windows CE 6.0 project from the command line because Visual Basic does not load the add-in before it compiles the project.
- Do not reset the menus or toolbars while editing a Visual Basic for Windows CE project. This clears the menus, causing a failure when you shut down Visual Basic.
- The Data View Window command on the View menu can not be hidden by the add-in and remains visible, though not usable, in a Windows CE project.
- Msvbvm and OLE are permanently installed at the top of the Project References and thus override all other references. This behavior causes the IDE for the toolkit to display hints for Visual Basic 6.0 instead of Visual Basic for Windows CE 6.0. To bypass this default behavior, use Dim...As with Windows CE-specific types.
- Top-level menu items created with the Menu Editor must have at least one submenu item in Visual Basic for Windows CE 6.0.
- If you have a device connected to the IDE or Control Manager, and then you exchange another device for the current one, you do not need to create a new device in the Platform Manager if you use the old device name. As this may change in the future, you should create a separate connection for each device.
- Visual Basic 6.0 indicates that certain features are available when they are not. These features include CausesValidation, DragIcon, DragMode, Index, Drag, DragDrop, and Validate; for a complete list, refer to Help. Visual Basic 6.0 uses the type libraries in Msvbvm60.dll and VB6.olb to provide certain default properties and events for objects. Although Visual Basic for Windows CE does not use these libraries, they cannot be removed or disabled in the References dialog box.
- When using the emulation environment, if you cancel the download/launch of a Visual Basic CE application prior to the emulator starting, it may cause the emulator to fail. Canceling while connecting to a device may result in Visual Basic CE hanging on its connection to the device. Both of these cases are very rare and usually only occur if you immediately try to cancel before a connection is established. To avoid this behavior, always allow the initial connection (or emulator) to start before canceling the download.
Information in this document is subject to change without notice and is provided for informational purposes only. The entire risk of the use or results of the use of this document remains with the user, and Microsoft Corporation makes no warranties, either expressed or implied. The example companies, organizations, products, people and events depicted herein are fictitious. 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.
Microsoft, MS, MS-DOS, Visual Basic, Visual C++, Windows, Win32, Windows NT, and Visual Studio are either registered trademarks or trademarks of Microsoft Corporation in the U.S.A. and/or other countries.
The names of actual companies and products mentioned herein may be the trademarks of their respective owners.