Microsoft KB Archive/154166

= PRB: ActiveX Control Painting Problems in Visual C++ 4.2 =

Article ID: 154166

Article Last Modified on 12/1/2003

-

APPLIES TO


 * Microsoft Visual C++ 4.2 Enterprise Edition
 * Microsoft Visual C++ 5.0 Enterprise Edition
 * Microsoft Visual C++ 4.2 Professional Edition
 * Microsoft Visual C++ 5.0 Professional Edition

-



This article was previously published under Q154166



SYMPTOMS
The ActiveX (OLE) Control may not paint correctly if it was built using Visual C++ 4.2. Two known issues include controls not repainting when resized, and control child windows not being repainted. Other painting problems have been observed when subclassing native Windows controls.



CAUSE
This behavior is caused by changes to COleControl::OnPaint which add optimizations to improve performance.



RESOLUTION
COleControl now includes a method, GetControlFlags, to control how painting will be handled in an ActiveX control. Removing the fastBeginPaint flag from the bit field returned by GetControlFlags will cause your ActiveX control to use the same OnPaint code found in Visual C++ 4.1



STATUS
This behavior is by design.



Sample Code
DWORD CMyOleControl::GetControlFlags {  return COleControl::GetControlFlags & ~fastBeginPaint; }

