"High Contrast Mode" is an accessibility state controlled by the
HCF_HIGHCONTRASTON flag in the dwFlags
member of the HIGHCONTRAST structure.
You can retrieve this structure programmatically by calling the
SystemParametersInfo function with the
SPI_GETHIGHCONTRAST parameter;
conversely, you update the setting programmatically with
SPI_SETHIGHCONTRAST parameter.
Programs are on their honor to query the "High Contrast Mode" flag
and, if set, simplify their display so as to be more usable to
people with low visual acuity.
For example, gradients and background bitmaps should be turned off
and system colors should be used for screen elements.
End users can enter and exit "High Contrast Mode" by
going to the Accessibility control panel and checking or
unchecking the "High Contrast" box.
Alternative, users can use the High Contrast Mode hotkey,
LeftShift+LeftAlt+PrtSc.
As an added bonus (and here's where the confusion begins),
if users employ the hotkey, then the
system will also switch to or from the "High Contrast" color scheme
automatically.
The "High Contrast" color scheme (or more accurately, schemes,
since there are a few of them) is a collection of colors and
metrics that are suitable for users with low visual acuity.
You can manually select this color scheme from the Display
control panel's "Appearance" page.
These two concepts, "High Contrast Mode" and the "High Contrast
Color Scheme" are independent.
You can be in High Contrast Mode with normal colors.
(This means that programs will remove visual distractions
even though your screen colors aren't black and white.)
Or you can use the High Contrast Color Scheme without being in
High Contrast Mode.
(This means that your screen colors are predominantly black and
white, but programs are still welcome to use gradients and
background bitmaps.)
It turns out that
these "mixed states" are very confusing to end users.
When users go to the Display control panel and select a
High Contrast color scheme, they almost certainly want to
go into High Contrast Mode as well, but that doesn't happen
because the Display control panel says,
"Well, you're choosing some colors that are very heavy on
black and white.
Maybe you just like those colors?
Perhaps you're a fan of penguins, or maybe you're just
into goth fashion.
I'm just the Display control panel; I change colors.
I don't do accessibility stuff.
For that, use the Accessibility control panel.
Not my job.
Clear delineation of responsibility."
It's perfectly logical and completely counter-intuitive.
Most often, I see this when somebody sets their color scheme
to High Contrast from the Display control panel, and yet they
find that programs are not recognizing High Contrast Mode
and are still using gradients and background bitmaps.
As a result of this confusion, many programs don't trust
SPI_GETHIGHCONTRAST.
Or, more accurately, if SPI_GETHIGHCONTRAST
says, "No, High Contrast Mode is not enabled,"
the programs say, "Well, okay, we're not in High Contrast Mode,
but maybe we're in the mixed case where users chose the
High Contrast color scheme and think
that they are in High Contrast Mode even though they technically aren't."
These programs study your current colors, do some math,
and decide if they are "high contrast-y".
If so, then they go into "virtual High Contrast Mode",
where they act as if HCF_HIGHCONTRASTON were set
even though it really isn't.
As a result of these programs "trying to guess what you really want",
I occasionally see somebody complaining, "After I set my colors
to my personal preferences (stark black and white because I like it
that way), some programs think I'm a person with visual impairments
and go into a simplified visual mode."
Windows Vista attempts to resolve this confusion by violating the
"architectural purity" of the Display control panel and having it
set and clear the High Contrast Mode flag depending on what color
scheme you picked.
If you pick a High Contrast color scheme, then the Display control
panel will automatically set you into High Contrast Mode.
Because it's almost certainly what you wanted anyway.
Comments
Post new comment