Author Topic: WinLIFT 64-bit 7.00-8.00  (Read 52352 times)

Patrice Terrier

  • Administrator
  • *****
  • Posts: 2022
    • zapsolution
WinLIFT 64-bit 7.00-8.00
« on: December 17, 2023, 06:21:32 pm »
WinLIFT 7.00 in action skinning a PureBasic application.

This version is able to change the skin theme on the fly,
it supports ImageList when available, and/or specific TAG to display images in a ListView.




WinLIFT 7.00 is available in either 32 or 64-bit,
as a (paypal) donate-ware Win32 DLL addon.


Note: WinLIFT 7.00 uses only UNICODE (WCHAR/WSTRINGZ) strings

The 64-bit version is attached to this post with:

Busi (folder with corresponding images theme components)
Busi.sks (Skin file parameters)
WinLIFT.h (C++ header file include)
WinLIFT64.lib (link file)
WinLIFT64.dll (the 64-bit DLL)
...
« Last Edit: August 03, 2026, 07:03:03 pm by Patrice Terrier »
Patrice
(Always working with the latest Windows version available...)

Patrice Terrier

  • Administrator
  • *****
  • Posts: 2022
    • zapsolution
WinLIFT 64-bit 7.00, new API
« Reply #1 on: January 09, 2024, 01:17:49 pm »
IMPORTANT!
When using multiple skinned windows in a single project,
the main window must always be skinned first.

New constants used in Version 7.00

To be used with the new skAnchorID API

const int AT_TOP         = 1;
const int AT_LEFT        = 2;
const int AT_RIGHT       = 4;
const int AT_BOTTOM      = 8;
const int AT_TOPLEFT     = 3;
const int AT_TOPRIGHT    = 5;
const int AT_BOTTOMLEFT  = 10;
const int AT_BOTTOMRIGHT = 12;
const int AT_ALL         = 15;

const int DOCK_TOP       = 256;
const int DOCK_LEFT      = 512;
const int DOCK_RIGHT     = 1024;
const int DOCK_BOTTOM    = 2048;
const int DOCK_FILL      = 3840;


New Version 7.00 APIs

BOOL skAnchorID(HWND hWnd, UINT uID, UINT uFlag)
To anchor a specific control uID within its hWnd parent container,
using any or a combination of the above constant uFlag.

BOOL skAnchorInit(HWND hWnd)
Init/Reset Anchor properties

BOOL skAnchorResize(HWND hWnd, BOOL bRepaint)
Resize the child controls, if ever you need to resize the main hWnd window yourself.

BOOL skAnchorRemoveAll(HWND hWnd)
Remove (delete) all anchor properties for the specific hWnd handle.

long skUseAnchorMode(HWND hWnd, IN long UseMode)
Use one of the exclusive constant below.

const int CANCELMODE     = -1;
const int ANCHORMODE     = 32;
const int HOMOTHETIC     = 64;


When using ANCHORMODE, it must be used after you setup all the individual skAnchorID properties.

HOMOTHETIC is exclusive, and couldn't be inter-mixed with other properties.
All childs controls belonging to hWnd are resized using an homothetic float ratio.
The original float ratio = 1.0f, that is the size of the window when calling skSkinWindow.
(This size is also used to compute the minimum WM_GETMINMAXINFO track size).

void skSetListViewImage(WCHAR* FullPathName, long ReadWriteFlag)
A ListViewImage is a single .png bitmap composed of different icons, each one must fit within a square size being the same for all images.
To be used in conjunction with a #{TAG} message, where TAG could be any letter in the range A-Z. The TAG must be inserted directly into the string used for a specific cell.
Example of image list:


void skSetToolBarImage(WCHAR* FullPathName, long ReadWriteFlag)
Same as above but for a ToolBar control.
The TAG must be inserted directly into each tool text name.

void skGetWindowSize(IN HWND hWnd, OUT long &x, OUT long &y, OUT long &WindowWidth, OUT long &WindowHeight)
The returned parameters are converted from WinLIFT SystemMetrics into standard window coordinates, in case you want to restore the window size and location in a next session.

BOOL skSkinChange(IN WCHAR* zSkinFile)
Change the skin theme on the fly, using a full qualified path to a WinLIFT .sks file.

WinLIFT.chm
The previous WinLIFT.chm file from version 4.87 is attached to this post, the existing API have been preserved, except that all strings in Version 7.00 require the use of UNICODE (WCHAR, WSTRINGZ).
« Last Edit: February 04, 2024, 06:22:45 pm by Patrice Terrier »
Patrice
(Always working with the latest Windows version available...)

Patrice Terrier

  • Administrator
  • *****
  • Posts: 2022
    • zapsolution
Re: WinLIFT 64-bit 7.00 (is attached to this post)
« Reply #2 on: June 20, 2025, 02:11:16 pm »
The Release_7.00.7z archive, attached to the first post of this thread, has been updated with a new version of WinLIFT64.dll.

Latest build of Windows 11, has changed its memory management expectations silently in newer OS builds.
— without warning or documentation updates.

The region was not released by DWM, causing a GDI handle leak every time ZI_DwmEnable() was called.

« Last Edit: June 20, 2025, 02:13:48 pm by Patrice Terrier »
Patrice
(Always working with the latest Windows version available...)

Patrice Terrier

  • Administrator
  • *****
  • Posts: 2022
    • zapsolution
WinLIFT 64-bit 8.00 (is attached to this post)
« Reply #3 on: August 03, 2026, 05:22:16 pm »
WinLIFT 8.00 - Major update

WinLIFT 8.00 is a major evolution of my native Win32 skinning framework.

BBRTV (BassBox Radio/TV) was used as the development laboratory for this release and is provided as a working example showing how to use the new WinLIFT 8.00 API in a real-world application.

What's new in WinLIFT 8.00

  • New Grid control
    A native WinLIFT Grid control with headers, multiple columns, text, images, edit/combo/button support, hidden columns, selection management, scrolling and resizable columns.

  • New image compositor
    WinLIFT can compose the complete application window into an image, including the non-client area, child controls, scrollbars and GDImage content.

  • Tighter GDImage integration
    WinLIFT and GDImage now cooperate more closely, especially for WM_PRINT rendering and image composition.

  • DWM popup overlay support
    The compositor can integrate GDImage DWM-composited popup overlays used by applications such as MBox64 and ObjReader64.

  • Integrated snapshot
    CTRL+SCREENSHOT can be used at any time to create a snapshot of the fully composed application window. The picture is saved beside the executable.

  • New window animation engine
    skShowWindow() can display a window using one of the new WinLIFT effects:

        SK_EFFECT_FALLZOOM
        SK_EFFECT_TRANSLUCENTSPIRAL
        SK_EFFECT_CURL_FROM_BOTTOMLEFT
        SK_EFFECT_CURL_FROM_BOTTOMRIGHT
        SK_EFFECT_CURL_FROM_TOPRIGHT
        SK_EFFECT_CURL_FROM_TOPLEFT
        SK_EFFECT_LIQUIDFILL
        SK_EFFECT_BLURFOCUS

    The Curl effects are directional and the new effects are generated entirely at runtime from the composed window image.

  • WebView2 integration
    WinLIFT provides a compact native API for embedding WebView2 into a skinned application.

  • Embedded DLL memory loader
    A DLL stored inside the WinLIFT RCDATA resources can be loaded directly from memory, without extracting it to disk.

    This is used to keep the WebView2/WRL implementation isolated from the main WinLIFT runtime while preserving single-DLL deployment.

  • DPI scaling helpers
    WinLIFT itself does not claim Windows DPI awareness.

    It provides built-in DPI scaling helpers instead. The host Windows DPI is used by default and the .sks USE_DPI property can provide an explicit scaling value when required.

    The image compositor is designed to remain compatible with the DPI environment of the host computer.

  • zVector
    Internal STL vector usage has been replaced by the lightweight zVector implementation.

  • Windows 10/11 improvements
    Several rendering and compatibility issues have been addressed, including TreeView focus, SYSHEADER rendering, scrollbar overlap and control redraw behavior.

  • Smaller runtime
    Despite the new Grid, compositor, animation engine, WebView2 support and memory loader, considerable work has been done to reduce the WinLIFT64.dll footprint and external runtime dependencies.
    The overall binary size is only 223 KB.
.
 
BBRTV - WinLIFT 8.00 example

BBRTV is not the subject of this release; it is the application I used to develop, test and demonstrate the new WinLIFT 8.00 functionality.

Its source code provides practical examples of the new Grid API, WebView2 integration, compositor, snapshot facility and window effects.
(A different effect is selected at each startup in loop mode).

The current C/C++ BBRTV executable is only: 67 KB

WinLIFT 8.00 remains a native 64-bit Unicode Win32 SDK framework, without MFC or .NET, designed for applications where full control of the Windows interface and a small native footprint are important.
« Last Edit: August 03, 2026, 07:02:02 pm by Patrice Terrier »
Patrice
(Always working with the latest Windows version available...)