* harbour/src/vm/runner.c
* do not execute EXIT procedures inside HB_HRBDO() call.
This modification allows to call HB_HRBDO() more then
once for the same HRB module without activating INIT
and EXIT procedures on each call. EXIT procedures will
be activated when HRB modules is unloaded or on HVM QUIT.
* harbour/contrib/hbwin/axcore.c
! cleaned casting
* contrib/hbwin/hbwapi.h
* contrib/hbwin/wapi_misc.c
* hbwapi_FileNameAtSystemDir() made static
+ hbwapi_LoadLibrarySystem() public function added
this is safe version of LoadLibrary() when loading Windows
system dlls. it will avoid dll hijacking vulnerability.
! deleted HB_EXPORT from hbwapi_t*() functions, they are
public to this lib due to UNICODE setting dependance
; TODO: make hbwapi_LoadLibrarySystem() effective also for WinCE,
for now it will not add any system path under this platform.
* contrib/hbwin/axcore.c
* contrib/hbwin/mapi.c
* contrib/hbwin/win_prn2.c
* contrib/hbwin/win_prn3.c
* contrib/hbwin/wapi_shellapi.c
! LoadLibrary() -> hbwapi_LoadLibrarySystem()
thus fixing dll hijack vulnerability
* src/rtl/hbzlibgz.c
! In block declaration in recent patch.
* utils/hbmk2/hbmk2.prg
! Regression in recent xhb patch.
* contrib/hbwin/axcore.c
! Format warning in trace.
* harbour/contrib/hbwin/axcore.c
* return NIL instead of runtime error if failed to obtain
connection point
; Please test
* harbour/src/rtl/fscopy.c
* added error check for read operation
* harbour/contrib/hbwin/axcore.c
! fixed double binding of ax event handler with two different
OLE pointer items - it was causing accessing freed or reused
by other things memory potentially with all possible bad side
effect.
Mindaugas, please verify me but I think that you forgot to remove
the old binding when you were adding the code I proposed and you
didn't leave it intentionally. Am I right?
- harbour/contrib/hbwin/oleinit.c
* removed old OLE initialization and cleanup code which was working
only for main thread
* harbour/contrib/hbwin/axcore.c
* harbour/contrib/hbwin/olecore.c
* harbour/contrib/hbwin/hbwin.hbp
* harbour/contrib/hbwin/hbolesrv.c
* harbour/contrib/hbwin/legacyco.c
+ added new OLE init/exit code which is thread oriented
WARNING: now OLE is initialized when thread executes first time
one of Harbour OLE functions not at application startup.
C code which uses OLE without calling any Harbour PRG
level OLE function should initialize OLE for each thread
calling hb_oleInit() - it's very fast function so it can
be called without noticeable overhead. Please remember
that such initialization should be done for each thread.
Please test it - I do not have access to MS-Windows computer now
so I cannot make any test myself.
* harbour/contrib/rddsql/sqlbase.c
+ added timestamp type support in PutValue RDD method
* harbour/contrib/hbwin/axcore.c
* commented out debug line to be in sync with commented out
function that it uses
* harbour/contrib/hbwin/axcore.c
! fixed CPP compilation by using compiler macros in method calls
* harbour/contrib/hbwin/hbwinole.h
* harbour/contrib/hbwin/axcore.c
* harbour/contrib/hbwin/olecore.c
+ implemented additional OLE destructors. Added Undavise() call
to :__hSink destructor. This fixes unresponsive OLE server app
behaviour after corresponding Harbour object is freed
; Code proposed by Przemek, some fixes applied
* harbour/src/rtl/gtstd/gtstd.c
* updated to compile with WinCE
* harbour/package/harbour.spec
* modified to work with new HBMK2 translations
* harbour/contrib/hbmzip/hbmzip.c
! fixed function order
* harbour/contrib/hbwin/axcore.c
* include <olectl.h>
! fixed buffer sizes in debug function
* removed trailing spaces and tabs
* harbour/contrib/hbwin/hbolesrv.c
* include <tchar.h> - for some compilers which do not make it
with OLE header files
* harbour/contrib/hbwin/axcore.c
+ added support for obtaining default callback event interface.
__AxRegisterHandler( pDisp, bHandler [, cIID ] ) parameter can be:
- event interface ID, i.e. "{...}";
- event interface name, ex., DWebBrowserEvents;
- otherwise default event interface is tried to obtain.
; NOTE: some regresions are possible. IDispatch is not the default
value for cIID. To force the previous behaviour, you should use
__AxRegisterHandler(,, "{00020420-0000-0000-C000-000000000046}"),
but I guess this should never be required.
; Don't ask me how I've wrote this code :)
* harbour/contrib/hbwin/tests/pdfcreat.prg
* changed to sync with new __AxRegisterHandler() behaviour
* harbour/contrib/hbwin/tests/testole.prg
+ added new Internet Explorer test to show OLE callback events
* harbour/contrib/hbwin/hbwinole.h
* harbour/contrib/hbwin/axcore.c
* harbour/contrib/hbwin/olecore.c
* harbour/contrib/hbwin/hbolesrv.c
+ added new 'HB_USHORT uiClass' parameter to hb_oleDispInvoke()
C function and updated corresponding code.
* harbour/src/compiler/harbour.y
* harbour/src/compiler/harbour.yyh
* harbour/src/compiler/harbour.yyc
* increase the maximum bison stack size limit
from 10000 items to 100000
* harbour/src/rtl/gtsln/kbsln.c
+ added support for HB_K_RESIZE
* harbour/contrib/hbwin/axcore.c
* harbour/contrib/hbwin/hbolesrv.c
* do not pass message ID (DISPID) as first parameter of codeblock
or function taken from hash array indexed by DISPIDs.
This modification restores old format, i.e. the one expected
by GTWVG code.
* harbour/contrib/hbwin/tests/olesrv1.prg
! comment
* harbour/contrib/hbwin/hbwinole.h
! fixed typo in added extern declarations
* harbour/contrib/hbwin/hbwinole.h
* harbour/contrib/hbwin/axcore.c
* harbour/contrib/hbwin/olecore.c
* harbour/contrib/hbwin/hbolesrv.c
+ added support for automatic conversion of HVM objects returned by
Harbour OLE server methods to OLE objects.
Please test. I cannot make any tests now.
; TODO: if it works then update this code to create some more general
version.
* harbour/src/rdd/dbf1.c
* minor cleanup
* harbour/include/hbapi.h
+ added new macro HB_IS_EVALITEM() - returns true for items which can
understand EVAL message i.e. CODEBLOCK and SYMBOL items.
* harbour/contrib/hbwin/axcore.c
* harbour/contrib/hbwin/olecore.c
* harbour/contrib/hbwin/hbwinole.h
* modified hb_oleDispInvoke() function to accept as additional
parameter pointer to HVM item instead of pointer to DISPID.
Such version is more universal.
* harbour/contrib/hbwin/hbwinole.h
* harbour/contrib/hbwin/olecore.c
+ added new C function hb_oleDispInvoke()
* harbour/contrib/hbwin/axcore.c
* use hb_oleDispInvoke() - please test if activex controls still work
correctly
* harbour/contrib/hbwin/axcore.c
* use hb_parstr_u16() instead of hb_mbtowc(hb_parc(n))
* harbour/src/rtl/hbzlib.c
* modified HB_ZUNCOMPRESSLEN(), current syntax is:
HB_ZUNCOMPRESSLEN( <cCompressedData>, [<@nResult>] )
-> <nUnCompressedDataLen> or -1 on error
* harbour/contrib/hbbzip2/hbbzip2.c
* modified HB_BZ2_UNCOMPRESSLEN(), current syntax is:
HB_BZ2_UNCOMPRESSLEN( <cCompressedData>, [<@nResult>] )
-> <nUnCompressedDataLen> or -1 on error
* harbour/contrib/hbwin/olecore.c
* harbour/contrib/hbwin/axcore.c
* changed error system name from OLE to WINOLE
* renumerated error subcodes starting from 1001
* harbour/include/hbwince.h
* harbour/contrib/hbwin/axcore.c
* moved HBTEXT macro definition from axcore.c to hbwince.h
* harbour/contrib/hbwin/wapi_shellapi.c
! use HBTEXT() macro for literal constants used as second parameter
of GetProcAddress(). It fixes WINCE builds where whole API uses
only UNICODE strings.
* harbour/src/vm/fm.c
! fixed typo - thanks to Bill for info
* harbour/contrib/hbwin/axcore.c
* minor cleanup
* harbour/contrib/hbwin/olecore.c
+ added support for VT_UNKNOWN variants translated to Harbour
OLE objects (WIN_OLEAUTO) - please test
* harbour/contrib/hbwin/axcore.c
* harbour/contrib/hbwin/olecore.c
* added OLE error code as OS code. Changed subsystem from BASE to OLE
; NOTE: function hb_errRT_OLE() is static and defined in both modules.
I'm not sure about the future parameters of the function, so,
I do not want to make it public.
* harbour/contrib/hbwin/legacycd.c
* harbour/contrib/hbwin/legacyco.c
* moved code inside #ifndef HB_WIN_LEGACY_LEVEL_OFF
* harbour/src/common/hbgete.c
* harbour/src/common/hbffind.c
* harbour/src/common/hbfsapi.c
* harbour/src/rtl/fstemp.c
* harbour/src/rtl/filesys.c
* harbour/src/rtl/diskspac.c
* harbour/src/rtl/disksphb.c
* harbour/src/rtl/net.c
! fixed memory leak reported by Pritpal
* cleanup some UNICODE conversions in Windows builds (mostly resolved
some macros when UNICODE macro is also explicitly used and cleaned
some buffers length passed to windows functions.
* removed unnecessary casting - if it's not necessary for some strange
reasons never cast strings to LP[C][TW]STR calling windows functions.
Such casting does not make any conversions but only hides potential
bugs.
* harbour/contrib/hbwin/axcore.c
* pacified warning
* contrib/hbwin/axcore.c
* Replaced duplicated constant with HB_SIZEOFARRAY() macro.
* utils/hbmk2/hbmk2.prg
+ C compiler autodetection will now make sure to skip compilers
where required Harbour core libraries aren't installed.
This autodetection is disabled when HB_LIB_INSTALL is set
manually and also when lib/<plat> dir is missing altogether,
assuming there is a single-compiler installation used in this
case (where such autodetection cannot work reliably).
When using -info option, a screen message is shown if
autodetected C compiler is skipped for above reason.
* harbour/include/hbapi.h
* harbour/src/vm/garbage.c
* added emulation for hb_gcAlloc() function covered by HB_LEGACY_LEVEL2
It will be removed in the future but now it gives a time for 3-rd party
code developers to updated existing code and switch to hb_gcAllocate()
* harbour/contrib/hbwin/hbwinole.h
* harbour/contrib/hbwin/olecore.c
+ added hb_oleItemGetCallBack() and hb_oleItemSetCallBack()
functions and support for user defined items bound with
OLE GC pointer item
* harbour/contrib/hbwin/axcore.c
* bound callback function with OLE item so it will be automatically
released with OLE object
* harbour/contrib/hbwin/tests/testax.prg
! destroy window
* enabled destructor
So far MS-Windows users haven't defined expected behavior for OLE code
so I took my own arbitrary decision and bound callback with OLE GC item.
When last copy of this item is cleared then callback is unregistered
and freed. It means that it can happen before AX window is closed.
If you prefer different behavior then please clearly define what
you need and I can try to change existing code.
Now testax.prg should cleanly execute without any GPF traps and
resource leaks.
* harbour/contrib/hbwin/axcore.c
! fixed wrongly initialized reference counter in AX control.
Now when AX Window is closed and all .prg references to OLE
are cleared pSink is released.
* harbour/src/rdd/dbfnsx/dbfnsx1.c
! fixed bug reported by Jaroslav Janik (many thanks) - if index FOR
expression excluded all records from non empty table then root page
was not initialized and DBFNSX generated corruption RTE.
* harbour/utils/hbi18n/hbi18n.prg
* set default GT to CGI
* harbour/src/common/hbgete.c
! fixed memory leak in non UNICODE Windows hb_getenv_buffer()
! add C stack buffers to eliminate memory allocation in UNICODE
Windows hb_getenv_buffer() - they are used if envvar name and
passed buffer are not too large. It fixes HB_FM_STATISTICS
Windows builds.
* harbour/contrib/hbwin/wapi_winuser.c
+ added WAPI_DESTROYWINDOW function
* harbour/contrib/xhb/traceprg.prg
* harbour/contrib/xhb/hbcompat.ch
! fixed typo in TraceLog() condition - was always disabled
+ added emulation for xHarbour Set( _SET_TRACE* [, <params,...> ] )
settings
* harbour/src/vm/hvmall.c
! define _GNU_SOURCE to fix compilation with HB_FM_DL_ALLOC in Linux
builds
* harbour/include/hbdefs.h
* declare HB_FOFFSET as LONG instead of LONGLONG on platforms where
LONG is 64bit integer to be compatible with C RTL file API
* harbour/src/vm/maindllh.c
* harbour/src/vm/maindllp.c
* harbour/contrib/hbct/ctstr.c
! casting in HB_TRACE() massages
* harbour/include/hbapi.h
* harbour/include/hbapiitm.h
* harbour/src/vm/arrays.c
* harbour/src/vm/hashes.c
* harbour/src/vm/itemapi.c
+ added hb_arrayCloneTo(), hb_hashCloneTo(), hb_itemCloneTo()
* harbour/src/vm/arrayshb.c
* harbour/src/vm/classes.c
* harbour/src/vm/hashes.c
* harbour/src/vm/hashfunc.c
* harbour/src/vm/hvm.c
% use hb_*CloneTo() instead of hb_*Clone()
* harbour/include/hbapi.h
* harbour/src/vm/garbage.c
- removed hb_gcRegisterSweep() function and support for user defined
sweep mark functions in GC blocks
- removed hb_gcAlloc() function
+ added new function hb_gcAllocate() which work in similar way to removed
hb_gcAlloc() function but it accepts as second parameter HB_GC_FUNCS
structure instead of HB_GARBAGE_FUNC_PTR and returned GC blocks are
locked so programmer does not have to worry that they can be removed
by GC.
+ added new internal function hb_gcAllocRaw() which works like
hb_gcAllocate() but returned GC blocks are not locked. They can
be used only in HVM in places well known that cannot activate
automatic GC scan. It should not be used by 3-rd party code.
* harbour/include/hbapi.h
* harbour/include/hbapiitm.h
* harbour/src/vm/extend.c
* harbour/src/vm/itemapi.c
* modified hb_parptrGC(), hb_parvptrGC(), hb_arrayGetPtrGC(),
hb_itemGetPtrGC() functions to use HB_GC_FUNCS structure instead
of HB_GARBAGE_FUNC_PTR
* modified hb_itemPutPtrGC() and indirectly related functions like
hb_arraySetPtrGC() or hb_stor[v]ptrGC() to automatically unlock
passed GC block just after attaching to known HVM item.
* harbour/include/hbregex.h
* harbour/src/rtl/hbregexc.c
* declare GC block detractor as static function
+ added hb_regexIs() function
* updated to work with new GC API
* removed unnecessary in new GC API hb_gcLock() call - GC blocks
allocated by hb_gcAllocate() are already locked and they mustn't
be locked explicitly by programmer (until he does not exactly knows
what he does ;))
* harbour/src/rtl/hbregex.c
* use hb_regexIs() instead of using regex GC destructor
* removed unnecessary in new GC API hb_gcUnlock() call - GC blocks
stored in HB_IT_POINTER item are automatically unlocked
* harbour/src/rtl/hbinet.c
* harbour/contrib/hbcurl/hbcurl.c
* updated to work with new GC API
% unlock items storing callback codeblocks and use GC mark functions
to mark them as used in GC passes
* harbour/src/pp/pplib.c
* harbour/src/vm/runner.c
* harbour/src/vm/codebloc.c
* harbour/src/vm/hashes.c
* harbour/src/vm/hvm.c
* harbour/src/vm/arrays.c
* harbour/src/vm/thread.c
* harbour/src/vm/dynlibhb.c
* harbour/src/rtl/hbzlibgz.c
* harbour/src/rtl/hbregex.c
* harbour/src/rtl/hbregexc.c
* harbour/src/rtl/hbgtcore.c
* harbour/src/rtl/hbi18n1.c
* harbour/src/rdd/wacore.c
* harbour/contrib/hbsqlit3/hbsqlit3.c
* harbour/contrib/hbnetio/netiosrv.c
* harbour/contrib/hbmzip/hbmzip.c
* harbour/contrib/hbhpdf/harupdf.c
* harbour/contrib/hbwin/olecore.c
* harbour/contrib/hbwin/win_prn1.c
* harbour/contrib/hbwin/win_dll.c
* updated code which was using hb_gcAlloc() to work with new GC API.
* harbour/contrib/hbwin/axcore.c
* updated syntax description
TODO: update contrib code: hbqt, hbssl, ... to work with new GC API.
I would like to ask authors of above libraries to do it.
TODO: defined when and how we should free AX control and user callback
handler and update AX code to respect new definition
* harbour/contrib/hbwin/axcore.c
! removed the hack I added in previous commit with interface enumeration
which was accepting any interface without validation its ID.
+ added 3-rd parameter to __AXREGISTERHANDLER() as Mindaugas proposed.
Now this function has the following syntax:
__AXREGISTERHANDLER( <pDisp>, <bHandler> | <hHandlers>
[, <cIID> ] ) -> <pDisp>
default value for <cIID> is IID_IDispatch.
* harbour/contrib/hbwin/axcore.c
+ added alternative method to look for connection point if
FindConnectionPoint() method fails when new AX control is created.
Such method is used by HWGUI and GTWVG.
Mindaugas please verify it, windows users please test it.
* harbour/contrib/hbwin/axcore.c
* added automatic activex initialization to __AXDOVERB().
__AXGETCONTROL()/hb_oleAxControlNew() also make automatic
initialization so it's not necessary to explicitly call
WIN_AXINIT()/hb_oleAxInit()
* harbour/contrib/rddads/readme.txt
! updated ADS* RDD usage description which contain very old information
which stop to be valid many years ago, i.e. user code should not call
rddRegister().
* harbour/contrib/rddads/rddads.h
* harbour/contrib/rddads/ads1.c
! fixed SELF_RESETREL() macro
! changed uiRecordLen to ulRecordLen - ADT tables can have records
longer then 64KB
! fixed size of alias buffer passed to AdsGetTableAlias()
* harbour/contrib/rddads/adsx.c
* modified ADSXAREA structure definition to directly inherit from
ADSAREA instead of manual redefining all of its fields.
* contrib/hbwin/axcore.c
+ My previous change reapplied after it has been overwritten/lost
by previous commit.
Pritpal, pls verify your workflow, this was a very small change
but it's just out of luck I noticed it has been undone and it
could be something important in another case. Please 'svn update'
before committing and edit files directly in your sandbox. I'm
writing this because such lost committed modification happened
already a few times in the past. Thank you.
* config/global.mk
+ Including optional config/conf.mk file.
Such file may be created by configure session.
* contrib/gtwvg/wvgax.prg
* contrib/gtwvg/wvgsink.c
! Code parts used fron axcore.c, deleted from these files.
* contrib/hbwin/axcore.c
+ __AXDOVERB(), a very important function for in-process active-x controls
* config/common/watcom.mk
* config/win/bcc.mk
% Yet another experiment, maybe it won't have any bad side
effects: For compilers where $(AR) command supports differential
command (bcc and watcom), we're only passing the list
of changed objects instead of all of them. Should be
much more efficient for incremental builds.
* config/globsh.mk
* config/instsh.mk
! Reset nt shell dirbase and clean rules to previous state
(using 'if [not] exist' instead of $(wildcard)).
New solution had several side effects. Some of them easy
understandable, some others outright mysterious, so more
research will be needed here. Some experiences:
- the whole rule is evaluated before starting to execute the resulting commands.
- multiple rules with the same target are merged before evaluating them
- $(wildcard) is tricky with dirs, especially ones with spaces
- if we use conditional lines ($if()) and all lines are ruled out,
- the rule will become empty, igniting a confusing GNU Make message.
- strange behavior when using 'CLEAN INSTALL'
- $(RM) stayed at default value in one /source/pp/Makefile rule.
; TOFIX: dos/os2 rules are still slightly wrong because of similar problems,
and there 'if [not] exist' isn't a working option either, so
we will need to think about something, like splitting clean
rules to two levels internally, or more make function tricks.
* config/readme.txt
+ config/os2-make.exe
* INSTALL
+ Added os2 GNU Make binary (3.81 static build). Just to be in
sync with other non-*nix platforms. Maybe it will be removed or
renamed.
* config/globsh.mk
+ Minor wording change.
* contrib/hbwin/axcore.c
* Very minor formatting.
- make_gnu_xmingw.sh
- make_gnu_xmingwce.sh
% Deleted two cross-build starter scripts. Their functionality
has been largely moved into our GNU Make system.
Please use these commands for equivalent functionality:
[g]make HB_ARCHITECTURE=[win|wce]
; NOTE: Comments are still welcome regarding experiences
especially from original authors of these scripts.
Maybe I missed something. $(TARGET) var support.
Please comment.
* harbour/contrib/hbwin/axcore.c
* do not pass event number as 1-st parameter to user handlers
taken from array indexed by event numbers - it's not necessary
to repeat it.
* updated RT error handlers
* harbour/config/global.mk
* extended MS-DOS detection
* harbour/bin/hb-func.sh
! do not strip system libraries in windows shared linking - unused
ones are not attached to harbour*.dll
* harbour/contrib/hbwin/hbwinole.h
* harbour/contrib/hbwin/olecore.c
+ added support to pass strings with embedded chr(0) characters
+ added new public C function:
IDispatch* hb_oleItemGet( PHB_ITEM pItem );
it extracts IDispatch* pointer from Harbour OLE pointer item.
+ added new public C function:
void hb_oleVariantUpdate( VARIANT* pVariant, PHB_ITEM pItem );
it updates pVariant structure using values from given pointer item
(used to update parameter passed by reference to activex event handler)
% optimized some code
* harbour/contrib/hbwin/hbwinole.h
* harbour/contrib/hbwin/axcore.c
+ added new public C function:
BOOL hb_oleAxInit( void );
+ added new public C function:
PHB_ITEM hb_oleAxControlNew( PHB_ITEM pItem, HWND hWnd );
It's C function with the same functionality as __AXGETCONTROL()
! allocate ISink structure using hb_xgrab() not hb_gcAlloc()
! initialize ISink reference counter to 0
! fixed Release() method to free all allocated resources when
reference counter reach 0
* return new Active-X control as Harbour OLE item pointer.
Warning !!! hb_parptr() and hb_itemGetPtr() do not return valid
pointer for controls created by hb_oleAxControlNew()/__AXGETCONTROL()
Use hb_oleItemGet() and hb_oleParam() to extract pointer to IDispatch
Please update existing code which used __AXGETCONTROL() pointers
at C level.
- removed not longer used hb_sink_destructor
! removed WIN_AXRELEASEOBJECT() - this function breaks reference counters
used by OLE object which needs strict updating to avoid memory leaks
(not freed OLE object) or GPF traps (accessing freed object)
+ extended Invoke() method to update OLE parameters passed by reference.
+ accept as event handler hash arrays indexed by event numbers and
values with codeblocks or function pointers. Similar functionality
exists in HWGUI when it's compiled with __USEHASHEVENTS macro and
it's much better then passing two arrays.
% optimized some code
Please test above Active-X modifications. I'm not MS-Windows user so
they have to be verified by real MS-Windows developers.
They should fix problems with memory leaks (OLE objects where never
freed) or GPF traps in C code which tired to strictly manage reference
counters.
To C programmers: if you increase reference counter to activex control
(AddRef()) then you have to release it (Release()) or activex control
will never be freed even after clearing all .prg references. It's
released only when last reference owner calls Release() method so now
valid code can keep references to IDispatch at C level without any
problem but it also means that this code can exploit problems in
existing wrong code.
* harbour/contrib/hbwin/axcore.c
! fixed GPF on ActiveX application exit caused by invalid
AtlAxWinTerm() call.
; It's inline function and it does not exists in atl.dll
; MSDN says:
When Do I Need to Call AtlAxWinTerm?
AtlAxWinTerm unregisters the "AtlAxWin7" window class. You should
call this function... If don't call this function, the window class
will be unregistered automatically when the process terminates.
; Thanks Toninho for self contained 3 lines GPF sample without
FWH, gtwvg, etc!
* utils/hbmk2/hbmk2.prg
% -undef/-D Harbour options will be reduced in cross-compilation
scenarios. If a __PLATFORM__* value appears as both -undef and
-D it will be omitted. This results in smaller command line,
plus works around this warning:
'Warning W0001 Redefinition or duplicate definition of #define __PLATFORM__WINDOWS'
when using the embedded compiler (doesn't seem to happen with
external compiler).
+ Added autodetection for mingw64 and mingwarm compilers. It should
now be enough to use -arch=wce on the command line to initiate a
WinCE cross-build if the compiler is setup in the path or using
the embedded installation. So it's recommended to use -arch=wce
instead of -arch=mingwarm from now on. For mingw64 builds, no
extra switch is needed, if in the PATH, it will be autodetected.
! Added Harbour command to Harbour command line shown in case of
error.
* contrib/gtwvg/wvgcuig.c
! Fixed one GCC warning. I'm not sure if this is a correct one,
my only goal was to make the warning disappear and to define
a previously undefined case.
; TOFIX: This warning still remains, and indicates unsafe code:
wvgsink.c:516: warning: dereferencing pointer 'hSink.33' does break strict-aliasing rules
* contrib/gtwvg/tests/demoxbp.prg
* contrib/gtwvg/tests/demowvg.prg
! Fixed hard-wired paths, so that now some more samples
work regardless of Harbour installation dir.
; NOTE: Never use hard-wired absolute paths inside any Harbour
component. We now have hb_DirBase(), please make use of it.
; NOTE: For me most of the samples still don't work, AX toolbar icons
don't appear, and most of the AX samples fail with an unclosable
window.
* contrib/hbwin/axcore.c
* contrib/gtwvg/wvgsink.c
* Moved recently added extra AX functions to GTWVG.
* Kept optimized, hbwin version of HB_AX_ATLCREATEWINDOW().
* Others renamed and commented:
WIN_AXGETUNKNOWN() -> WVG_AXGETUNKNOWN()
WIN_AXSETVERB -> WVG_AXDOVERB()
! HB_AX_ATLSETVERB() now accepts HWND pointers, too.
! HB_AX_ATLAXGETCONTROL() now accepts HWND pointers, too.
; TOFIX: GTWVG uses HB_AX_* prefix to denote AX function, while
these should be named WVG_AX*().
; TODO: Probably the full content, or at least the universally
useful portion of wvgsink.c should eventually go to hbwin,
but all these functions need further cleanups,
and they also have to be renamed. I don't know what we
should stay compatible with so it's difficult to make
any moves. Some test code showing the usefulness of
these function would be probably help.
* INSTALL
* Minor cleanups to prev.
* contrib/hbwin/axcore.c
* Minor formatting.
% Variable scopes adjusted.
% WIN_AXCREATEWINDOW() optimized.
- Deleted ToOutDebug() stuff. Please use TRACE() subsystem for
these parts.
; NOTE: I'm note sure we should have a WIN_AXCREATEWINDOW() function
there. Rather, we should have a WAPI_CREATEWINDOWEX() function
which serves the same purpose, but in a generic manner, also
usable for AX purposes. Is there anything against this idea?
* utils/hbformat/hbformat.prg
* contrib/gtwvg/wvgclass.prg
* contrib/gtwvg/wvgscrlb.prg
* contrib/gtwvg/wvgdlg.prg
* contrib/gtwvg/wvgpaint.prg
* contrib/gtwvg/wvgdarea.prg
* contrib/gtwvg/wvgmle.prg
* contrib/gtwvg/wvglistb.prg
* contrib/gtwvg/wvgtoolb.prg
* contrib/gtwvg/wvgpushb.prg
* contrib/gtwvg/wvgsle.prg
* contrib/gtwvg/wvgtreev.prg
* contrib/gtwvg/tests/demoxbp.prg
* contrib/gtwvg/tests/demowvg.prg
* contrib/gtwvg/wvgwnd.prg
* contrib/gtwvg/wvgcrt.prg
* contrib/gtwvg/wvgdatar.prg
* contrib/gtwvg/wvgradio.prg
* contrib/gtwvg/wvgsysw.prg
* contrib/gtwvg/wvgmenub.prg
* contrib/gtwvg/wvgphdlr.prg
* contrib/gtwvg/wvgbitmp.prg
* contrib/gtwvg/wvgcheck.prg
* contrib/gtwvg/wvgstatb.prg
* contrib/gtwvg/wvgstatc.prg
* contrib/gtwvg/wvghtmlv.prg
* contrib/gtwvg/wincback.prg
* contrib/gtwvg/wvgtabpg.prg
* contrib/gtwvg/wvg3stat.prg
* contrib/gtwvg/wvgcombo.prg
* Some formatting. (' -> " and #include lines)
* contrib/hbwin/axcore.c
+ __XAXREGISTERHANDLER()
An extension of __AXREGISTERHANDLER() where connection points are
enumerated instead of finding - many OLE's have more than one interface -
a practical discovery. Mindaugas please check if it can be the default.
+ WIN_AXATLGETCONTROL() - Normalizing PRG calling convension.
+ WIN_AXCREATEWINDOW() - Can be dropped later.
+ WIN_AXGETUNKNOWN() - Useful in many situations.
+ WIN_AXSETVERB() - ---^---
+ WIN_AXRELEASEOBJECT() - Experimental
Note that these function are primarily aimed at making experiments
via gtwvg/winsink.c interface and after testings can be moved or removed.
/* Mindaugas, I receive a GPF when terminating the appln.
Also I cannot see that ISink is ever subject to garbase collection.
And "count" never returns to 0. I must be missing something, but...
*/