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)