PRB: Propiedad de apariencia utiliza Windows 4.0 WS_EX_CLIENTEDGE

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

152000
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Síntomas
Controles MFC admiten un conjunto de propiedades estándar. Una de estas propiedades es la apariencia (DISPID_APPEARANCE). Apariencia se implementa para darle una apariencia tridimensional a un control. Si el control se utiliza en una versión de Windows o Windows NT 4.0 menor, la propiedad Appearance no afectará a la apariencia del control en tiempo de ejecución.
Causa
En tiempo de ejecución, la propiedad Appearance se implementa en un control MFC estableciendo un estilo de ventana extendido WS_EX_CLIENTEDGE. Este estilo de ventana no se admite en las versiones de Windows o Windows NT 4.0 menor.
Solución
Es posible proporcionar su propia implementación de la propiedad Appearance aunque esta técnica no funcionará para controles subclases de Windows.
Estado
Este comportamiento es por diseño.
Más información
Mediante el Asistente para clases, agregar la propiedad de apariencia estándar pero elegir métodos Get/Set sino acepta la implementación estándar. En el control, declare una variable miembro de tipo BOOL para representar la propiedad Appearance. Las funciones Get/Set stock se pueden copiar y cambiadas ligeramente para manipular esta variable, así como controlar los requisitos de enlace de propiedad. En la función de dibujo, dibuje un borde 3D en función del valor de esta variable.

Código de ejemplo

   // these get and set functions are the same as the original with a minor   // change (noted in the code)   short CTestAppearanceCtrl::GetAppearance()   {       return m_MyAppearance;   }   void CTestAppearanceCtrl::SetAppearance(short nNewValue)   {       if (nNewValue != 0 && nNewValue != 1)           ThrowError(CTL_E_INVALIDPROPERTYVALUE,                      AFX_IDP_E_INVALIDPROPERTYVALUE);       // Is the property changing?       if (m_MyAppearance == nNewValue)           return;       if (!BoundPropertyRequestEdit(DISPID_APPEARANCE))           SetNotPermitted();   // changed from original       // do not use the WS_EX_CLIENTEDGE style       //ASSERT((m_hWnd == NULL) ||       //  ((GetExStyle() & WS_EX_CLIENTEDGE) == (DWORD)(m_sAppearance ?       //      WS_EX_CLIENTEDGE : 0)));       m_MyAppearance = nNewValue;       SetModifiedFlag();       //ToggleAppearance(this);   // end of changes       OnAppearanceChanged();       BoundPropertyChanged(DISPID_APPEARANCE);   }   void CTestAppearanceCtrl::OnDraw(               CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)   {       // TODO: Replace the following code with your own drawing code.       pdc->FillRect(rcBounds,            CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));       pdc->Ellipse(rcBounds);       // draw as 3D if m_appearance is set       if(m_appearance)       {           CRect rect(rcBounds);           pdc->DrawEdge(rect, EDGE_SUNKEN, BF_RECT | BF_ADJUST);       }   }				
DISPID_APPEARANCE 4.00 4.10

Advertencia: este artículo se ha traducido automáticamente

Propiedades

Id. de artículo: 152000 - Última revisión: 02/12/2014 09:35:38 - Revisión: 2.1

  • Microsoft Foundation Class Library 4.2
  • kbnosurvey kbarchive kbmt kbctrlcreate kbprb kbuidesign KB152000 KbMtes
Comentarios