On Thu May 28 11:17:12 2026 +0000, Nikolay Sivov wrote:
I recall this was depending on WM_NCCREATE, if you don't pass it to original procedure this class type won't be set. I don't know if it's worth replicating, unless SetWindowFNID is for some reason expensive to call on every message. The tests indicate that it depends on the class but for static test shows that real class is set whenever any of WM_NCCREATE / WM_CREATE / WM_NULL messages is sent. I don't think the tests are exhaustive, and in such case I decided to set FNID on every message. For other classes where only WM_NCCREATE or WM_CREATE trigger the real class name change I filtered on message type. In any case NtUserSetWindowFNID shouldn't be expensive to call.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/11012#note_141515