Consultor Eletrônico



Kbase P124847: Proprietary ActiveX control that works correctly in Progress 9.1x crashes session in OpenEdge 10.x
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   7/18/2007
Status: Unverified

FACT(s) (Environment):

OpenEdge 10.x
Windows

SYMPTOM(s):

Using ActiveX control to generate a TreeView

OpenEdge session crashes when instantiating the TreeView

Stack trace from PROWIN32.EXE reads:

Classes
GetDC
GetDC
GetParent

ActiveX is a custom control built for Progress (Controls.dll)

ActiveX uses PROFRAME window and subclasses it with an internal WNDPROC function

ActiveX has not been updated for several years

CHANGE:

Upgraded to OpenEdge 10

CAUSE:

This is not an OpenEdge ActiveX issue; OpenEdge is working as designed. From OpenEdge 10 onwards, the Progress client is compiled as a Unicode application. The proprietary ActiveX control is not compiled as a Unicode .DLL so the direct call to Progress' window procedure will not work properly. As the change is the result of a product enhancement, it will not be undone or adjusted.

FIX:

Modify the ActiveX control so that it uses the CallWindowProc that handles the required ANSI-to-Unicode conversion.

Proper subclassing now requires the use of CallWindowProc unless it is known for certain that the caller and callee are the same (Unicode-to-Unicode or ANSI-to-ANSI)