Microsoft KB Archive/148222

= How to update property values in a property page by using Visual C++ =

Article ID: 148222

Article Last Modified on 11/21/2006

-

APPLIES TO

 Microsoft Foundation Class Library 4.2, when used with:  Microsoft Visual C++ 4.0 Standard Edition

 Microsoft Visual C++ 5.0 Enterprise Edition

 Microsoft Visual C++ 6.0 Enterprise Edition

 Microsoft Visual C++ 5.0 Professional Edition</li></ul>

 Microsoft Visual C++ 6.0 Professional Edition</li></ul>

 Microsoft Visual C++ 6.0 Standard Edition</li></ul>

 Microsoft OLE Control Developer's Kit (CDK)</li></ul>

 Microsoft Visual C++ 2005 Express Edition</li></ul>

 Microsoft Visual C++ .NET 2003 Standard Edition</li></ul>

 Microsoft Visual C++ .NET 2002 Standard Edition</li></ul> </li></ul>

-

<div class="notice_section">

This article was previously published under Q148222

<div class="notice_section">

Note Microsoft Visual C++ .NET (2002) supports both the managed code model that is provided by the Microsoft .NET Framework and the unmanaged native Microsoft Windows code model. All or part of the information in this article applies to managed Visual C++ code. You can apply this information only by using the .NET Framework. Microsoft Visual C++ 2005 supports both the managed code model that is provided by the Microsoft .NET Framework and the unmanaged native Microsoft Windows code model.

<div class="summary_section">

SUMMARY
To modify a property of an OLE control, you would normally change the properties value in the control's property page. However, it is possible for a property to be modifiable from more than one property page especially in development environments such as Visual Basic. In this case, when you change the property in the control's property page, you should synchronize the value in Visual Basic's Property Form. This article shows by example how to do it.

<div class="moreinformation_section">

MORE INFORMATION
For example, in Visual Basic, place the Circ3 sample control on the Form page. Then click the right mouse button to select properties for the control. You will notice that the same properties can be seen in Visual Basic's Properties window. For example, one of the properties of Circ3 is the CircleOffset property. If you change this value in the Control's property page and click Apply, you will notice that the value has not been updated in Visual Basic's Properties window. To synchronize the value in both, you need to call BoundPropertyChanged(dispid) for each property you want to update.

Note The dispid is the id of the property to update. It is usually found in the header file of the COleControl-derived class. The dispids for the Circ3 control follow: // Dispatch and event IDs public: enum { //AFX_DISP_ID }; The following sample code shows how to modify the Circ3 sample to synchronize the CircleShape and CircleOffset properties given the dispids above.

Sample code
/* Compile options needed: none */

void CCirc3Ctrl::OnCircleShapeChanged {     SetModifiedFlag;

// force the control to redraw itself InvalidateControl;

// reset the circle offset, if necessary if (m_circleShape) SetCircleOffset(0);

BoundPropertyChanged(dispidCircleShape);     // *ADD THIS LINE* }

void CCirc3Ctrl::SetCircleOffset(short nNewValue) {     // Validate the specified offset value if ((m_circleOffset != nNewValue) && m_circleShape&&         InBounds(nNewValue)) {        m_circleOffset = nNewValue; SetModifiedFlag; BoundPropertyChanged(dispidCircleOffset); // *ADD THIS LINE* InvalidateControl; }  }

Additional query words: Property Page Form Browser

Keywords: kbinfo kbctrl kbhowto kbpropsheet KB148222

-

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

© Microsoft Corporation. All rights reserved.