DOCUMENT:Q82860 15-DEC-2000 [win3x] TITLE :The WIN.INI [Compatibility] Section PRODUCT :Microsoft Windows 3.x Retail Product PROD/VER: OPER/SYS: KEYWORDS: ====================================================================== 3.10 3.11 WINDOWS kbenv ------------------------------------------------------------------------------- The information in this article applies to: - Microsoft Windows versions 3.1, 3.11 ------------------------------------------------------------------------------- SUMMARY ======= This article discusses the Microsoft Windows version 3.1 WIN.INI [Compatibility] section. MORE INFORMATION ================ Compatibility bits are defined in the [Compatibility] section of the WIN.INI file for the following applications: - Microsoft Publisher - Microsoft Money - Microsoft Works - WordPerfect - Lotus Freelance - CC Mail - Microsoft Visual Basic - Ami Pro - Pixie - ObjectVision - Cricket Presents - Just Write - ExploreNet - Aporia - Packrat - Microcourier - Guide - Microsoft Excel - Ascend - MGX Draw - AccPack - Charisma - Persuasion - Ingress - Lotus Notes - Microsoft Draw - Turbo Tax When an application loads under Windows 3.1, KERNEL.EXE checks to see if the application was compiled exclusively for Windows 3.1. If the application was compiled for Windows 3.0, and will therefore run under Windows 3.0 or 3.1, KERNEL.EXE checks the module name and determines if any bits are defined for that name in the [Compatibility] section of the WIN.INI file. The following is a detailed explanation of compatibility bits. The symbolic name is defined in WINDOWS.H. The problem, listed for each application, will be fixed if the compatibility bit is defined. If these switches are in the [Compatibility] section of the WIN.INI file then these problems will not occur. The Windows 3.1 Setup program automatically inserts these switches into the WIN.INI, regardless of whether or not that application is on the machine. The symbolic names are internal only, they are not in the WINDOWS.H that ships with the Software Development Kit (SDK). Bit: 1 ------ Symbolic name: GACF_IGNORENODISCARD Meaning: Ignore NODISCARD flag if passed to GlobalAlloc(). C 6.x Runtime install library was allocating global memory improperly by incorrectly specifying the GMEM_NODISCARD bit. Apps: Publisher WIN.INI Line: notshell=0x0001 Problem: Setup for MS apps. does not work on 1M 286 machine. Money WIN.INI Line: notshell=0x0001 Problem: Setup for MS apps. does not work on 1M 286 machine. Works WIN.INI Line: notshell=0x0001 Problem: Setup for MS apps. does not work on 1M 286 machine. Bit: 2 ------ Symbolic name: GACF_FORCETEXTBAND Meaning: Separate text band from graphics band. Forces separate band for text, disallowing 3.1 optimization where Text and Graphics are printed in the same band. Word Perfect was assuming text had to go in second band. Apps: WordPerfect WIN.INI Line: WPWINFIL=0x0006 Problem: Can't print graphics in landscape mode. The compatibility switch doesn't completely fix the problem, just fixes it for certain memory configurations. Freelance WIN.INI Line: rem=0x8022 Problem: Freelance couldn't print presentation (.pre) files. Bit: 4 ------ Symbolic name: GACF_ONELANDGRXBAND Meaning: One graphics band only. Allows only one Landscape graphics band. Take as much memory as possible for this band. What doesn't fit in that band doesn't print. Apps: WordPerfect WIN.INI Line: WPWINFIL=0x0006 Problem: Can't print graphics in landscape mode. The compatibility switch doesn't completely fix the problem, just fixes it for certain memory configurations. Bit: 8 ------ Symbolic name: GACF_IGNORETOPMOST Meaning: Ignore topmost windows for GetWindow(HWND,GW_HWNDFIRST) Apps: CCMail WIN.INI Line: ccmail=0x0008 Problem: CCMail would GP fault when running any Windows applet from CCMail because it assumed the applet it starts will be at the top of the window list when winexec returns. Because of the addition of TOPMOST windows in Win 3.1, this isn't the case. The compatibility bit fixes this so GetWindow doesn't return a topmost window. Bit: 10 ------- Symbolic name: GACF_CALLTTDEVICE Meaning: Set the DEVICE_FONTTYPE bit in the FontType for TT fonts returned by EnumFonts(). Apps: Ami Pro WIN.INI Line: Amipro=0x0010 Problem: Font mapping problems, described below. WordPerfect WIN.INI Line: win2wrs=0x1210 Problem: WordPerfect was assuming TT fonts enumerated by the printer would have the device bit set. TT fonts are not device fonts, so this bit wasn't set. There were various font mapping problems, such as TNR appearing in Script or Symbol. Bit: 20 ------- Symbolic name: GACF_MULTIPLEBANDS Meaning: Manually break graphics output into more than one band when printing. Apps: Freelance WIN.INI Line: Rem=0x08022 Problem: Freelance wouldn't print graphics when there was enough memory and unidrv used only one band for printing. If the first band was the entire page, it didn't issue any graphics calls, thinking it was the text only band. This forces unidrv to use multiple bands. Bit: 40 ------- Symbolic name: GACF_ALWAYSSENDNCPAINT Meaning: SetWindowPos() must send a WM_NCPAINT message to all children, disallowing the 3.1 optimization where this message is only sent to windows that must be redrawn. Apps: Pixie WIN.INI Line: pixie=0x0040 Problem: File window overlaps the toolbox and doesn't repaint when a new file is opened. Pixie used the receipt of WM_NCPAINT messages to determine that they may need to reposition themselves at the top of the list. Win 3.0 used to send the messages to windows even when they didn't need to be sent; in particular if the window was within the bounding rect of any update region involved in a window management operation. ObjectVision WIN.INI Line: Vision=0x0040 Problem: Repaint problems with dialog boxes left on the screen after file.open or file.new operations. Cricket Presents WIN.INI Line: cp=0x0040 Problem: Tool window is not available when opening the app. Bit: 80 ------- Symbolic name: GACF_EDITSETTEXTMUNGE Meaning: Strings that are passed to Edit Controls by WM_SETTEXT are forced to upper case. Just Write was expecting this behavior, which was a bug in 3.0. Apps: Just Write WIN.INI Line: JW=0x42080 Problem: Just Write wouldn't change the extension in the file.open dialog when opening a file of a different format. Just Write calls SetDlgItemText to set the default extension in edit controls during WM_INITDIALOG processing. SetDlgItemText ultimately calls text insert routine which had a bug in 3.0 where it converted the case of the text passed in dependent on edit control style. Thus, under 3.0, SetDlgItemText was (wrongly) modifying the string passed in. The app has worked around the bug in 3.0 and is now failing in 3.1 since the bug has been fixed. The compatibility bit reverts to 3.0 behavior. Bit: 100 -------- Symbolic name: GACF_MOREEXTRAWNDWORDS Meaning: Add 4 to the extra bytes (CBWNDEXTRA) in the window instance and class instance structures. In Windows 3.0, even if you didn't allocate extra window/class words, you could still access them and corrupt Windows internally. In Windows 3.1, you are prevented from accessing extra words you didn't allocate so that apps won't corrupt windows. This switch forces extra words for all classes/windows created by the given application. Apps: Compton's MM Ency WIN.INI Line: TME=0x0100 Problem: Crashes choosing atlas. Caused by not initializing the WNDCLASS.cbWndExtra field. ExploreNet WIN.INI Line: netset2=0x0100 Problem: Application error selecting update in "Input Form" window. Caused by the app specifying 0 extra bytes when creating the window class. Aporia 1.4 WIN.INI Line: aporia=0x0100 Problem: Aporia icons don't appear on the desktop. Hangs the system. App says it wants 1 extra byte in the RegisterClass, then does a SetWindowWord (2 bytes), then GetWindowLong (4 Bytes). Bit: 200 -------- Symbolic name: GACF_TTIGNORERASTERDUPE Meaning: Don't enumerate Duplicate bit map fonts for TT fonts. Times New Roman was displayed and printed as a vector font. We install bit map fonts for Arial and Times New Roman at sizes 8,10 (EGA resolution). When we enumerate fonts for face names Arial and Times New Roman, we would enumerate the sizes available in the bit map fonts and one size for the corresponding true type font. This confused the font mapper in WordPerfect. It would somehow get confused into believing that a TNR font was available for only the two bit map sizes and map a request for a larger size to a Roman vector font. Apps: Word Perfect WIN.INI Line: Win2wrs=0x01210 Problem: Some fonts displayed as vector fonts. GDI will not enumerate raster fonts which have the same face or family name as a TT font if TT is enabled and the compatibility bit is set. Visual Basic WIN.INI Line: vb=0x0200 Problem: Reports duplicate font sizes. Bit: 800 -------- Symbolic name: GACF_DELAYHWHNDSHAKECHK Meaning: Don't check hardware handshaking on SetCommState(). Do not check hardware handshaking (CTS and DSR) on SetCommState(). (Reverts to 30 behavior.) Packrat could not Dial. It only checked for DSR, but this is not set until carrier detect. A bug existed in win30 where SetCommState never checked DSR and CTS. If a serial printer was off-line, data would be sent to the COM port anyway, causing lost data. Apps: Packrat WIN.INI Line: packrat=0x0800 Problem: Packrat didn't dial using modem on COM2. Microcourier WIN.INI Line: mcourier=0x800 Problem: Couldn't connect to modem using COM2. Bit: 1000 --------- Symbolic name: GACF_ENUMHELVNTMSRMN Meaning: Enumerates TmsRmn and Helv. Some apps are broken because they relied on 3.0 fonts Helv and Tms Rmn by name. Font Substitution covers much of these problems but we cannot legally enumerate Helv and Tms Rmn for future apps, so it was dropped. We still have the exact same fonts, but now under the names MS Sans Serif and MS Serif, and will enumerate them as Helv and Tms Rmn when this bit is set. (We are allowed to do this for backwards compatibility.) Apps: Spinnaker + WIN.INI Line: plus=0x01000 Problem: Text alignment and spacing problems in buttons and titles. Fix only works if Smallfonts come after serif and sans serif entries. Setup does this automatically. Milestones, etc. WIN.INI Line: milesv3=0x1000 Problem: Text is unreadable when the app is started. App does its own font mapping and gets confused when it can't find Tms Rmn. Guide WIN.INI Line: guide=0x1000 Problem: Text problems. Excel WIN.INI Line: Excel=0x1000 Problem: Can't get past point where you have to enter a point size in the tutorial. WordPerfect WIN.INI Line: win2wwrs=0x1210 Problem: Uses a vector font for TmsRmn. Bit: 2000 --------- Symbolic name: GACF_ENUMTTNOTDEVICE Meaning: Turns off DEVICE_FONTTYPE. Some apps fail to enumerate more that one size of true type fonts because they interpret the DEVICE_FONTTYPE flag incorrectly. They assume the font must be device resident and disregard the case where the font is downloaded (as TT can be). Therefore, when TT is correctly enumerated with the device bit set, the apps check the device capabilities to see if the printer can scale fonts. If the device cannot, the app assumes one size of for the current font. This problem is not seen on postscript printers which can download and scale fonts, nor on dot matrix printers which cannot download fonts. This Compatibility bit simply checks all the above conditions and selectively turns the DEVICE_FONTTYPE off. Apps: Pagemaker 4.0 WIN.INI Line: pm4=0x2000 Problem: Not all point sizes listed for some printers. Designer 3.1 WIN.INI Line: designer=0x2000 Problem: Font size reverts to 6 point when selecting a TT font in the font dialog. Ascend 3.1 WIN.INI Line: planner=0x2000 Problem: TT fonts only allow one point size. MGXDraw 3.0 WIN.INI Line: draw=0x2000 Problem: Shows no font sizes for TT fonts. AccPack WIN.INI Line: winsim=0x2000 Problem: Lists only one point size for TT fonts. Charisma WIN.INI Line: charisma=0x2000 Problem: Not all point sizes listed for some printers. Persuasion WIN.INI Line: pr2=0x2000 Problem: Lists only one point size for TT fonts. Just Write WIN.INI Line: jw=0x42080 Problem: Lists only one or two point sizes for TT fonts. Bit: 4000 --------- Symbolic name: GACF_SUBTRACTCLIPSIBS Meaning: This flag affects the way window invalidation works for non- WS_CLIPSIBLINGS parent windows and their children (e.g., dialog boxes and dialog controls). Normally, if two children of a non-WS_CLIPSIBLING parent overlap, and an area that contains both of those windows is invalidated (either by a call to InvalidateRect or through window rearrangement), both of the windows will get invalidated, even if one or both is WS_CLIPSIBLINGS. With GACF_SUBTRACTCLIPSIBS, any sibling window underneath a WS_CLIPSIBLINGS window will not be invalidated in the part of the window that is beneath the WS_CLIPSIBLINGS window. This situation arises most commonly when windows that are supposed to appear overlapped don't seem to overlap properly. Applications that implement drop down combo boxes as child windows of dialog boxes will exhibit this problem (e.g., Lotus Notes 2.1 drive drop downs). It's often hard to tell whether a drop down is implemented as a top-level window (e.g., the Windows system combo boxes) or as a child window -- if there seem to be overlapping problems, then GACF_SUBTRACTCLIPSIBS could be the solution. Apps: Lotus Notes 2.0 & 1 WIN.INI Line: _BNOTES=0x24000 Problem: Pull down drive list box pops down behind a list box which is already on the screen. Ingress WIN.INI Lines: wagl=0x4000 waglr=0x4000 Problem: Overlapping child controls. Bit: 8000 --------- Symbolic name: GACF_FORCETTGRAPHICS Meaning: Apps: Freelance WIN.INI Line: rem=0x8022 Problem: Freelance wouldn't print TT unless print TT as graphics was selected. Bit: 10000 ---------- Symbolic name: GACF_NOHRGN1 Meaning: This bit affects applications that depend on a bug in the 3.0 GetUpdateRect() function. Under 3.0, GetUpdateRect would not always return the rectangle in logical DC coordinates: if the entire window was invalid, the rectangle was sometimes returned in window coordinates. This bug was fixed for 3.0 and 3.1 apps in Windows 3.1: coordinates are ALWAYS returned in logical coordinates. This bit re- introduces the bug in GetUpdateRect(), for those applications that depend on this behavior. Apps: MSDraw WIN.INI Line: ED=0x00010000 Problem: Canvas not redrawn properly opening specific MSDraw objects in Winword. Bit: 20000 ---------- Symbolic name: GACF_NCCALCSIZEONMOVE Meaning: 3.1 optimized WM_NCCALCSIZE if a window was just moving, where 3.0 always sent it. This bit causes it to be sent always, as in 3.0. Apps: Lotus Notes WIN.INI Line: _BNOTES=0x24000 Problem: Navigator bar of window fails to redraw when the window is moved across the desktop. Bit: 40000 ---------- Symbolic name: GACF_SENDMENUDBLCLK Meaning: Passes double-clicks on a menu bar on to the app. With this bit set, if the user double clicks on the menu bar when a menu is visible, we end processing of the menu and pass the double click message on to the application. This allows Just Write to detect double click on the system menu of a maximized MDI child. The normal (and expected) behavior is for Windows to detect the double click on a sys menu of a maximized child and send the app a WM_SYSCOMMAND SC_CLOSE message which is what happens with a non-maximized MDI child window. Apps: Just Write WIN.INI Line: JW=0x00042080 Problem: Sub-editors (such as footer and header editors) couldn't be closed by double-clicking the system menu. Bit: 80000 ---------- Symbolic name: GACF_30AVGWIDTH Meaning: Changed the way we calculate avg width, this fixes it for postscript. Scale all fonts by 7/8. This flag has been added for TurboTax for printing with pscript driver. Turbo Tax has hard coded average width it uses for selecting fonts. Since we changed the way we calculate avg width to match what is in TT, Turbo Tax is broken. Apps: TurboTax WIN.INI Line: turbotax=0x80000 Problem: 1040 tax forms wouldn't print correctly. If a third party vendor fixes the problems in their application, they can recompile it so that it requires Windows 3.1; the compatibility bits will not be used. If the third party vedor wants their application to run under Winodws 3.0 and 3.1, then they can change the module name or edit the WIN.INI. Additional query words: 3.10 bitmap ====================================================================== Keywords : Technology : kbWin3xSearch kbZNotKeyword3 kbWin310 kbWin311 ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 2000.