Microsoft KB Archive/192354

= PRB: Error Saving a Form With ATL Control =

Article ID: 192354

Article Last Modified on 5/13/2003

-

APPLIES TO


 * Microsoft Visual Basic 5.0 Learning Edition
 * Microsoft Visual Basic 6.0 Learning Edition
 * Microsoft Visual Basic 5.0 Professional Edition
 * Microsoft Visual Basic 6.0 Professional Edition
 * Microsoft Visual Basic 5.0 Enterprise Edition
 * Microsoft Visual Basic 6.0 Enterprise Edition
 * Microsoft Visual C++ 5.0 Enterprise Edition
 * Microsoft Visual C++ 6.0 Enterprise Edition
 * Microsoft Visual C++ 5.0 Professional Edition
 * Microsoft Visual C++ 6.0 Professional Edition
 * Microsoft Visual C++ 6.0 Standard Edition

-



This article was previously published under Q192354



SYMPTOMS
A control created with the Microsoft Active Template Library (ATL) using the ATL COM AppWizard works properly in Visual C++. It also functions in Visual Basic, except when you try to save the Visual Basic project, you might get the following error message:

System Error &H80070057 (-2147024809): The parameter is incorrect.



CAUSE
When Visual Basic saves a form, it saves the persistent properties of all the controls on the form using a PropertyBag. The error message mentioned above means that Visual Basic detects an incorrect property name specified by the control.



RESOLUTION
Use correct property names in the PROP_ENTRY macro of your ATL control. Visual Basic does not support blank spaces in the string names of properties, so your property names should avoid embedded spaces.



STATUS
This behavior is by design.



Steps to Reproduce Behavior

 * 1) Use the ATLBUTTON sample that ships with Visual Studio to reproduce the error. Go to your Visual Studio CD-ROM and copy the sample files from the \DEVSTUDIO\VC\Sample\Atl\ATLBUTTON directory to your hard drive.
 * 2) Build the sample with Visual C++. The control is automatically registered.
 * 3) Now start Visual Basic and create a Standard EXE project. Form1 is created by default.
 * 4) Choose Components from the Project menu and add the ATLBUTTON control to the control ToolBox by selecting ATLBUTTON and clicking OK.
 * 5) Add an instance of the control to Form1.
 * 6) Save the project. You should get an error message.

Steps to Solve the problem
  Open the file AtlButton.h and change the following section: BEGIN_PROPERTY_MAP(CAtlButton) PROP_ENTRY("Static Image", 0, CLSID_NULL) PROP_ENTRY("Hover Image", 1, CLSID_NULL) PROP_ENTRY("Push Image", 2, CLSID_NULL) END_PROPERTY_MAP to: BEGIN_PROPERTY_MAP(CAtlButton) PROP_ENTRY("StaticImage", 0, CLSID_NULL) PROP_ENTRY("HoverImage", 1, CLSID_NULL) PROP_ENTRY("PushImage", 2, CLSID_NULL) END_PROPERTY_MAP That is, delete all spaces in the property names.  Rebuild the ATL project and repeat steps 3 - 6 above. This time it works correctly.

Keywords: kberrmsg kbprb KB192354

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.