Make Compatible - Advanced Mode Flags

Advanced Mode Flags

The flags are documented in Microsoft KnowledgeBase article #82860. They correspond to the "advanced mode" flags that are settable by Make Compatible's "Advanced Options" menu:

30 average width metrics
This is bit #19 of the compatibility bits word, with hexadecimal value 0x80000, known by the symbolic name GACF_30AVGWIDTH in windows.h. This flag causes Windows to re-scale all fonts by a factor of when calculating their average character widths. The reason for this is that one particular Windows 3.0 application, TurboTax, hard-coded the values that it was using for such size calculations, which failed to work correctly with the new TrueType-compatible font average width calculation method employed by Windows 3.1. This prevented people from using TurboTax to print their income tax return forms on PostScript printers.
Always send NC_Paint
This is bit #6 of the compatibility bits word, with hexadecimal value 0x40, known by the symbolic name GACF_ALWAYSSENDNCPAINT in windows.h. This flag forces any call to SetWindowPos to cause the sending of WM_NCPAINT message to all child windows. This is the Windows 3.0 behaviour. In Windows 3.1, the behaviour was changed so that the window message is only sent to those windows that need their non-client areas to be repainted. Some Windows 3.0 applications, however, relied upon always receiving this message, to determine whether child windows needed repositioning.
Don't enum device fonts
This is bit #14 of the compatibility bits word, with hexadecimal value 0x4000, known by the symbolic name GACF_ENUMTTNOTEDEVICE in windows.h. This flag causes Windows 3.1 to turn the DEVICE_FONTTYPE flag off in particular circumstances when an application that is wanting to print enumerates fonts. The particular circumstances are when the target printer is not either a dot matrix printer or a PostScript printer, and the fonts are TrueType fonts that are not resident in the printer itself. In such circumstances, some applications (including PageMaker and MGXDraw) misinterpret the flag and believe the font to be device-resident. (TrueType fonts can be uploaded by Windows to printers, and need not be resident on the device itself to be usable.) They then query the printer to see what sizes of the font it supports, and when that fails (because the printer doesn't know about the font until it is uploaded), they incorrectly assume that the font cannot be resized. Setting the DEVICE_FONTTYPE flag to false in such situations prevents the applications from going wrong, and that is what this compatibility bitflag does.
Don't send calcsize WM_MOVE
This is bit #17 of the compatibility bits word, with hexadecimal value 0x20000, known by the symbolic name GACF_NCCALCSIZEONMOVE in windows.h. This flag forces the WM_NCCALCSIZE message to be sent to a window that is being moved or resized. This is the Windows 3.0 behaviour. In Windows 3.1, the behaviour was changed so that the window message is only sent to those windows that were being resized. It was not sent if the window was merely moved. Some Windows 3.0 applications, however, such as Lotus Notes for example, relied upon always receiving this message.
Enum Helv and Times Roman fonts
This is bit #12 of the compatibility bits word, with hexadecimal value 0x1000, known by the symbolic name GACF_ENUMHELVTMSRMN in windows.h. This flag works around a problem with applications that refused to work properly unless fonts with the exact names "Helv" and "Tms Rmn" were listed as present on the system by the Windows font enumeration API. The names are trademarks of Linotype company for particular fonts, Helvetica and Times Roman, and since Microsoft didn't ship those Linotype fonts with Windows 3.1, it could not enumerate them as present. This flag causes Windows to enumerate the "MS Sans Serif" and "MS Serif" fonts under the names "Helv" and "Tms Rmn", for compatibility with the applications that don't work without those exact names being used.
Force extra windows words
This is bit #8 of the compatibility bits word, with hexadecimal value 0x100, known by the symbolic name GACF_MOREEXTRAWNDWORDS in windows.h. This flag works around a problem with applications that assumed the existence of window words (extra items of data associated by Windows with GUI windows) when they had not in fact informed Windows that extra window words were required. Windows 3.1, unlike Windows 3.0, bounds checks all uses of extra window words, and applications that assumed that they could use more space than they had asked for would thus fail. For applications run with this flag set, Windows 3.1 silently increased the total number of words requested by the application by an extra 4 bytes.
Force printer text to new band
This is bit #1 of the compatibility bits word, with hexadecimal value 0x2, known by the symbolic name GACF_FORCETEXTBAND in windows.h. This flag causes Windows 3.1 to always use two bands when printing, the first for graphics and the second for text. Normally Windows 3.1 tries to print both in a single band. But applications such as WordPerfect assumed that a second band would always exist, and would always be where the text was, as had been the case in Windows 3.0. Freelance Graphics had a similar problem.
Force TT fonts to graphics band
This is bit #15 of the compatibility bits word, with hexadecimal value 0x8000, known by the symbolic name GACF_FORCETTGRAPHICS in windows.h. This flag was to work around a problem with Freelance Graphics, where it wouldn't print using TrueType fonts unless they were printed as graphics.
Global hooks only called for Win16 apps
Ignore discardable segment attributes
This is bit #0 of the compatibility bits word, with hexadecimal value 0x1, known by the symbolic name GACF_IGNORENODISCARD in windows.h. This flag forces the GEM_NODISCARD flag passed to GlobalAlloc by a program to be ignored. It worked around a bug in the run-time library supplied with Microsoft's own C compiler, Microsoft C version 6. The run-time library would erroneously set that flag in calls to GlobalAlloc, and any application compiled with that compiler would thus exhibit the behaviour.
Ignore raster fonts
This is bit #9 of the compatibility bits word, with hexadecimal value 0x200, known by the symbolic name GACF_TTIGNORERASTERDUPE in windows.h. This flag prevents fonts of the same sizes from being enumerated as both bitmap and TrueType fonts. This was because several applications, including WordPerfect and Visual Basic, were not capable of handling that particular situation correctly.
Ignore topmost windows
This is bit #3 of the compatibility bits word, with hexadecimal value 0x8, known by the symbolic name GACF_IGNORETOPMOST in windows.h. This flag fixes a particular problem with cc:Mail that caused it to fail on Windows 3.1. It assumed that accessing the first window with GetWindow(HWND,GW_HWND_FIRST) would return it the window of the application that it had just started with WinExec. But on Windows 3.1, which introduced the idea of "topmost" windows, this was no longer true. The flag caused Windows 3.1 to skip topmost windows when that particular API request was made.
Module specific hack
No HRGN 1
This is bit #16 of the compatibility bits word, with hexadecimal value 0x10000, known by the symbolic name GACF_NOHRGN1 in windows.h. This flag reinstates a bug that existed in Windows 3.0 that was fixed in Windows 3.1. It did so because several applications, such as Microsoft Draw, worked around the bug themselves, and would fail to work correctly when the bug was eliminated. The bug was an error in the return value of the GetUpdateRect function, whereby in certain situations (where the entire window was invalid) it would return the coördinates of the update rectangle in window coördinates, rather than in logical coördinates as it was supposed to. In Windows 3.1, it always returned the update rectangle in logical coördinates. The applications that worked around the bug would perform the coördinate transform themselves to work around the bug, and end up updating the wrong parts of their windows on Windows 3.1.
One graphic band and use print escapes
This is bit #2 of the compatibility bits word, with hexadecimal value 0x4, known by the symbolic name GACF_ONELANDGRXBAND in windows.h. This flag causes Windows 3.1 to use a single graphics band when printing in Landscape mode, consuming as much memory as needed for that band, and discarding whatever content would not fit into the band.
Subtract clip siblings
This is bit #14 of the compatibility bits word, with hexadecimal value 0x4000, known by the symbolic name GACF_SUBTRACTCLIPSIBS in windows.h. This flag causes Windows 3.1 to handle window invalidation differently for top-level windows that do not have the WS_CLIPSIBLINGS window style set, and their chlid windows. (In other words: It affects dialogue boxes and the controls on them.) With the flag set, Windows would not invalidate sibling child windows underneath (in the z-order) other WS_CLIPSIBLINGS child windows. The main reason for the flag was applications such as Lotus Notes 2.1, which implemented its own combo boxes as child windows, rather than as top-level windows (the system default combo box implementation). With this flag set, odd display problems with such windows would disappear.
Support multiple printing bands
This is bit #5 of the compatibility bits word, with hexadecimal value 0x20, known by the symbolic name GACF_MULTIPLEBANDS in windows.h. This flag causes Windows 3.1 to always use multiple bands for printing, even when one band would be sufficient. This was to work around a problem in Freelance Graphics, which would assume that if only one band existed, and it was the entire page, it was the text band, and would not even attempt to print graphics. On Windows 3.1, the universal printer driver would sometimes be able to handle both text and graphics with a single band. By forcing the use of multiple bands, the problems that this would cause for Freelance Graphics were avoided.
TT fonts are device fonts
This is bit #4 of the compatibility bits word, with hexadecimal value 0x10, known by the symbolic name GACF_CALLTTDEVICE in windows.h. This flag causes Windows 3.1 to always set the DEVICE_FONTTYPE flag on any TrueType fonts that are enumerated using the Windows EnumFont API. This was to fix a problem with applications including AmiPro and WordPerfect, both of which assumed that all TrueType fonts available on a printer would be device-resident.
Windows 3.1 palette behavior

Read more about this topic:  Make Compatible

Famous quotes containing the words advanced, mode and/or flags:

    This seems to be advanced as the surest basis for our belief in the existence of gods, that there is no race so uncivilized, no one in the world so barbarous that his mind has no inkling of a belief in gods.
    Marcus Tullius Cicero (106–43 B.C.)

    There are a thousand hacking at the branches of evil to one who is striking at the root, and it may be that he who bestows the largest amount of time and money on the needy is doing the most by his mode of life to produce that misery which he strives in vain to relieve.
    Henry David Thoreau (1817–1862)

    Gentlemen, those confederate flags and our national standard are what has made this union great. In what other country could a man who fought against you be permitted to serve as judge over you, be permitted to run for reelection and bespeak your suffrage on Tuesday next at the poles.
    Laurence Stallings (1894–1968)