Recent Posts

Pages: 1 [2] 3 4 ... 10
11
The concept / Re: WinLIFT32.dll version 7.00
« Last post by Pierre Bellisle on February 03, 2024, 05:01:32 am »
Salut Pat,
J'ai le fichier d'aide 4.87, y a-t-il plus récent?
En ce qui concerne les peaux, sont-elle disponible?

Mille mercis, quel travail fantastique...

-

Hi Pat,
I got the v. 4.87 help file, is there something newer?
About the skins, are they available?

Thousand thanks, what a fantastic work...

12
The concept / WinLIFT32.dll version 7.00
« Last post by Patrice Terrier on January 19, 2024, 01:13:51 pm »
This is the WinLIFT32.dll version 7.00 that is intended to work in UNICODE 32-bit mode.

There are 2 PowerBASIC projects attached to this post.
The PowerBASIC code must use the %UNICODE = 1 constant, and WSTRINGZ to pass parameters to any of the WinLIFT32 API.

In the example
1 - Buttons32.bas, is using the standard anchor properties.
2 - Resize32.bas, is using the new HOMOTHETIC resize API.
13
The concept / Homothetic resize
« Last post by Patrice Terrier on January 15, 2024, 07:38:49 pm »
The attached C++ project shows you how to use the new Homothetic resize from Version 7.00.

Homothetic is exclusive, it couldn't be intermixed with other anchor properties.
The same percentage ratio is applied to all child controls when resizing the parent popup.
14
Skin themes / User submitted
« Last post by Patrice Terrier on January 14, 2024, 11:22:40 am »
TinyMail

This is a PureBasic project.








15
The concept / WinLIFT 64-bit 7.00, new API
« Last post by Patrice Terrier 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).
16
The concept / WinLIFT 64-bit 7.00 (is attached to this post)
« Last post by Patrice Terrier 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)
...
17
Questions & Comments about WinLIFT / HOMOTHETIC resize
« Last post by Patrice Terrier on November 23, 2023, 10:28:55 am »
This is a new version of the Resize project.

I kept the previous post for tutorial purposes, because the HOMOTHETIC computation is now part of the WinLIFT64.dll code.

In this new version, there is no need first to use the new skAnchorID API,
because the same homothetic ratio is applied to all child controls.

Just use skUseAnchorMode(hwnd, HOMOTHETIC).
18
Questions & Comments about WinLIFT / Re: WinLIFT Experimental version
« Last post by Patrice Terrier on November 19, 2023, 10:44:41 am »
Here is another C++ example (debug version) showing the use of anchor properties.

Updated version of the Resize mockup is attached to this post.

What is new:

Anchor properies using power of 2 for greater flexibility

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;


AnchorOnSize(FALSE);


Homothetic resizing

Rather than being anchored, all controls are using an homogeneous dilatation, using the initial size of the popup window as the reference ratio value of 1.0f.

HomotheticOnSize(FALSE);

Sof far, you can use either Anchor or Homothetic, but not mix them together.

19
Questions & Comments about WinLIFT / WinLIFT anchor properties
« Last post by Patrice Terrier on November 17, 2023, 06:40:02 pm »
Here is the first WinLIFT tutor using the Experimental* Version 6.00

The code has been highly optimized to produce a tiny 124 Kb 64-bit DLL

The "Buttons" project is using only WinLIFT controls, to illustrate the concept of anchor/dock properties, that is the modern paradigm to resize child controls.

Search in the code for: skSetAnchorCtrl

The project is provided with its full VS2022 C++ source code, configured in release mode to produce a... 15 Kb binary EXE.

Being able to produce such small binary files is only possible when using the Windows FLAT API in procedural mode, and by nowadays standard it is becoming a lost art.

Note: Experimental, means work in progress...
20
Questions & Comments about WinLIFT / Re: WinLIFT Experimental version
« Last post by Patrice Terrier on November 05, 2023, 09:34:12 am »
I am progressing slowly with verssion 6.00.

What about:
1 - Support for multiple popup application running in the same thread.
2 - ListView column drag & drop.
3 - ListView can use Private font (skSetLabelFont).
4 - PureBasic custom class detection.
5 - Code cleanup, optimization, and size reduction.
...
Pages: 1 [2] 3 4 ... 10