Mindaugas Kavaliauskas wrote:
Use -n compiler switch.
Hmmm, just thick. Thanks.
MSCAL loads as expected, events from MSCAL work well, exiting after loading
MSCAL causes a GPF.
BPTI loads as expected (via new param), events from BPTI work well, exiting
after loading BPTI causes a GPF.
HTTP loads as expected, events from HTTP work well, exiting after loading HTTP
*does not* cause a GPF.
I can start and stop the ActiveX controls as many times as I like, no GPF.
The event handler which I have commented out causes GPFs, see my next e-mail.
I can't make destructors work automatically?
Regards
Alex
#include "hbclass.ch"
#include "windows.ch"
#include "guilib.ch"
function main()
local oMSCAL
local oBPTI
local oHTTP
local oMainWindow
INIT WINDOW oMainWindow MAIN TITLE "Hello ActiveX" ;
AT 200, 0 SIZE 420, 300
MENU OF oMainWindow
MENU TITLE "&File"
MENUITEM "Test MSCal" ACTION { || oMSCAL := HWGActiveX():New(
oMainWindow, "MSCAL.Calendar", 0, 0, 300, 300 ) }
MENUITEM "Change Date" ACTION { || oMSCAL:NextDay() }
MENUITEM "Kill MSCal" ACTION { || oMSCal:Distroy(), oMSCAL := nil }
SEPARATOR
MENUITEM "Test BPTI" ACTION { || oBPTI := HWGActiveX():New(
oMainWindow, "BPTI.CoBpTiX1", 0, 0, 300, 300,
"{F41DF7FB-5014-4859-B4DD-854A9D2143CC}" ) }
MENUITEM "Init BPTI" ACTION { || oBPTI:InitLan("127.0.0.1", 2000) }
MENUITEM "Disconnect BPTI" ACTION { || oBPTI:disconnect() }
MENUITEM "Kill BPTI" ACTION { || oBPTI:Distroy(), oBPTI := nil }
SEPARATOR
MENUITEM "HTTP" ACTION { || oHTTP := HWGActiveX():New( oMainWindow,
"http://www.seamonkey-project.org/start/", 0, 0, 300, 300 ) }
MENUITEM "Kill HTTP" ACTION { || oHTTP:Distroy(), oHTTP := nil }
SEPARATOR
MENUITEM "E&xit" ACTION { || EndWindow() }
ENDMENU
ENDMENU
ACTIVATE WINDOW oMainWindow
return nil
CLASS HWGActiveX FROM HControl
CLASS VAR winclass INIT "ACTIVEX"
DATA oOLE INIT nil
DATA hWnd INIT nil
METHOD New
METHOD Event
METHOD Distroy
ERROR HANDLER OnError
//DESTRUCTOR Destroy
//DESTRUCTOR Distroy
ENDCLASS
METHOD New( oWnd, cProgId, nTop, nLeft, nWidth, nHeight, cID ) CLASS HWGActiveX
local nStyle
nStyle := WS_CHILD + WS_VISIBLE + WS_CLIPCHILDREN
WIN_AxInit()
::hWnd := WAPI_CreateWindowEX( 0, "AtlAxWin", cProgId, nStyle, nLeft, nTop,
nWidth, nHeight, WIN_N2P( oWnd:handle ), 0 )
::oOLE := WIN_AxGetControl( ::hWnd, { | event, ... | ::Event( event, ... )
}, cID )
return self
// This causes a GPF !!!
//METHOD Event( event, ... ) CLASS HWGActiveX
//MsgInfo( HB_ValToStr( event ) )
//MsgInfo( HB_ValToStr( ... ) )
//return nil
METHOD Event( ... ) CLASS HWGActiveX
local cEvents := ""
local aEvents := { ... }
local nHandle
aEval(aEvents, { | xEvent | cEvents += HB_ValToStr( xEvent ) + ", " } )
if !file( "Event.Log" )
nHandle := fcreate( "Event.Log" )
else
nHandle := fopen( "Event.Log", 1 )
fseek( nHandle, 0, 2 )
endif
fwrite( nHandle, cEvents + chr( 13 ) + chr( 10 ) )
fclose( nHandle )
return nil
METHOD Distroy() CLASS HWGActiveX
MsgInfo( "Bye" )
DestroyWindow(WIN_P2N(::hWnd))
::hWnd := nil
return nil
METHOD OnError() CLASS HWGActiveX
return HB_ExecFromArray( ::oOLE, __GetMessage(), HB_AParams() )
_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour