Problem with HINT.PLL in Dev/2000 V1.2

From: QuadTwin <quadtwin_at_aol.com>
Date: 1997/02/11
Message-ID: <19970211140401.JAA24884_at_ladder01.news.aol.com>#1/1


Several of you have expressed an interest in a problem related to using the HINT.PLL provided by Developer/2000 V1.2.

The problem occurs when you 1) deploy "tool tips" in your forms, 2) call_form to another form, 3) exit the called form and return to the original
form, and 4) move the mouse into any field covered by tool tips.

The problem is that the SHOWHINT.DLL loaded by the calling form gets unloaded during the navigation. The symptom is a GPF. I think the error details may call out DE15WIN.DLL, but I can't recall exactly.

If you think you may have the problem, remove the following code at the end of the HINT package in HINT.PLL (retain the "END HINT;" statement, I included it
for a frame of reference).

 BEGIN
  IF on_windows THEN

     BEGIN 
       lh_SHOWHINT := ora_ffi.find_library('SHOWHINT.DLL');
     EXCEPTION WHEN ora_ffi.FFI_ERROR THEN 
       lh_SHOWHINT := ora_ffi.load_library(NULL,'SHOWHINT.DLL');
     END ;
     fh_DisplayHint := ora_ffi.register_function(lh_SHOWHINT,

'DisplayHint',ora_ffi.C_STD);
ora_ffi.register_parameter(fh_DisplayHint,ORA_FFI.C_INT); ora_ffi.register_parameter(fh_DisplayHint,ORA_FFI.C_INT); ora_ffi.register_parameter(fh_DisplayHint,ORA_FFI.C_INT); ora_ffi.register_parameter(fh_DisplayHint,ORA_FFI.C_INT); ora_ffi.register_parameter(fh_DisplayHint,ORA_FFI.C_INT); ora_ffi.register_parameter(fh_DisplayHint,ORA_FFI.C_CHAR_PTR); ora_ffi.register_return(fh_DisplayHint,ORA_FFI.C_INT);
  END IF;
END HINT; **********Add the following procedure prior to the existing procedure called
                    DisplayHint in the HINT package:

  PROCEDURE load_dll IS
  BEGIN
    IF on_windows THEN

     BEGIN
     lh_SHOWHINT := ora_ffi.find_library('SHOWHINT.DLL');
     EXCEPTION WHEN ora_ffi.FFI_ERROR THEN 
       lh_SHOWHINT := ora_ffi.load_library(NULL,'SHOWHINT.DLL');
     END ;
     fh_DisplayHint := ora_ffi.register_function(lh_SHOWHINT,

'DisplayHint',ora_ffi.C_STD);
ora_ffi.register_parameter(fh_DisplayHint,ORA_FFI.C_INT); ora_ffi.register_parameter(fh_DisplayHint,ORA_FFI.C_INT); ora_ffi.register_parameter(fh_DisplayHint,ORA_FFI.C_INT); ora_ffi.register_parameter(fh_DisplayHint,ORA_FFI.C_INT); ora_ffi.register_parameter(fh_DisplayHint,ORA_FFI.C_INT); ora_ffi.register_parameter(fh_DisplayHint,ORA_FFI.C_CHAR_PTR); ora_ffi.register_return(fh_DisplayHint,ORA_FFI.C_INT);
    END IF;
  END;
  • In the existing function DisplayHint, insert a call to the new procedure LOAD_DLL as shown below. FUNCTION DisplayHint (AppInstance IN PLS_INTEGER, HWnd IN PLS_INTEGER, PosSq IN PLS_INTEGER, x IN PLS_INTEGER, y IN PLS_INTEGER, message IN VARCHAR2) RETURN PLS_INTEGER IS AppInstance_l PLS_INTEGER := AppInstance; HWnd_l PLS_INTEGER := HWnd; PosSq_l PLS_INTEGER := PosSq; x_l PLS_INTEGER := x; y_l PLS_INTEGER := y; message_l VARCHAR2(512) := message; BEGIN load_dll; -- Recommended fix from Oracle support for R1.2 rc := i_DisplayHint(fh_DisplayHint, AppInstance_l, HWnd_l, PosSq_l, x_l, y_l, message_l); RETURN (rc); END ;
Received on Tue Feb 11 1997 - 00:00:00 CET

Original text of this message