Overview | News | Windows | macOS | Android | iOS | Audio Formats | Components | Encoder Pack | Screenshots | Help & Support | Developer | Old Versions | Other Projects | Blog & Rants
Phantom Win32 API: TVN_ITEMCHANGINGA & TVN_ITEMCHANGEDA published on 2026-07-24
<<previous permalink next>>
ANSI versions of these notifications exist only in headers and documentation:
TVN_ITEMCHANGING
TVN_ITEMCHANGED
See "Unicode and ANSI names" under Requirements.
They're never actually used.
You can compile your program as ANSI and use CreateWindowA(). You can use TVM_SETUNICODEFORMAT on an existing treeview control.
Treeview always sends TVN_ITEMCHANGINGW & TVN_ITEMCHANGEDW instead, even if ANSI versions of other notifications are used.
Now, why is this interesting in the year 2026? Nobody should be compiling Windows programs in ANSI mode, unless doing some kind of software archeology project.
This turned up while reimplementing these messages in Wine, which should replicate actual behaviors of Windows.
I'm guessing that the rationale is that it makes no sense for ANSI versions of these to exist. Programs that rely on Common Controls v6 features already require Windows XP or newer - so there's no reason to compile them as ANSI.
TVN_ITEMCHANGING
TVN_ITEMCHANGED
See "Unicode and ANSI names" under Requirements.
They're never actually used.
You can compile your program as ANSI and use CreateWindowA(). You can use TVM_SETUNICODEFORMAT on an existing treeview control.
Treeview always sends TVN_ITEMCHANGINGW & TVN_ITEMCHANGEDW instead, even if ANSI versions of other notifications are used.
Now, why is this interesting in the year 2026? Nobody should be compiling Windows programs in ANSI mode, unless doing some kind of software archeology project.
This turned up while reimplementing these messages in Wine, which should replicate actual behaviors of Windows.
I'm guessing that the rationale is that it makes no sense for ANSI versions of these to exist. Programs that rely on Common Controls v6 features already require Windows XP or newer - so there's no reason to compile them as ANSI.
