What the hell is wrong with WC_NATIVEFONTCTL?

by Michael S. Kaplan, published on 2008/05/24 15:01 -04:00, original URI: http://blogs.msdn.com/b/michkap/archive/2008/05/24/8536965.aspx

Have you ever done something in a wild, partying social situation when you wee younger that seemed like a great idea at the time, but then you just woke up the next morning and realized it was not such a great idea?

Extended this slightly inappropriate metaphor allowed me to give a good conceptual model for the answer to a technical question. :-)

This was a fun question from the other day:

Our code no longer has to support anything earlier than XP. I'd like to remove all of the references to WC_NATIVEFONTCTL, but I do not know if the reference is still needed?

A quick look at the code seemed to imply that it only worked at all in COMCTL32 v.5 and was present but non-functional in COMCTL32 v.6, but I thought I should ask some of the experts over in the Shell. Raymond Chen volunteered some useful historical information, plus info on the implementation:

The native font control was a hack...  ...back in the days before font linking. It has been useless for a decade. I don't know whether it's been formally deprecated, but it is deprecated in practice.

Vista with comctl v6 -> native font control exists but does nothing
Vista with comctl v5 -> native font control exists and does stuff, but who knows whether it "works" - it makes some assumptions which probably haven't been true for years

He then pointed to some documentation that is also way out of date on this control, in a topic called Localization Support for the Common Controls.

On top of all of that, it does try to involve itself in both GDI font linking and GDI font association and not much else, which means it really only ever does anything "useful" for East Asian platfoms....

Though on the other hand, I ranted a bit on the problem with font association in A more definitive definition of[ Font ]Association (a technology that helps us put the backward in backward compatibility!). Which kind of covers how I feel about the theoretical "usefulness" here.

But the whole idea of having the control do absolutely nothing of consequence appeals to me as a great way to do the deprecation -- it reminds me of when Scott Adams talked about how the people who complained about the performance hit of The Dilbert Zone when advertising was added were kind of set up a little, since hidden ads had been running for some time with no one complaining. How can people be upset if they didn't notice it wasn't working anyway (and didn't need to work since the OS now did a whole bunch of work anyway). :-)

Most people use COMCTL32 v.6 these days, so luckily this not entirely useful control is not entirely used. And sooner or later the documentation should catch up.

And you (the developer) should treat it like that really bad idea one might have gotten involve with when one was young and foolish. Now, as an older, wiser, and more mature person, you should do the right thing -- and not take this one home....

This blog brought to you by βΊ‹ (U+2e8b, CJK RADICAL SEAL)

no comments

go to newer or older post, or back to index or month or day