vbRichClient changes since v5.00.0068: version 6.0.0.15 - cWebView2: now using *App-specific* UserData-Folders, in case the UserData-Param was left out in the Bind-Method - cSimplePSD: a bit of hardening, to properly cooperate with a "wider range of PSD-Files" - RC6Widgets got a new cwAlphaImg Widget version 6.0.0.14 - cWebView2: restored the former behaviour of AddObject/COM-support (as it was in 6.0.0.12) version 6.0.0.13 - updated cairo_sqlite to newest SQLite-Version: 3.42.0 - cWebView2: added the (cancellable) NavigationStarting-Event (to allow for userdefined URI-Navigation WhiteListing/BlackListing) - cWebView2: added the (cancellable) WebResourceRequested-Event (to allow for user-permitted ResourceLoading of Images, Videos, Sounds, etc.) - cWebView2: prevented "vb-HostObject not found" errors in the console of the DevTools-Window - added a new Class: cSimplePSD, to parse Alpha-Layers into enumerable cairo-Surfaces directly from PhotoShop-*.psd files version 6.0.0.12 - another attempt to make cWebView2-Loading-Behaviour more compatible with other Host-Processes than VB6-compiled executables (now passing manually allocated WStrings instead of StrPtr(to BSTR) in the ICoreWebView2EnvironmentOptions-Interface) - fix and sanity-check for the first (StdDev) parameter of the cCairoSurface.GaussianBlur method (now returning just an unchanged copy of the original surface, instead of crashing) version 6.0.0.11 - update of this distribution-packages MS-"WebView2Loader.dll" (to newest version 1.0.1462.37) - attempt to improve cWebView2-Loading-Behaviour in the Bind-Method (by determining the "compatible-version" via GetAvailableCoreWebView2BrowserVersionString-FlatAPI) version 6.0.0.10 - updated cairo_sqlite to newest SQLite-Version: 3.39.2 - introduced a new cCursor-Class for more lightweight "Stepping" through SQLite-Resultsets... (usage basically like a CmdObject - followed by: Do While cCursor.Step: V = cCursor.ColVal(idx): Loop) - added new Events to cWebView2 (WebResourceResponseReceived, FrameCreated, DownloadStarting) - ... as well as the new (Read/Write) Setting-Props: - UserAgent, AreBrowserAcceleratorKeysEnabled, IsPasswordAutosaveEnabled, - IsGeneralAutofillEnabled, IsPinchZoomEnabled, IsSwipeNavigationEnabled - cArrayList.BindToArray now allows also "external Bindings" (Mappings, to predefined - normal VB-Arrays) - cFSO.GetFileHash accepts now either: "normal FileNames" - or alternatively cStream-Objects - the cCollection.SerializeToJson-functionality now also supports "leaf-members" of type: - cRecordset, cArrayList, cSortedDictionary version: 6.0.0.9 - introduced new Class: cBigInt (available via New_c.BigInt(InitValue) - introduced new Class: cArrInfo (available via New_c.ArrInfo) - introduced new Class: cMultiFrameImg (for decoding of *.tif, animated *.gif and *.webp + *.heic on Win10) - BugFix in cDirList.DirWatchStart (when used with Paths to Network-Drives or -Shares) (ReceiveBuffer-fallback to max 64kB in case of Shares was not working properly) - cCairoPattern now contains wrapper-methods, covering the cairo-Mesh-functionality - cWebServer (better recognized utf8-text-transport by specifying "text/html; charset=utf-8" - instead of just: "text/html" in the default-text-response Content-Type header) - cConnection was enhanced with two new error-related Methods (https://www.sqlite.org/c3ref/errcode.html): LastDBErrCode(Optional ByVal GetExtendedCode As Boolean) As Long GetSqliteErrStr(ByVal ResultCode As Long) As String - cCrypt: got two new Methods (HexEncode, HexDecode) - cWebView2 enhancements: the Class-wrapper now informs the chromium-subsystem about its current TopLevel-Window-Position new Method: NavigateWithWebResourceRequest(ByVal URI As String, Optional ByVal Method As String = "GET", _ Optional ByVal Headers_CrLfSeparated As String, Optional ContentStream As cStream, _ Optional ByVal SecondsToWaitForRequestComplete As Double = 8) version: 6.0.0.8 - cWidgetForm: new TimerInterval-Prop + new Timer-Event (for more compatibility with VBA-UserForms) - new cUTC-Class for TimeConversions (reachable via New_c.UTC) - new convenience-method cCairoContext.SaveAndTransform version: 6.0.0.7 - added a new optional Param (WithoutExtension As Boolean = False) to cFSO.GetFileNameFromFullPath - added a new cVidCap-Class (for easy capturing of Frames from Camera-Devices) - added 2 new Properties to cCSV (ReplaceDoubledQuotChars and ExpectedEncoding) and fixed a small glitch (which was only happening when a quoted textcell ended with sequence: "..."" ") - cWidgetRoot: avoid SubPixel-precise placements of moving Widgets again (for the sake of sharp Font-rendering) (introduced this in version 6.0.0.4 as a rendering-optimization for "zoomed Widgets") version: 6.0.0.6 - added new Optional Constructor-Params to: New_c.MemDB(...), .CSV(...) and .SVG(...) - added .Add and .AddNL Aliases to cStringBuilder - added cFSO.GetFileNameWithoutExtension - fixed inconsistent NewLine-reporting-behaviour on cCSV (only happened in "FullRowScan-Mode" for vbLF and vbCr) (FullRowScanMode can now be ensured already at construction-time via: New_c.CSV(vbNullChar, vbNullChar) - added an IStreamUnk Getter-method to cStream (to make it usable outside, in conjunction with Win32-APIs) - fixed an issue with adBigInt Field-Values when imported via cConnection.CreateTableFromAdoRs version: 6.0.0.5 - fix for ZStd-compression-methods (which are now again exported as _stdcall in cairo_sqlite.dll, instead of the prior _cdecl-exports) ... thanks to Jason, who reported this - fix in cWebView2, now accepting userdefined FixedRuntime-Folders again - in the BindTo-method, in case the FixedRuntime was not sitting behind \Programs x86\ ...(reason: new WebView2Loaders now expect a prefilled 'TargetCompatibleBrowserVersion' in the config-object, which was missing in this case) version: 6.0.0.4 - updated SQLite to SQLite-Version 3.34.1 - cConnection now supports different codecs for DB-encryption (defaulting to CODEC_TYPE_RC4 for backward-compatibility) - cFSO.MultiFileDelete ... made the second (not really useful) Param DstPathOrArrayOrCollection an Optional one (to not break code of earlier versions) - cFSO ... GetPathNameFromFullPath, GetFileNameFromFullPath, GetFileExtension now return String explicitely (and not Variant ... also ensured, that GetFileExtension now enforces a lower-case returnvalue) - removed cRPCConnection.mCompression-Property from the Public Interface (making it a Private Var) - cRPCConnection now has a PublicKey-Property (the workaround via Password-Prop was left in place though) - cCairoContext... small fix for restoring the previous (color)pattern after a TextOutput in a different color (this was introduced in 6.0.0.3 .. the behaviour should be, that TextColor and "last set color-pattern" are independent) version: 6.0.0.3 - added a new Version-Property to New_c (cConstructor) - added a new cEasing-Class, as well as a new Animate-Method on cWidgetBase and cWidgetForm - performance-optimization in Method: cCairoContext.RenderSurfaceContent (thanks to Colin, for pointing that out) - changed Type of the cConnection.Synchronous-Property from Boolean to an Enum (taking care of backward-compatibility internally, in case someone passes a True=-1) - added cConnection.GetRs and .ExecCmd for Parameter-Supporting Query and Command-OneLiners - added new cChart and cChartAxis Classes for simple Chart-Rendering - added a new cwCanvas-WidgetClass (including built-in ControlPoint-support for easier Demo-Scenarios) - added a new Method cCairoPattern.CenterCoordSys - added a new Method cCairo.CreateCheckerPattern (to make this a OneLiner for creating BackGrounds in Alpha-Demos) - added a new cWidgetForm-Event: ResizeWithDimensionsDIP ... (incorporating the current ZoomFactor of the Form) (also added were new ScaleWidthDIP and ScaleHeightDIP properties) - cDisplay now has additional DPI, Zoom and TwipsPerPixelX/Y Properties - directly included cwCanvas-Widget into RC6.dll version: 6.0.0.2 - Implemented Touch-Event support on cWidgetBase (which has to be enabled via W-ImplementsTouchMessages = True) - Param-enhancements on the NewWindowRequested-Event of cWebView2 (which now has also: ..., URI As String, as well as NewWindowFeatures As cCollection <- as a JSON-Object) - new version of the main-satellite-(flat)-dll -> now named 'cairo_sqlite.dll' (upgrading the quite old cairo-sources to the newest version, and along with it, also its other dependencies as libPng, zlib, sqlite, etc. in their newest versions) - new Class cWebView2 (which offers a binding to the new MS-Edge-Chromium-WebControl)... the wrapped new (and small) "flat-dll" which is now included in the BaseDlls here, is named: 'WebView2Loader.dll' Please note, that this loader-dll expects an "evergreen" WebView-install one has to ensure beforehand, available at this official MS-download-link: https://go.microsoft.com/fwlink/p/?LinkId=2124703 - new Class cHashD (as a fast, hash-based Key/Value-pair container-object) - new Dynamic Object (instantiatable via New_c.DynObj) with support for dynamic Properties and functions Version: 5.0.79 - Fix for the (rarely used) cCollection.ItemExists-Method when comparing StringContent of added Items Thanks to Wolfgang (and Jason Peter Brown), for pointing this out (supplying the needed fix already) - Fix in cSelectCommand when parsing named Parameters which don't have enough whitespace around them, and are then followed by SQLites String-Concat-Operator (||) e.g. "SELECT @x||'/'||@y;" (which didn't work before, but now does) instead of: "SELECT @x ||'/'||@y;" (which did work before) Thanks to Wolfgang Enzinger for detecting this Version: 5.0.78 - MemLeak-Fix for the cStream.GetSize-Method (now not requesting the STATSTG.pwcsName member anymore) Thanks to Jason Peter Brown, for detecting this (it became obvious only with a high count of repeated FileStream-requests)... Version: 5.0.77 - BugFix for the old (GDI-related) cDC-Class (in the DrawLine-Method, which did not pass a Pointer correctly) Version: 5.0.76 - cActiveScript (in "JScript9"-mode) is now properly switched into the more advanced SCRIPTLANGUAGEVERSION_5_8 (which then supports e.g. the built-in JSON-object) Version: 5.0.75 - IEnumerable-support (via New_c.EnumerateOn(...)) now suppresses Interface-casting-attempts from IEnumVariants-IUnknown to IDispatch - cArrayList now comes with added For Each support - Finally, the functionality of the vbFriendlyInterfaces-Dll is now integrated into the RC5, and available via New_c.VBI ...original code and demos at: http://www.vbforums.com/showthread.php?807263-VB6-LightWeight-COM-and-vbFriendly-BaseInterfaces The slightly adapted Demos for the RC5.VBI-support are available here: http://vbRichClient.com/Downloads/TutorialApps_RC5.VBI.zip Version: 5.0.74 - cWidgetForm.StartupPosition = vbStartUpOwner can now be used, to center a TopLevel-Form on the OwnerForm which started the ChildForm - Optimizations in the Startup/Show-phase of cWidgetForms (less flickering) - there's now also less flickering (on the OwnerForm(s) underneath) after Modal-Forms were closed Version: 5.0.73 - cWidgetForm.StartupPosition = vbStartUpScreen can now be used, to center a TopLevel-Form on the current Monitor - security-related: the RPCServer now raises a serverside-error, when the specified Dll-Filename does not end with '.dll' Version: 5.0.72 - not really a fix, but instead a "behaviour change" of the recently fixed cArrayList.Queue/DeQueue (switching back to the former behaviour of: "adding to the end, removing from the front", when it comes to queueing) ... both versions (5.0.71 and this one) are still bugfree (queueing-wise), ... ... but the behaviour-change introduced into 5.0.71 was "adding to the front, removing from the end" ... (which caused different element-sequences within the ArrayList index-wise) Version: 5.0.71 - fixed incorrect behaviour with cArrayList.Queue/DeQueue (this worked before IIRC, so this error was in all likelihood introduced as a side-effect with the changes on Pop/Dequeue in version 5.0.68) Version: 5.0.70 - fixed a problem with cWidgetRoot.ActiveWidget (which only happens when cWidgetRoot.DesignMode is True) Version: 5.0.69 - hardening with regards to "making copies of empty VariantArrays" (affected were cConstructor.vtblCall and cRecordset.GetRows in case of "no Records")