Files
TeslaRel410/BORLAND/DTEXT23/USRBOOKS/BOOKS/OWLREF/EBT/OWLREF.DAT
T
CydandClaude Fable 5 63312e07f9 source410: literal 4.10 source reconstruction + BC++ 4.52 fleet toolchain archived
- BORLAND/: Borland C++ 4.52 (chosen over 4.5 by byte-match: CODE/RP/CW32.LIB
  is identical to 4.52's install lib). BCC32/TLINK32/TLIB/MAKE run natively on
  Win11; CODE/BT/OPT.MAK is the shipped BTL4OPT.EXE's exact flag recipe
  (extender = Borland PowerPack DPMI32, not Phar Lap TNT).
- restoration/source410/: the literal 1995-form reconstruction of the missing
  BT game source (never mixed into CODE/). Round 1-3 state:
  * 6 of 10 surviving original TUs COMPILE CLEAN under the period toolchain
    (BTMSSN, BTCNSL, BTSCNRL, BTTEAM, BTL4MODE, BTL4ARND) - first builds
    since 1996.
  * BT_L4/BTL4APP.CPP pilot reconstruction: 12/12 functions, Fail() lands on
    its binary-recorded line 400 exactly.
  * BT/BTCNSL.HPP: console wire IDs recovered from the binary's ctors
    (Killed=9, Damaged=10, ScoreUpdate=13, DeathWithoutHonor=15 [T1];
    TeamScore=12 flagged [T4]).
  * MUNGA/: 8 engine-header backfills back-dated from the BT412 WinTesla tree
    (VDATA numbering decomp-verified; AUDREND's OpenAL-era virtual removed -
    the period compiler is the drift detector).
  * Tooling: backdate.py (WinTesla->1995 header transform), compile410.sh
    (per-TU verification sweep under authentic OPT.MAK flags).
  * README: corrected roadmap - MECH.HPP is the capstone grown with the mech
    TU reconstructions; BTREG.CPP green = the header-family milestone.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 07:33:26 -05:00

521 lines
2.1 MiB
Plaintext

#EDIR DATA#
DOCTYPE='book' PUBLICID='-//HaL and OReilly//DTD DocBook//EN' SYSTEMID=''ROLE=''REMAP='zTitleBook'ID='X-82534'Borland ObjectWindows Reference GuideVERSION 2.5CLASS="TRADE"Borland International, Inc.100 Borland Way660001Scotts ValleyCA95067-00011991, 1994 Borland International. REMAP='zPrintHistory'Printed in the U.S.A.REMAP='zLegalNotice'Borland may have patents and/or pending patent applications covering subject matter in this document. The furnishing of this document does not give you any license to these patents.REMAP='zLegalNotice'All rights reserved. All Borland products are trademarks or registered trademarks of Borland International, Inc. Other brand and product names are trademarks or registered trademarks of their respective holders.REMAP='IntroTitle'REMAP='Body'This ROLE='italic'ReferenceROLE='italic' Guide can be used to help you perform the following tasks in ObjectWindows:MARK='bullet'REMAP='Bullet1'Look up the overall purpose for each class.REMAP='Bullet1'Learn the details about how to use a particular ObjectWindows class and its members and functions.REMAP='Bullet1'View the virtual and nonvirtual multiple inheritance relationships among ObjectWindows classes.REMAP='Bullet1'Learn which classes introduce or redefine functions.REMAP='Bullet1'Determine which ancestor of a class introduced a data member or member function.REMAP='Bullet1'Learn how data members and member functions are declared.REMAP='Bullet1'Create OLE2 applications easily by using ObjectComponents classes.REMAP='Bullet1'Use the Object Support Library (OSL) to support mathematical and file operations.REMAP='Bullet1'Use event-handling functions to respond to messages.REMAP='Bullet1'Use dispatch functions to crack Windows messages.REMAP='.Head1' RENDERAS="SECT1"What's new in ObjectWindows 2.5REMAP='Body'ObjectWindows 2.5 provides several new features that make it easier for you to design applications that run faster, write code that's easier to debug, and create programs that implement linking and embedding technology. ObjectWindows 2.5 provides the following enhancements over version 2.0:MARK='bullet'REMAP='Bullet1'Complete encapsulation of OLE2 using ObjectComponents includingMARK='bullet'REMAP='Bullet2'Linking and embedding containersREMAP='Bullet2'Linking and embedding serversREMAP='Bullet2'Automation serversREMAP='Bullet2'Automation controllersREMAP='Bullet2'OLE clipboard operationsREMAP='Bullet2'OLE drag and drop operationsREMAP='Bullet2'In-place editingREMAP='Bullet2'OLE user interface, including menu merging, pop-up menus for activated object verbs on the container's Edit menuREMAP='Bullet2'Compound file storageREMAP='Bullet2'RegistrationREMAP='Bullet2'Localized strings for international supportREMAP='Bullet2'Type librariesREMAP='Bullet1'New data type definitions. See LINKEND='X-25570' TYPE='XREF-TEXTCOPY'Chapter 1 of this manual for a list of the new data type definitions.REMAP='Bullet1'Internal diagnostic classes for increased debugging capabilitiesREMAP='Bullet1'ObjectSupport classes that include new classes as well as utility classes previously included in the ObjectWindows library. See LINKEND='X-25570' TYPE='XREF-TEXTCOPY'Chapter 1 of this manual for a description of the new support classes.REMAP='.Head1' RENDERAS="SECT1"Contents of this manualREMAP='Body'This manual is divided into three parts and includes two appendixes.REMAP='Body'LINKEND='X-33996' TYPE='XREF-TEXTCOPY'Part I, "ObjectWindows reference" includes the following four reference chapters:REMAP='Body'LINKEND='X-25570' TYPE='XREF-TEXTCOPY'Chapter 1, "Overview of ObjectWindows"provides an overview of the ObjectWindows classes, libraries, and header files. It organizes the classes according to functional groups and explains the purpose of each class within that group.REMAP='Body'LINKEND='X-37779' TYPE='XREF-TEXTCOPY'Chapter 2, "ObjectWindows library reference" is an alphabetical listing of all the standard ObjectWindows classes, including explanations of their purpose, usage, and members. It also describes the nonobject elements such as structures, constants, variables, and macros that classes use.REMAP='Body'LINKEND='X-12571' TYPE='XREF-TEXTCOPY'Chapter 3, "ObjectWindows event handlers" lists the ObjectWindows functions and notification codes that crack Windows messages.REMAP='Body'LINKEND='X-37947' TYPE='XREF-TEXTCOPY'Chapter 4, "ObjectWindows dispatch functions" lists all of the ObjectWindows functions that dispatch Windows messages.REMAP='Body'LINKEND='X-29852' TYPE='XREF-TEXTCOPY'Part II, "ObjectComponents reference" The second second part of this manual describes all of the classes, structures, constants, types, and macros. It includes the following chapters:REMAP='Body'LINKEND='X-16968' TYPE='XREF-TEXTCOPY'Chapter 5, "Overview of ObjectComponents" provides an overview of the classes, libraries, and header files. It describes the classes according to their functional groups and explains their purpose within that group.REMAP='Body'LINKEND='X-33812' TYPE='XREF-TEXTCOPY'Chapter 6, "ObjectComponents library reference" is an alphabetical listing of all the standard classes, including explanations of their purpose, usage, and members. It also describes the nonobject elements such as structures, constants, variables, and macros that classes use.REMAP='Body'LINKEND='X-38263' TYPE='XREF-TEXTCOPY'Part III, "ObjectSupport reference" The third part of this manual describes all of the ObjectSupport classes, structures, constants, types, and macros. It includes the following chapters:REMAP='Body'LINKEND='X-20435' TYPE='XREF-TEXTCOPY'Chapter 7, "Overview of ObjectSupport" provides an overview of the ObjectWindows classes, libraries, and header files. It organizes the classes into functional groups and explains the purpose of each class within that group.REMAP='Body'LINKEND='X-28627' TYPE='XREF-TEXTCOPY'Chapter 8, "ObjectSupport library reference" is an alphabetical listing of all the standard Object Support classes, including explanations of their purpose, usage, and members. It also describes the nonobject elements such as structures, constants, variables, and macros that classes use.REMAP='Body'LINKEND='X-32835' TYPE='XREF-TEXTCOPY'Appendix A, "Windows API encapsulated functions" lists the ObjectWindows functions that encapsulate Windows API functions.REMAP='Body'LINKEND='X-37819' TYPE='XREF-TEXTCOPY'Appendix B, "Windows API structs" lists the Windows structures that ObjectWindows uses.REMAP='.Head1' RENDERAS="SECT1"Typefaces used in this manualREMAP='.ScanBold'ROLE='bold'ROLE='bold'REMAP='.ScanBold'ROLE='bold'ROLE='bold'BoldfaceREMAP='Body'Boldface type indicates language keywords (such as ROLE='bold'char, ROLE='bold'switch, and ROLE='bold'begin) and command-line options (such as -ROLE='bold'rn).REMAP='.ScanWord'ItalicsREMAP='Body'Italic type indicates program variables and constants that appear in text. This typeface is also used to emphasize certain words, such as new terms.REMAP='.ScanBold'ROLE='bold'MOREINFO="NONE"MonospaceREMAP='Body'Monospace type represents text as it appears onscreen or in a program. It is also used for anything you must type literally (such as MOREINFO="NONE"TD32 to start up the 32-bit Turbo Debugger).REMAP='.ScanBold'ROLE='bold'MOREINFO="NONE"Key1REMAP='Body'This typeface indicates a key on your keyboard. For example, "Press MOREINFO="NONE"Esc to exit a menu."REMAP='.ScanBold'ROLE='bold'MOREINFO="NONE"Key1+Key2REMAP='Body'Key combinations produced by holding down one or more keys simultaneously are represented as MOREINFO="NONE"Key1+Key2. For example, you can execute the Program Reset command by holding down the MOREINFO="NONE"Ctrl key and pressing MOREINFO="NONE"F2 (which is represented as MOREINFO="NONE"Ctrl+F2).REMAP='.ScanWord'Menu|CommandREMAP='Body'This command sequence represents a choice from the menu bar followed by a menu choice. For example, the command "File|Open" represents the Open command on the File menu.REMAP='.ScanBold'ROLE='bold'NoteREMAP='Body'This icon indicates material you should take special notice of.REMAP='.Head1' RENDERAS="SECT1"Conventions used in this manualREMAP='Body'Cross-referenced entries to ObjectWindows functions include the class name, the scope resolution operator, and the function name. For example, REMAP='.Indent1' ROLE='indent1'See also: ROLE='italic'TApplication::PumpWaitingMessages REMAP='Body'C++ data types that are keywords (such as ROLE='bold'int and ROLE='bold'long) are in lowercase bold. Predefined Windows types (such as HWND) are in capital letters; for example,FORMAT="LINESPECIFIC"MOREINFO="NONE"bool TrackPopupMenu(uint flags, ROLE='bold'intMOREINFO="NONE" x, ROLE='bold'intMOREINFO="NONE" y, ROLE='bold'intMOREINFO="NONE" rsvd, HWND wnd, TRect* rect=0);REMAP='NumPart'ID='X-33996'ObjectWindows referenceREMAP='NumChapter'ID='X-25570'Overview of ObjectWindows REMAP='Body'This chapter provides an overview of the ObjectWindows classes, libraries, and header files. It describes the classes according to the functional groups represented on the ObjectWindows hierarchy diagram.REMAP='.Head2' RENDERAS="SECT2"Using ObjectWindows classesREMAP='Body'The ObjectWindows hierarchy includes a forest of classes that you can use, modify, or derive from in order to create your own application. This section describes these groups of classes and how you can use them to build your application. These classes, which are displayed on the ObjectWindows hierarchy chart, can be divided into the following groups.MARK='bullet'REMAP='Bullet1'Base classesREMAP='Bullet1'Window management classesMARK='bullet'REMAP='BulletNoLead2'Frame windowsREMAP='BulletNoLead2'Decorated windowsREMAP='BulletNoLead2'Common dialogsREMAP='BulletNoLead2'ControlsREMAP='BulletNoLead2'GadgetsREMAP='BulletNoLead2'MenusREMAP='Bullet1'Module and application management classesMARK='bullet'REMAP='BulletNoLead2'Command enablingREMAP='BulletNoLead2'Doc/view REMAP='BulletNoLead2'Print and print/previewREMAP='Bullet1'Graphics classesMARK='bullet'REMAP='BulletNoLead2'GDI objectsREMAP='BulletNoLead2'Device contextsREMAP='Bullet1'ValidatorsREMAP='BulletNoLead1'Exception handling classesREMAP='BulletNoLead1'Support classesREMAP='.Head2' RENDERAS="SECT2"Base classesREMAP='Body'ROLE='italic'TEventHandler, ROLE='italic'TStreamableBase, and ROLE='italic'TGdiBase are important base classes. All ObjectWindows classes are derived from one or more of these classes. Classes that inherit from ROLE='italic'TEventHandler are able to respond to window messages. Classes that inherit from ROLE='italic'TStreamableBase support streaming, that is their objects can write to and read from streams. Almost all of the ObjectWindows classes are derived from ROLE='italic'TStreamableBase. You can use multiple inheritance to derive a class from both ROLE='italic'TEventHandler and ROLE='italic'TStreamableBase. Classes that inherit from ROLE='italic'TGDIBase, a private base class, support GDI drawing objects such as pens, brushes, fonts, and bitmaps. MARK='bullet'REMAP='Bullet1'ROLE='italic'TEventHandler sends messages to the appropriate message handler.REMAP='BulletNoLead1'ROLE='italic'TStreamableBase provides support for C++ streaming and persistence.REMAP='BulletNoLead1'ROLE='italic'TGdiBase is the root class for all derived GDI classes that support Windows' GDI library.REMAP='.Head2' RENDERAS="SECT2"Window management classesREMAP='Body'Derived from ROLE='italic'TEventHandler and TStreamableBase, ROLE='italic'TWindow is the parent class for all window classes. It represents the functionality common to all windows, whether they are dialog boxes, controls, multiple document interface (MDI) windows, or layout windows. One of the fundamental ObjectWindows classes that implements OLE functionality, ROLE='italic'TOleWindow provides support for embedding objects in a compound document application. REMAP='.Head3' RENDERAS="SECT3"Frame windowsREMAP='BodyNoLead'A frame window, which is actually an application's main window, has the ability to contain other client windows and also support UI elements such as menus and icons. Serving as main windows of MDI-compliant applications, MDI frame windows manage multiple documents or windows in a single document (SDI) application. ObjectWindows also provides OLE support for both SDI and MDI applications. A floating frame window provides the same functionality but lets you position the window anywhere within the parent window. MARK='bullet'REMAP='Bullet1'ROLE='italic'TFrameWindow adds special functionality designed to simplify the managment of main windows.REMAP='Bullet1'ROLE='italic'TFloatingFrame, derived from ROLE='italic'TFloatingFrame and ROLE='italic'TTinyCaption, provides the functionality of a frame window enhanced with a tiny caption bar.REMAP='Bullet1'ROLE='italic'TMDIChild defines the behavior of MDI child windows.REMAP='Bullet1'ROLE='italic'TMDIFrame provides support for frame windows designed to be used as MDI windows.REMAP='Bullet1'ROLE='italic'TOleFrame provides OLE support for the main window of an SDI application.REMAP='Bullet1'ROLE='italic'TOleMDIFrame provides OLE support for the main window of an MDI application.REMAP='Body'Mix-in window classes such as ROLE='italic'TLayoutWindow and ROLE='italic'TClipboardViewer add the special functionality of layout capabilities and clipboards to the main window classes. Use ROLE='italic'TLayoutWindow to design the placement of a window on the screen and ROLE='italic'TClipboardViewer to view the data shared between applications.REMAP='.Head3' RENDERAS="SECT3"Decorated windowsREMAP='BodyNoLead'Multiply inherited from ROLE='italic'TFramewindow and ROLE='italic'TLayoutWindow, decorated window classes let you add decorated control bars, and status bars to the frame of a window and adjust the child window to accommodate the placement of these decorations. MARK='bullet'REMAP='Bullet1'ROLE='italic'TDecoratedFrame is basically a frame window with added decorations.REMAP='BulletNoLead1'ROLE='italic'TDecoratedMDIFrame is an MDI frame window that supports decorations.REMAP='.Head3' RENDERAS="SECT3"Common dialogsREMAP='BodyNoLead'ROLE='italic'TDialog lets you create specialized windows referred to as dialog boxes. Dialog boxes typically ask users for information about fonts, colors, files, printing options, or searching and replacing text. Depending on their purpose, dialog boxes can be either modal, those which prevent a user from selecting other windows, or modeless, those which permit a user to select other windows.REMAP='Body'You can create your own customized dialog boxes or use one of the ObjectWindows classes that encapsulates Windows' common dialog boxes. The following common dialog classes are derived from ROLE='italic'TCommonDialog which is itself derived from ROLE='italic'TDialog, the base dialog box class.MARK='bullet'REMAP='Bullet1'ROLE='italic'TChooseFontDialog objects represent modal dialog boxes allow font selection, style, point, size, and color.REMAP='Bullet1'ROLE='italic'TChooseColorDialog objects represent modal dialog boxes that allow color selection and custom color adjustment.REMAP='Bullet1'ROLE='italic'TOpenSaveDialog is the base class for modal dialog boxes that let you open and save a file under a specified name.REMAP='Bullet1'ROLE='italic'TPrintDialog displays a modal print or a printer setup dialog box.REMAP='Bullet1'ROLE='italic'TFindReplaceDialog is the base class for modeless dialog boxes that let you search for and replace text.REMAP='.Head3' RENDERAS="SECT3"ControlsREMAP='BodyNoLead'The control classes support standard Windows controls such as list boxes, combo boxes, group boxes, check boxes, scroll bars, buttons, radio buttons, edit controls, and static controls.REMAP='Body'Although most windows come with scroll bars already installed, you can use ROLE='italic'TScrollBar to create a standalone vertical or horizontal scroll bar, for example, as a dialog box control.REMAP='Body'Unlike standard Windows controls, ObjectWindows supports widgets, specialized controls written entirely in C++. The widget classes ObjectWindows provides include support for sliders, controls that are used for providing nonscrolling position information, and gauges, controls that provide duration or analog information about a particular process.MARK='bullet'REMAP='Bullet1'TSlider defines the basic behavior of sliders.REMAP='BulletNoLead1'ROLE='italic'THSlider implements horizontal sliders.REMAP='BulletNoLead1'ROLE='italic'TVSlider implements vertical sliders.REMAP='BulletNoLead1'ROLE='italic'TGauge defines the basic behavior of gauge controls.REMAP='.Head3' RENDERAS="SECT3"GadgetsREMAP='BodyNoLead'ROLE='italic'TGadget is the base class for several derived classes that support gadget objects that belong to a gadget window, have borders and margins, and their own style attributes. Derived from ROLE='italic'TWindow, ROLE='italic'TGadgetWindow maintains a list of gadgets, controls the display of the gadgets, and sends the necessary messages to the gadgets.REMAP='Body'Additional gadget classes derived from ROLE='italic'TGadgetWindow such as ROLE='italic'TToolBox, ROLE='italic'TMessageBar, ROLE='italic'TStatusBar, and ROLE='italic'TControlBar manipulate gadgets in different ways so that you can enhance a bar or tool box attached to a frame window.MARK='bullet'REMAP='Bullet1'ROLE='italic'TToolBox lets you place a set of gadgets in a matrix of columns and rows.REMAP='Bullet1'ROLE='italic'TMessageBar implements a message bar with one text gadget.REMAP='Bullet1'ROLE='italic'TStatusBar lets you include multiple text gadgets and different border styles in a status bar.REMAP='Bullet1'ROLE='italic'TControlBar implements a control bar that provides a set of buttons on a bar in a frame window.REMAP='.Head3' RENDERAS="SECT3"MenusREMAP='BodyNoLead'ROLE='italic'TMenu and its derived classes let you construct, modify, and create menu objects. The classes derived from ROLE='italic'TMenu includeMARK='bullet'REMAP='Bullet1'ROLE='italic'TPopupMenu lets you add a popup menu to an existing window or popup menu.REMAP='BulletNoLead1'ROLE='italic'TSystemMenu creates a system menu object.REMAP='.Head2' RENDERAS="SECT2"Module management classesREMAP='Body'Derived from ROLE='italic'TModule, ROLE='italic'TApplication supplies functionality common to all ObjectWindows applications. Classes derived from ROLE='italic'TApplication have the ability to create instances of a class, create main windows, and process messages. ROLE='italic'TModule defines behavior shared by both library (DLL) and application modules. Virtually derived from ROLE='italic'TModule, ROLE='italic'TBiVbxLibrary lets you add Visual Basic (VBX) controls to your application. REMAP='.Head2' RENDERAS="SECT2"Doc/View classesREMAP='Body'Doc/View class support the Doc/View model, a system in which data is contained in and accessed through a document object, and displayed and manipulated through a view object. Any number of views can be associated with a particular document type. Various classes control the flow of information within this system. Several classes also provide support for OLE's compound document and compound file structure within the Doc/View model.REMAP='Body'ROLE='italic'TDocManager is the base class designed to handle documents, templates, messages and so on.MARK='bullet'REMAP='Bullet1'ROLE='italic'TDocument is an abstract base class that serves as an interface between the document, its views and its document manager.REMAP='Bullet1'ROLE='italic'TStorageDocument supports OLE's compound file structure and lets you create compound documents with embedded objects.REMAP='Bullet1'ROLE='italic'TOleDocument implements the document half of an OLE-enabled Doc/View application.REMAP='Bullet1'ROLE='italic'TView is the base class that displays the document's data and gets user input.REMAP='Bullet1'ROLE='italic'TListView supports views for list boxes.REMAP='Bullet1'ROLE='italic'TOleView supports the view half of an OLE-enabled Doc/View application.REMAP='.Head2' RENDERAS="SECT2"Printer classesREMAP='Body'ROLE='italic'TPrinter, ROLE='italic'TPrintout, and ROLE='italic'TPreviewPage provide various functions that make it easy for you to set up a printer dialog box, view a document in a print preview window, and print a document. MARK='bullet'REMAP='Bullet1'ROLE='italic'TPrinter represents the physical printer device.REMAP='BulletNoLead1'ROLE='italic'TPrintout represents the physical printed document sent to the printerREMAP='BulletNoLead1'ROLE='italic'TPreviewPage displays a page of a document in a print preview window.REMAP='.Head2' RENDERAS="SECT2"Graphics classesREMAP='Body'ObjectWindows GDI classes encapsulate Windows' Graphics Device Interface (GDI) to make it easier to use device context (DC) classes and GDI objects. The GDI library supports device independent drawing operations using DIBS (device independent bitmaps).REMAP='.Head3' RENDERAS="SECT3"DC classesREMAP='BodyNoLead'Instead of drawing directly on a device (like the screen or a printer), you can use GDI classes to draw on a bitmap using a device context (DC). A ROLE='italic'device context is a structure that contains information about the drawing attributes (pens, brushes, text color, and so on) of a particular device. DC classes support a variety of device context operations.MARK='bullet'REMAP='Bullet1'ROLE='italic'TDC is the root class for GDI DC wrapper classes.REMAP='Bullet1'ROLE='italic'TWindowDC and its derived classes such as ROLE='italic'TClientDC and ROLE='italic'TScreenDC provide access to the area owned by a window.REMAP='Bullet1'ROLE='italic'TCreatedDC and its derived classes provide access to various DCs that are created and deleted such as memory and print DCs.REMAP='.Head3' RENDERAS="SECT3"GDI classesREMAP='BodyNoLead'ObjectWindows graphics library contains several classes that you can use to create DIBS, brushes, palettes, pens, and other drawing tools.MARK='bullet'REMAP='Bullet1'ROLE='italic'TGdiBase is the private base class from which ROLE='italic'TGDIObject, ROLE='italic'TIcon, ROLE='italic'TCursor, and ROLE='italic'TDib are derived.REMAP='Bullet1'ROLE='italic'TGDIObject is a base class for several other GDI classes that support drawing tools.REMAP='Bullet1'ROLE='italic'TDib encapsulates the creation of structures containing format and palette information.REMAP='Bullet1'ROLE='italic'TCursor encapsulates GDI cursor objects.REMAP='.Head2' RENDERAS="SECT2"Validator classesREMAP='Body'ROLE='italic'TValidator forms the base class for several ObjectWindows classes that encapsulate validation objects. The following derived classes make it easy for you to add data validation to your applications.MARK='bullet'REMAP='Bullet1'ROLE='italic'TFilterValidator and its derived class, ROLE='italic'TRangeValidator, check an input field as the user types data into the field in order to determine the validity of the entered data.REMAP='Bullet1'ROLE='italic'TPXPictureValidator compares user input with a picture of a data format.REMAP='Bullet1'ROLE='italic'TLookupValidator compares a string typed by a user with a list of acceptable values.REMAP='.Head2' RENDERAS="SECT2"Exception handling classesREMAP='Body'Exception handling classes provide various functions that help you write error-free ObjectWindows applications. ROLE='italic'TXBase is the base class for all ObjectWindows and ObjectComponents classes. Derived from the ROLE='italic'TXBase class, ROLE='italic'TXOwl is the base class for the following ObjectWindows exception classes:MARK='bullet'REMAP='Bullet1'ROLE='italic'TXCompatibility is included for backward compatibility with ObjectWindows 1.0 code.REMAP='Bullet1'ROLE='italic'TXOutOfMemory describes exceptions that arise from out of memory conditions.REMAP='Bullet1'Nested exception classes such asROLE='italic' TXInvalidMainWindow, TXInvalidModule, TXWIndow, TXMenu, TXValidator, TXGdi, and ROLE='italic'TXPrinter describe specific error conditions such as those that occur when a main window, a module, a menu object, a validator object, a GDI object, or a printer device context is invalid.REMAP='.Head2' RENDERAS="SECT2"Command enabling classesREMAP='Body'Although several ObjectWindows classes process commands, there are three classes specifically devoted to enabling and disabling the commands available to an application.MARK='bullet'REMAP='Bullet1'ROLE='italic'TCommandEnabler is the base class from which ROLE='italic'TButtonGadgetEnabler and ROLE='italic'TMenuItemEnabler are derived. REMAP='Bullet1'ROLE='italic'TButtonGadgetEnabler enables and disables button gadgets.REMAP='Bullet1'ROLE='italic'TMenuItemEnabler enables and disables menu options and places check marks by menu options.REMAP='.Head2' RENDERAS="SECT2"ObjectSupport Library ClassesREMAP='Body'ObjectSupport classes provide various services that help you design your ObjectWindows application. For example, the class ROLE='italic'TLocaleString localizes OLE registration information required for containers and servers. These classes include the following groups:MARK='bullet'REMAP='Bullet1'Mathematical classes such as ROLE='italic'TPoint, TSize, and ROLE='italic'TRect that define screen coordinates and properties of rectangles.REMAP='Bullet1'Registration and localization classes such as ROLE='italic'TRegList and ROLE='italic'TLocaleString simplify the process of registering OLE containers and servers.REMAP='Bullet1'Document template classes that make it easier to design Doc/View applications.REMAP='Body'The following table lists the files included in the Object Support Library (..\OSL directory).TOCENTRY="1"REMAP='TblCap'Summary of the ObjectSupport library filesCOLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='53*'COLNAME='C2' COLWIDTH='93*'COLNAME='C3' COLWIDTH='186*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'File nameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Class definitionCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'UseVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'defs.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Contains common definitions, including windows.h definitions, and deals with BOOL data types.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'doctpl.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TDocTemplateCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates the Doc/View classes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TDocTemplateT<D,V>COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Registers the associated document and view classes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'except.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TXBaseCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Base exception-handling class for ObjectWindows and ObjectComponents classes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'geometry.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TDropInfoCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Supports file name drag and drop operations.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TPoint, TSize, TRectCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Mathematical classes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TPointerCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Provides exception-safe pointer manipulation.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TProcInstanceCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'A Win16 support class.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TResIdCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'A resource ID.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'locale.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TLocaleStringCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Localizable substitute for char*.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TRegItemCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'An item for the system registry.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TRegListCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'List of registration items.REMAP='.Head1' RENDERAS="SECT1"ObjectWindows LibrariesREMAP='Body'The following tables list the ObjectWindows static and dynamic libraries, their uses, and the operating system under which the library is available. These files are in your library directory.REMAP='Body'The name of the OWLWx.LIB file varies, depending on several factorsname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'whether you are building a small, medium, or large memory model application or a WIN16 or WIN32 application. For example, if the application is built for a 16-bit, small memory model, the name of the library file is OWLWS.LIB. If you're building a flat model WIN32 application, the name of the library file is OWLWF.LIB where "F" indicates a flat model application. If runtime diagnostics are enabled, ObjectWindows adds "D" to the name of the libary.REMAP='Body'Different versions of these files are included on your installation disk. If the diagnostic files are not shipped, you can build these files by adding the switch -DDIAGS to the ObjectWindows makefile located in your ..\EXAMPLES subdirectory.TOCENTRY="1"REMAP='TblCap'Summary of static libraries COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='72*'COLNAME='C2' COLWIDTH='72*'COLNAME='C3' COLWIDTH='193*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'File nameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'ApplicationCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'UseVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWLWS.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win16COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'16-bit small modelCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWLWM.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win16COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'16-bit medium modelCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWLWL.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win16COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'16-bit large modelCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWLWI.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win16COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'16-bit import library for OWL250.DLLCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWLDWS.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win16COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'16-bit diagnostic small modelCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWLDWM.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win16COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'16-bit diagnostic medium modelCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWLDWL.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win16COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'16-bit diagnostic large modelCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWLDWI.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win16COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'16-bit diagnostic import libraryCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWLWIU.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win16COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'16-bit large static for user .DLLCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWLWLU.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win16COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'16-bit import static for user .DLLCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWLWF.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win32, Win32sCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'32-bit libraryCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWLWFI.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win32, Win32sCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'32-bit import library for OWL250F.DLLCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWLDWF.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win32, Win32sCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'32-bit diagnostic libraryCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWLDWFI.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win32, Win32sCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'32-bit diagnostic import libraryREMAP='Body'The dynamic-link library (DLL) versions of ObjectWindows are contained in the \BIN subdirectory of the installation. The following table lists the DLL names and uses, and the operating system under which each library is available.TOCENTRY="1"REMAP='TblCap'Summary of dynamic link libraries COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='72*'COLNAME='C2' COLWIDTH='72*'COLNAME='C3' COLWIDTH='167*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'File nameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'ApplicationCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'UseVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWL250.DLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win 16COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'16-bit dynamic libraryCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWL250F.DLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win 32COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'32-bit dynamic libraryCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWL250D.DLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win 16COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Diagnostic version of 16-bit dynamic libraryCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWL250DF.DLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Win 32COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Diagnostic version of 32-bit dynamic libraryREMAP='.Head2' RENDERAS="SECT2"Compiler options for building and using ObjectWindows librariesREMAP='Body'You need to use different compiler options depending on whether you are building or using ObjectWindows DLLs or static libraries. Unless you specify otherwise, ObjectWindows makes several assumptions about the default values for system platforms and memory models. That is, ObjectWindows assumes that the platform is win16 unless MODEL is explicitly set to "f," in which case ObjectWindows assumes that the platform is Win32. The default MODEL setting is "d," where "d" indicates that you are building the DLL version of an library.REMAP='Body'The following table lists the combinations of SYSTEM and MODEL settings you can use to build the specified target applications.TOCENTRY="1"REMAP='TblCap'Target applications and compiler options COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='174*'COLNAME='C2' COLWIDTH='74*'COLNAME='C3' COLWIDTH='73*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'For this target application:COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Use SYSTEM=COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Use MODEL=VALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'16-bit Windows small model static versionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'WIN16COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'sCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'16-bit Windows medium model static versionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'WIN16COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'mCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'16-bit Windows compact model static versionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'WIN16COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'cCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'16-bit Windows large model static versionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'WIN16COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'lCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'16-bit Windows large model DLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'WIN16COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'dCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'32-bit Windows static versionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'WIN32COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'fCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'32-bit Windows DLL COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'WIN32COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'dREMAP='.Head3' RENDERAS="SECT3"Building ObjectWindows librariesREMAP='BodyNoLead'If you are building ObjectWindows DLLs and libraries, you need to use several pre-defined macros. For example, defining the make macro USERDLL builds ObjectWindows for use in a user DLL and adds the suffix, "U" to the name of the library. The preprocessor macro _BUILDOWLDLL, which must be defined to build the ObjectWindows DLL, sets the values for the _OWLCLASS, _OWLDATA, _OWLFUNC macros.REMAP='Body'The following table lists the make options you need to use if you are building either 16- or 32-bit ObjectWindows. You can specify the system model as either s (small), m (medium), l (large), f (flat), or d (DLL). The make options you set are then responsible for generating the specified preprocessor macro, which, in turn, generates the indicated values for the _OWLCLASS, _OWLDATA, and _OWLFUNC macros and builds the appropriate library. For an example of how these settings are used, see the makefile in the \SOURCE\OWL directory or owldefs.h in the INCLUDE\OWL directory..TOCENTRY="1"REMAP='TblWideCap'ROLE='BOLD'Summary of options for building an ObjectWindows static or dynamic library COLS='5' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='99*'COLNAME='C2' COLWIDTH='107*'COLNAME='C3' COLWIDTH='86*'COLNAME='C4' COLWIDTH='67*'COLNAME='C5' COLWIDTH='61*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'If you are building an:COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Use these Make options:COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Preprocessor macroCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Heading'_OWLCLASSREMAP='Tbl.Heading'_OWLDATAREMAP='Tbl.Heading'_OWLFUNCCOLNAME='C5' MOREROWS='0' NAMEEND='C5' NAMEST='C5' ROTATE='0'REMAP='Tbl.Heading'LibrariesVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C5' NAMEST='C1' ROTATE='0'REMAP='Tbl.Subhead'ROLE='bold'ObjectWindows DLLCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'16-bit EXECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MODEL = dCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'_BUILDOWLDLLCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'All are defined as __export.COLNAME='C5' MOREROWS='0' NAMEEND='C5' NAMEST='C5' ROTATE='0'REMAP='Tbl.Body'OWLWI.LIB COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'32-bit EXE or DLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MODEL = dREMAP='Tbl.Body'-DWIN32COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'_BUILDOWLDLLCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'All are defined as __exportCOLNAME='C5' MOREROWS='0' NAMEEND='C5' NAMEST='C5' ROTATE='0'REMAP='Tbl.Body'OWLWFI.LIBCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'REMAP='Tbl.Body'REMAP='Tbl.Body'16-bit DLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MODEL = dREMAP='Tbl.Body'-D USERDLLCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'_BUILDOWLDLLCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'All are defined as __export.COLNAME='C5' MOREROWS='0' NAMEEND='C5' NAMEST='C5' ROTATE='0'REMAP='Tbl.Body'OWLWIU.LIB COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Subhead'ROLE='bold'ObjectWindows static libraryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Subhead'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'COLNAME='C5' MOREROWS='0' NAMEEND='C5' NAMEST='C5' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'16-bit EXECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MODEL = s or m or lCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'NothingCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'NothingCOLNAME='C5' MOREROWS='0' NAMEEND='C5' NAMEST='C5' ROTATE='0'REMAP='Tbl.Body'OWLWS.LIBREMAP='Tbl.Body'OWLWM.LIB OWLWL.LIBCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'32-bit EXE or DLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MODEL = fREMAP='Tbl.Body'-DWIN32COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'NothingCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'NothingCOLNAME='C5' MOREROWS='0' NAMEEND='C5' NAMEST='C5' ROTATE='0'REMAP='Tbl.Body'OWLWF.LIBCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'16-bit DLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MODEL = lREMAP='Tbl.Body'-DUSERDLLCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'NothingCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'NothingCOLNAME='C5' MOREROWS='0' NAMEEND='C5' NAMEST='C5' ROTATE='0'REMAP='Tbl.Body'OWLWLU.LIBREMAP='.Head3' RENDERAS="SECT3"Using ObjectWindows librariesREMAP='BodyNoLead'This table lists the make options you need to specify if you are using either 16- or 32-bit ObjectWindows applications. You can specify the memory model as either s (small), m (medium), l (large), f (flat), or d(DLL). (Keep in mind that the make options SYSTEM=WIN32 and -DWIN32 are the same.) The make options you set are then responsible for generating the specified preprocessor macro, which, in turn, generates the indicated values for the _OWLCLASS, _OWLDATA, and _OWLFUNC macros and builds the appropriate library. For an example of how these settings are used, see MAKEFILE.GEN in the \OWL\EXAMPLES directory.TOCENTRY="1"REMAP='TblWideCap'Summary of options for using an ObjectWindows static or dynamic library COLS='5' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='91*'COLNAME='C2' COLWIDTH='107*'COLNAME='C3' COLWIDTH='91*'COLNAME='C4' COLWIDTH='66*'COLNAME='C5' COLWIDTH='64*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'If you are using an:COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Use these Make options:COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Preprocessor macroCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Heading'_OWLCLASSREMAP='Tbl.Heading'_OWLDATAREMAP='Tbl.Heading'_OWLFUNCCOLNAME='C5' MOREROWS='0' NAMEEND='C5' NAMEST='C5' ROTATE='0'REMAP='Tbl.Heading'LibrariesVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C5' NAMEST='C1' ROTATE='0'REMAP='Tbl.Subhead'ROLE='bold'ObjectWindows DLLCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'16-bit EXECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MODEL = dCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'_OWLDLLCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'All are defined as __importCOLNAME='C5' MOREROWS='0' NAMEEND='C5' NAMEST='C5' ROTATE='0'REMAP='Tbl.Body'OWLWI.LIBCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'32-bit DLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MODEL = dREMAP='Tbl.Body'-DWIN32COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'_OWLDLLCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'All are defined as __importCOLNAME='C5' MOREROWS='0' NAMEEND='C5' NAMEST='C5' ROTATE='0'REMAP='Tbl.Body'OWLWFI.LIBCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'16-bit DLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MODEL = dCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'_OWLDLLCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'All are defined as __importCOLNAME='C5' MOREROWS='0' NAMEEND='C5' NAMEST='C5' ROTATE='0'REMAP='Tbl.Body'OWLWIU.LIBCOLNAME='C1' MOREROWS='0' NAMEEND='C5' NAMEST='C1' ROTATE='0'REMAP='Tbl.Subhead'ROLE='bold'ObjectWindows static libraryCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'16-bit EXECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MODEL = s or m or lCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'NothingCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'NothingCOLNAME='C5' MOREROWS='0' NAMEEND='C5' NAMEST='C5' ROTATE='0'REMAP='Tbl.Body'OWLWS.LIBREMAP='Tbl.Body'OWLWM.LIBREMAP='Tbl.Body'OWLWL.LIBCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'32-bit EXE or DLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MODEL = fREMAP='Tbl.Body'-DWIN32COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'NothingCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'NothingCOLNAME='C5' MOREROWS='0' NAMEEND='C5' NAMEST='C5' ROTATE='0'REMAP='Tbl.Body'OWLWF.LIBCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'16-bit DLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MODEL = lCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'NothingCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'NothingCOLNAME='C5' MOREROWS='0' NAMEEND='C5' NAMEST='C5' ROTATE='0'REMAP='Tbl.Body'OWLWLU.LIBREMAP='Body'The following table lists the makefile and compiler options for the OWLFARVTABLE macro, which moves ObjectWindows virtual function tables (vtables) out of the DGROUP of the data segment and stores them in the code segment..TOCENTRY="1"REMAP='TblCap'Compile options for _OWLCLASS macro COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='109*'COLNAME='C2' COLWIDTH='108*'COLNAME='C3' COLWIDTH='157*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Use this compile option:COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Define in your makefile:COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'With this result:VALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'_OWLFARVTABLEREMAP='Tbl.Body'_BIDSFARVTABLEREMAP='Tbl.Body'_RTLFARVTABLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'OWLFARVTABLECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Adds _huge to the _OWLCLASS class modifier when static models are used.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'_FASTTHISCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Doesn't applyCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Adds _fastthis to the _OWLCLASS macro.REMAP='.Head1' RENDERAS="SECT1"The ObjectWindows header filesREMAP='Body'Header files contain prototype declarations for class functions, and definitions for data types and symbolic constants.TOCENTRY="1"REMAP='TblCap'Summary of header files COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='56*'COLNAME='C2' COLWIDTH='112*'COLNAME='C3' COLWIDTH='205*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'File nameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Class definitionCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'UseVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C3' NAMEST='C1' ROTATE='0'REMAP='Tbl.Subhead'ROLE='bold'Directory of \INCLUDE\OWLCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'appdict.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TAppDictionaryCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Contains a set of assoications between an application and a process ID.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'applicat.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TApplicationCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Controls the basic behavior of all ObjectWindows applications.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bitmapga.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TBitmapGadgetCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'A set including but no more than 256 items managed by bits.COLNAME='C1' MOREROWS='1' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bitset.hCOLNAME='C2' MOREROWS='1' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TBitSetREMAP='Tbl.Body'TCharSetCOLNAME='C3' MOREROWS='1' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Sets or clears one or more bits.REMAP='Tbl.Body'A set of charactersCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'button.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TButtonCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates different types of button controls.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'buttonga.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TButtonGadgetCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates button gadgets that can be clicked on or off.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'celarray.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TCelArrayCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates an array of bitmap cels.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'checkbox.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TCheckBoxCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Represents a check box control.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'chooseco.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TChooseColorCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Represents modal dialog boxes that allow color selection.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'choosefo.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TChooseFontCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Represents modal dialog boxes that allow font selection.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'clipboar.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TClipboardCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Contains functions that control how Clipboard data is handled.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'clipview.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TClipboardViewerCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Registers a TClipboardViewer as a Clipboard viewer.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'color.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TColorCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Contains functions used to simplify standard Windows color operations.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'combobox.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TComboboxCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates combo boxes or combo box controls in a window, and class TComboBoxData, which is used to transfer data between combo boxes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'commdial.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TCommonDialogCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Abstract base class for TCommonDialog objects.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'compat.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Defines functions and constants used internally by ObjectWindows.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'control.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TControlCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Used to create control objects in derived classes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'controlb.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TControlBarCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Implements a control bar that provides mnemonic access for its button gadgets.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'controlg.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TControlGadgetCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Allows controls to be placed in a gadget window.COLNAME='C1' MOREROWS='6' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dc.hCOLNAME='C2' MOREROWS='6' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TBandInfo, TClientDC, TCreatedDC, TDC, TDesktopDC, TDibDC TIC, TMemoryDC, TMetaFileDC, TPaintDC TPrintDC, TScreenDC, TWindowDCCOLNAME='C3' MOREROWS='6' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'GDI DC wrapper classes that create DC objects.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'decframe.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TDecoratedFrameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates a client window into which decorations can be placed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'decmdifr.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TDecoratedMDIFrameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates a frame object that supports decorated child windows.COLNAME='C1' MOREROWS='1' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dialog.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TDialogCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates modal and modeless dialog box interface elements.COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TDialogAttrCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Holds the dialog box element's attributes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dispatch.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Defines dispatch functions designed to crack Windows messages.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'docmanag.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TDocManagerCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates a document manager object that manages the documents and templates.COLNAME='C1' MOREROWS='1' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'doctpl.hCOLNAME='C2' MOREROWS='1' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TDocTemplateREMAP='Tbl.Body'TDocTemplateTCOLNAME='C3' MOREROWS='1' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates the templates.REMAP='Tbl.Body'Registers the associated document and view classesCOLNAME='C1' MOREROWS='2' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'docview.hCOLNAME='C2' MOREROWS='2' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TDocument, TView, TWindowView, TStream, TInStream, TOutStreamCOLNAME='C3' MOREROWS='2' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Create, destroy, and send messages about document views.REMAP='Tbl.Body'Define streams for documents.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'edit.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEditCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates an edit control interface element.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'editfile.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEditFileCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates a file editing window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'editsear.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEditSearchCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates an edit control that responds to search and replace commands.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'editview.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEditViewCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'View wrapper for TEdit.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'eventhan.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEventHandlerCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Used to derive class capable of handling messages.COLNAME='C1' MOREROWS='4' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'except.hCOLNAME='C2' MOREROWS='4' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TXBaseREMAP='Tbl.Body'TXOwlREMAP='Tbl.Body'TXCompatibilityREMAP='Tbl.Body'TXOutOfMemoryREMAP='Tbl.Body'TStatusCOLNAME='C3' MOREROWS='4' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Base exception-handling class for ObjectWindows and ObjectComponents classes.REMAP='Tbl.Body'Base exception-handling class for ObjectWindows classes.REMAP='Tbl.Body'Included for backward compatibility.REMAP='Tbl.Body'Describes an out-of-memory exception.REMAP='Tbl.Body'Describes a status exception.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'filedoc.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TFileDocumentCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Opens and closes document views.COLNAME='C1' MOREROWS='1' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'findrepl.hCOLNAME='C2' MOREROWS='1' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TFindDialog,REMAP='Tbl.Body'TFindReplaceDialog::COLNAME='C3' MOREROWS='1' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'These classes create and define the attributes of modeless dialog boxes that respond to search and replace commands.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'floatfra.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TFloatingFrameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Implements a floating frame within a parent window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'framewin.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TFrameWindowCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Controls window-specific behavior such as keyboard navigation and command processing.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'gadget.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TGadgetCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates gadget objects that belong to a gadget window and have specified attributes.COLNAME='C1' MOREROWS='2' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'gadgetwi.hCOLNAME='C2' MOREROWS='2' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TGadgetWindowREMAP='Tbl.Body'TGadgetWindowFontREMAP='Tbl.Body'TSeparatorGadgetCOLNAME='C3' MOREROWS='2' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Maintains a list of tiled gadgets for a window.REMAP='Tbl.Body'Defines the font used in gadget windows.REMAP='Tbl.Body'Creates a separator between gadgets.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'gauge.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TGaugeCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Establishes the behavior of gauge controls.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'gdibase.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TGdiBaseCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Abstract base class for all GDI classes.COLNAME='C1' MOREROWS='4' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'gdiobjec.hCOLNAME='C2' MOREROWS='4' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TGdiObjectREMAP='Tbl.Body'TPen, TBrush, TFontREMAP='Tbl.Body'TPalette, TBitmap,REMAP='Tbl.Body'TIcon, TCursor, TDib,REMAP='Tbl.Body'TRegionCOLNAME='C3' MOREROWS='4' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Base GDI class.REMAP='Tbl.Body'These classes create specified GDI objects.COLNAME='C1' MOREROWS='4' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'geometry.hCOLNAME='C2' MOREROWS='4' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TPoint, TSize, TRectREMAP='Tbl.Body'TDropInfoREMAP='Tbl.Body'TProcInstanceREMAP='Tbl.Body'TPointerREMAP='Tbl.Body'TResIdCOLNAME='C3' MOREROWS='4' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Mathematical classes.REMAP='Tbl.Body'Supports file name drag and drop operations.REMAP='Tbl.Body'A Win16 support class. REMAP='Tbl.Body'Provides exception-safe pointer manipulation.REMAP='Tbl.Body'Creates a resource ID.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'groupbox.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TGroupBoxCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates a group box object that represents a group box element in Windows.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'inputdia.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TInputDialogCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates a generic dialog box that accepts text.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'layoutco.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TLayoutConstraintCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates layout constraints.COLNAME='C1' MOREROWS='1' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'layoutwi.hCOLNAME='C2' MOREROWS='1' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TLayoutMetricsREMAP='Tbl.Body'TLayoutWindowCOLNAME='C3' MOREROWS='1' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Contains the layout constraints used to define the layout metrics for a window.REMAP='Tbl.Body'Provides layout options for a window.COLNAME='C1' MOREROWS='1' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'listbox.hCOLNAME='C2' MOREROWS='1' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TListBoxREMAP='Tbl.Body'TListBoxDataCOLNAME='C3' MOREROWS='1' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates a list box object.REMAP='Tbl.Body'Used to transfer the contents of a list box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'listview.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TListViewCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Provides views for list boxes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'locale.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TLocaleStringCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Localizable substitute for char*.COLNAME='C1' MOREROWS='1' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'mdi.hCOLNAME='C2' MOREROWS='1' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TMDIClientREMAP='Tbl.Body'TMDIFrameCOLNAME='C3' MOREROWS='1' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Manages MDI child windows.REMAP='Tbl.Body'The main window of MDI-compliant applications.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'mdichild.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TMDIChildCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Defines the behavior of MDI child windows.COLNAME='C1' MOREROWS='2' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'menu.hCOLNAME='C2' MOREROWS='2' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TMenu, TPopupMenu,REMAP='Tbl.Body'TSystemMenuREMAP='Tbl.Body'TMenuDescrCOLNAME='C3' MOREROWS='2' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Create menu objects.REMAP='Tbl.Body'Base menu class.REMAP='Tbl.Body'A menu bar with groups.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'messageb.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TMessageBarCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Implements a message bar.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'metafile.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TMetaFilePictCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'A wrapper class used with TMetaFileDC.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'module.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TModuleCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Defines the basic behavior for ObjectWindows libraries and applications.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'oledoc.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TOleDocumentCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Implements the Document half of the Doc/View pair.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'olefacto.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TAutoFactory<>COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Template class that supports component create callbacks for automated OLE-enabled applications.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'olefacto.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TOleFactory<>REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Template class that supports component create callbacks for Doc/View and non-Doc/View OLE-enabled applications.COLNAME='C1' MOREROWS='1' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'oleframe.hCOLNAME='C2' MOREROWS='1' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TOleFrameCOLNAME='C3' MOREROWS='1' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Supports OLE-enabled main windows for SDI applications.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'olemdifr.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TOleMDIFrameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Supports OLE-enabled main windows for MDI applications.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'oleview.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TOleViewCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Supports the View half of the Doc/View pair.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'olewindo.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TOleClientDCCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Translates between two different coordinate systems.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'opensave.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TOpenSaveCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Base class for modal open and save dialog boxes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'owlall.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Include file for all of the ObjectWindows classes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'owlcore.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Include file for the core ObjectWindows classes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'owldefs.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Includes definitions of macros used by all ObjectWindows programs.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'owlpch.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Contains definitions of macros, data, and functions used by ObjectWindows.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'preview.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TPreviewPageCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Displays a document page in a print preview window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TPrintPreviewDCCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Maps printer device coordinates to screen coordinates.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'printdia.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TPrintDialogCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Displays a modal print or print setup dialog box.COLNAME='C1' MOREROWS='2' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'printer.hCOLNAME='C2' MOREROWS='2' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TPrinterREMAP='Tbl.Body'TPrintoutREMAP='Tbl.Body'TPrinterAbortDlgCOLNAME='C3' MOREROWS='2' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Represents the printer device.REMAP='Tbl.Body'Represents the printed document.REMAP='Tbl.Body'Represents the printer-abort dialog box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'radiobut.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TRadioButtonCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Create a radio button control.COLNAME='C1' MOREROWS='1' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'scrollba.hCOLNAME='C2' MOREROWS='1' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TScrollBarREMAP='Tbl.Body'TScrollBarDataCOLNAME='C3' MOREROWS='1' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Represents a vertical or horizontal scroll bar control.REMAP='Tbl.Body'Contains the values of the thumb position on the scroll bar.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'scroller.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TScrollerCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Implements automatic window scrolling.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'signatur.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Defines the message cracking signature templates used by ObjectWindows event-handling functions.COLNAME='C1' MOREROWS='2' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'slider.hCOLNAME='C2' MOREROWS='2' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TSliderREMAP='Tbl.Body'THSliderREMAP='Tbl.Body'TVSliderCOLNAME='C3' MOREROWS='2' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Defines the basic behavior of sliders.REMAP='Tbl.Body'A horizontal slider.REMAP='Tbl.Body'A vertical slider.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'static.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TStaticCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Create a static control in a window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'statusba.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TStatusBarCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Constructs a status bar.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'stgdoc.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TStorageDocumentCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Supports compound file structure mechanisms.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'textgadg.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TTextGadgetCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Construct a text gadget object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tinycapt.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TTinyCaptionCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Produces a smaller caption bar for a window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'toolbox.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TToolBoxCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates a toolbox object with a specified number of rows and columns.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'uihandle.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TUIHandleCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Defines and draws UI handles.COLNAME='C1' MOREROWS='5' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'validate.hCOLNAME='C2' MOREROWS='5' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TValidator, REMAP='Tbl.Body'TPXPictureValidatorREMAP='Tbl.Body'TFilterValidator, REMAP='Tbl.Body'TRangeValidator, REMAP='Tbl.Body'TLookupValidator, REMAP='Tbl.Body'TStringLookupValidatorCOLNAME='C3' MOREROWS='5' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Base validator class.REMAP='Tbl.Body'Picture validator.REMAP='Tbl.Body'Filter validator.REMAP='Tbl.Body'Range validatator.REMAP='Tbl.Body'Lookup validation.REMAP='Tbl.Body'String validation.COLNAME='C1' MOREROWS='2' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'vbxctl.hCOLNAME='C2' MOREROWS='2' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TVbxControlREMAP='Tbl.Body'TVbxEventHandlerREMAP='Tbl.Body'TBIVbxLibrary.COLNAME='C3' MOREROWS='2' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Interface for VBX controls.REMAP='Tbl.Body'Handles events from VBX controls.REMAP='Tbl.Body'Loads and initializes BIVBXxx.DLL.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'version.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Defines the internal version number of the ObjectWindows library.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'window.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TWindowCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Provides window-specific behavior and encapsulates many of the Windows API functions.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'windowev.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Defines event handlers and response table macros for Windows messages.REMAP='.Head1' RENDERAS="SECT1"The ObjectWindows resource filesREMAP='Body'The ObjectWindows resource files define resource and command IDs.TOCENTRY="1"REMAP='TblCap'Summary of resource files COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='62*'COLNAME='C2' COLWIDTH='244*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'File nameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'UseVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C2' NAMEST='C1' ROTATE='0'REMAP='Tbl.Subhead'Directory of \INCLUDE\OWLCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'docview.rhCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines resource and command IDs to use with docview.h and docview.rc.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'edit.rhCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines command IDs to use with edit.h.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'editfile.rhCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines resource and command IDs to use in editfile.rc and editfile.h.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'editsear.rhCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines resource and command IDs to use in editsear.rc and editsear.h.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'editview.rhCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines accelerator and menu IDs to use with TEditView.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'except.rhCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines string resource IDs to use with except.h and except.rc.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'inputdia.rhCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines resource IDs to use with inputdia.rc and inputdia.h.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'listview.rhCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines resource and command IDs to use with listview.h.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'locale.rhCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines localization resource IDs.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'mdi.rhCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines resource and command IDs to use with mdi.h.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'oleview.rhCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines resource IDs to use with OLE-enabled views.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'printer.rhCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines resource IDs to use with printer.rc and printer.h.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'slider.rhCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines resource IDs to use with slider.h.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'statusba.rhCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines resource IDs to use with statusba.hCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'validate.rhCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines resources to use with TValidator and derived classes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'window.rhCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines command IDs to use with window.h.REMAP='.Head1' RENDERAS="SECT1"The ObjectWindows data typesREMAP='Body'ObjectWindows data types have been updated to use more portable type names. The following table lists the Windows API type names, the underlying C type definitions, and the new ObjectWindows type names. To ensure that these new types are used correctly, be sure to include the ObjectWindows header files before any Windows files, such as windows.h, in your application files. The new C++ type, which maps a nonzero value to TRUE, lets you assign an integer to a ROLE='bold'bool type. You can then compare this Boolean value to TRUE .TOCENTRY="1"REMAP='TblCap'New ObjectWindows data types COLS='4' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='55*'COLNAME='C2' COLWIDTH='67*'COLNAME='C3' COLWIDTH='59*'COLNAME='C4' COLWIDTH='162*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'WindowsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'C definitionCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'New typeCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'charCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'int8COLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'Used when 8 bit signed value is neededCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BYTECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'unsigned charCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'uint8COLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'Always 8 bitsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WORDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'unsigned shortCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'uint16COLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'Always 16 bitsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'intCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'intCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'intCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'16 or 32 bits depending on the platformCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'UINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'unsigned intCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'uintCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'16 or 32 bits depending on the platformCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LONGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'longCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'long, int32COLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'Long (Could be 64 bits on some platforms)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ULONGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'unsigned longCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'ulong, int32COLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'Long (Could be 64 bits on some platforms)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'longCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'int32COLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'Always 32 bitsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DWORDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'unsigned longCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'uint32COLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'Always 32 bitsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BOOLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'intCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'boolCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'New C++ type if available; otherwise, emulated using an enum.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TRUECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'1COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'trueCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FALSECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'0COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'falseCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'REMAP='NumChapter'ID='X-37779'ObjectWindows library referenceREMAP='Body'This chapter alphabetically lists the ObjectWindows classes, data members, member functions, macros, constants, and data types. The header file that defines each entry is listed opposite the entry name. Class members are grouped according to their access specifiers, either public or protected. Within these categories, data members, then constructors (and the destructor, if one exists), and member functions are listed alphabetically.REMAP='Body'Because many of the properties of the classes in the hierarchy are inherited from base classes, only data members and member functions that are ROLE='italic'new or ROLE='italic'redefined for a particular class are listed. Private members are not listed. If any response table entries exist, they are also listed. The cross-referenced entries provide additional information about how to use the specified entry. The first sample entry illustrates this format.REMAP='Body'To find information about a particular inherited member function, use the inheritance diagram included at the beginning of each class. The inheritance diagram shows the virtual overridden functions that form the interface of the class, excluding ROLE='italic'TEventHandler and ROLE='italic'TStreamableBase, from which all classes are inherited. For a list of all the inherited as well as overridden virtual functions, see the online Help.TBird class [sample]MOREINFO="NONE"bird.hType definitionsREMAP='Body'This section alphabetically lists all typedefs and enums defined within a class.typedef unsigned short TOwlIdFORMAT="LINESPECIFIC"typedef unsigned short TOwlId;REMAP='BodyNoLead'This text explains what this typdef contains, and how you use it.See alsoREMAP='BodyNoLead' Related data members, member functions, classes, constants, and typesPublic data membersREMAP='Body'This section alphabetically lists all public data members and their declarations, and explains how they are used.anOwlBeakFORMAT="LINESPECIFIC"anOwlType anOwlBeak;REMAP='Body'anOwlBeak is a data member that holds information about this sample class. This text explains what anOwlBeak contains, and how you use it.See alsoREMAP='Body'Related data members, member functions, classes, constants, and typesanOwlWingFORMAT="LINESPECIFIC"anOwlType anOwlWing;REMAP='BodyNoLead'ROLE='italic'anOwlWing is another public data member.Public constructors and destructorREMAP='Body'This section lists any public constructors and destructor for this class. Classes can have more than one constructor; they never have more than one destructor.ConstructorFORMAT="LINESPECIFIC"TBird(anOwlType aParameter);REMAP='BodyNoLead'Constructor for a new sample class; sets the ROLE='italic'anOwlBeak data member to ROLE='italic'aParameter.DestructorFORMAT="LINESPECIFIC"~TBird;REMAP='BodyNoLead'Destructor for a new sample class; destroys the ROLE='italic'TBird object.Public member functionsREMAP='Body'This section alphabetically lists all public member functions that are either newly defined for this class or that are redefined inherited member functions. The description includes the purpose of each parameter and the return value of the function. If a function overrides a virtual base class function, the text specifies this:REMAP='Body'The inline keyword isn't provided because it doesn't affect usage.EvGetDlgCodeFORMAT="LINESPECIFIC"UINT OwlHoot( );REMAP='BodyNoLead'Responds to WM_GETDLGCODE messages.OwlHootFORMAT="LINESPECIFIC"void OwlHoot( );REMAP='BodyNoLead'The ROLE='italic'OwlHoot member function causes the sample class to perform some action. This function overrides the function ROLE='italic'OwlHoot in its base class, ROLE='italic'TParent.See alsoREMAP='Body'ROLE='italic'TParent::OwlHootOwlSleepFORMAT="LINESPECIFIC"virtual int OwlSleep(int index);REMAP='BodyNoLead'The ROLE='italic'OwlSleep function performs another action and overrides the function ROLE='italic'OwlSleep in its base class, ROLE='italic'TParent.See alsoREMAP='Body'TParent::OwlSleepProtected data membersREMAP='Body'This section alphabetically lists all protected data members and their declarations, and explains how they are used.anOwlFeatherFORMAT="LINESPECIFIC"anOwlType anOwlFeather;REMAP='BodyNoLead'ROLE='italic'anOwlFeather is a protected data member that holds information about this sample class.See alsoREMAP='Body'Related data members, member functions, classes, constants, and typesProtected constructorsConstructorFORMAT="LINESPECIFIC"TBird(anOwlType bParameter);REMAP='BodyNoLead'If the class has a protected constructor, it is listed here.Protected member functionsREMAP='Body'This section lists all protected member functions.OwlCryFORMAT="LINESPECIFIC"BOOLEAN OwlCry;REMAP='BodyNoLead'The ROLE='italic'OwlCry member function causes the sample class to perform some action.See alsoREMAP='Body'TSomethingElse::OwlCryZatsItFORMAT="LINESPECIFIC"virtual int ZatsIt(int index);REMAP='BodyNoLead'The ROLE='italic'ZatsIt function performs a particular function in class ROLE='italic'TBird.Response table entriesREMAP='Body'The ROLE='italic'TBird response table contains this predefined macro for the EV_xxxx messages and calls this member function:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='110*'COLNAME='C2' COLWIDTH='94*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ROLE='BOLD'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_GETDLGCODECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EVGetDlgCodeBF_xxxx button flag constantsMOREINFO="NONE"checkbox.hREMAP='BodyNoLead'Check box and radio button objects use the button flag constants to indicate the state of a selection box.TOCENTRY="1"REMAP='TblCap'Button flag constantsCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BF_CHECKEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Item is checked.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BF_GRAYEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Item is grayed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BF_UNCHECKEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Item is unchecked.See alsoREMAP='BodyNoLead'REMAP='BodyNoLead'TCheckbox::GetCheck, TCheckbox::SetCheckBN_xxxx button message constantsMOREINFO="NONE"windows.hREMAP='BodyNoLead'Mouse and radio button objects use the button message constants to indicate the state of a button.TOCENTRY="1"REMAP='TblCap'Button message constantsCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='101*'COLNAME='C2' COLWIDTH='273*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BN_CLICKEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the user clicks a buttonCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BN_DISABLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when a button is disabledCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BN_DOUBLECLICKEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the user double-clicks a buttonCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BN_HILITECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the user highlights a buttonCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BN_PAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when a button needs to be repaintedCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BN_UNHILITECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the highlighting needs to be removed from a buttonSee alsoREMAP='BodyNoLead'REMAP='BodyNoLead'TRadioButton::BNClickedCBN_xxxx combo box message constantsMOREINFO="NONE"windows.hREMAP='Body'Combo box objects use these message constants to indicate the state of the combo box.TOCENTRY="1"REMAP='TblCap'Combo box message constantsCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='104*'COLNAME='C2' COLWIDTH='269*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CBN_CLOSEUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the list box of a combo box has closedCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CBN_DBLCLKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the user double-clicks a text string in the combo boxCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CBN_DROPDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the list box of a combo box drops downCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CBN_EDITCHANGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the user changes text in the edit control portion of a combo boxCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CBN_EDITUPDATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when edited text is going to be displayedCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CBN_ERRSPACECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the combo box is out of memoryCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CBN_KILLFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the combo box loses the input focusCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CBN_SELENDCANCELCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the user's initial selection needs to be cancelled because the user has selected another control or closed the dialog box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CBN_SELENDOKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent if the user's selection is validCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CBN_SETFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the combo box receives the input focusSee alsoREMAP='BodyNoLead'TComboBoxCM_xxxx edit constantsMOREINFO="NONE"window.rhREMAP='Body'These command-based member functions are invoked in response to a particular edit menu selection or command.TOCENTRY="1"REMAP='TblCap'Command-based constantsCOLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='90*'COLNAME='C3' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Menu equivalentVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EDITCLEARCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEdit::CMEditClearCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Edit|ClearCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EDITCOPYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEdit::CMEditCopyCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Edit|CopyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EDITCUTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEdit::CMEditCutCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Edit|CutCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EDITDELETECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEdit::CMEditDeleteCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Edit|DeleteCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EDITPASTECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEdit::CMEditPasteCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Edit|PasteCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EDITUNDOCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEdit::CMEditUndoCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Edit|UndoCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EXITCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TWindow::CmExitCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'File|ExitSee alsoREMAP='BodyNoLead'TEdit::CMEditClear, TEdit::CMEditCopy, TEdit::CMEditCut, TEdit::CMEditDelete, TEdit::CMEditPaste, TEdit::CMEditUndo, TWindow::CmExitCM_xxxx edit file constantsMOREINFO="NONE"docview.rhREMAP='Body'These command-based member functions are invoked in response to open, close, print, and save commands.TOCENTRY="1"REMAP='TblCap'Command-based constantsCOLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='107*'COLNAME='C2' COLWIDTH='124*'COLNAME='C3' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Menu equivalentVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_FILECLOSECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'File|CloseCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_FILENEWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEditFile::CmFileNewCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'File|NewCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_FILEOPENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEditFile::CmFileOpenCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'File|OpenCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_FILEPRINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'File|PrintCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_FILEPRINTERSETUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'File|PrinterSetupCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_FILEREVERTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TDocManager::CmFileRevertCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'File|RevertCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_FILESAVECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEditFile::CmFileSaveCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'File|SaveCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_FILESAVEASCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEditFile::CmFileSaveAsCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'File|Save AsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_VIEWCREATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TDocManager::CmViewCreateCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'File|View CreateSee alsoREMAP='BodyNoLead'TEditFile::CmFileNew, TEditFile::CmFileOpen, TDocManager::CmFileRevert, TEditFile::CmFileSave, TEditFile::CmFileSaveAsCM_xxxx edit replace constantsMOREINFO="NONE"editsear.rhREMAP='Body'These command-based member functions are invoked when the corresponding find and replace command is received.TOCENTRY="1"REMAP='TblCap'Command-based constantsCOLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='94*'COLNAME='C2' COLWIDTH='128*'COLNAME='C3' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Menu equivalentVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EDITFINDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEditSearch::CMEditFindCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Edit|FindCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EDITFINDNEXTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEditSearch::CMEditFindNextCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Edit|Find|NextCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EDITREPLACECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TEditSearch::CMEditReplaceCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Edit|ReplaceSee alsoREMAP='BodyNoLead'TEditSearch::CMEditFind, TEditSearch::CMEditFindNext, TEditSearch::CMEditReplaceCM_xxxx edit view constantsMOREINFO="NONE"oleview.rhREMAP='Body'These command-based view functions are invoked in response to menu and accelerator key commands. The Edit|Verbs selection refers to one of the OLE-specific menu commands, such as Edit or Open.TOCENTRY="1"REMAP='TblCap'Command-based constantsCOLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='112*'COLNAME='C2' COLWIDTH='141*'COLNAME='C3' COLWIDTH='78*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Menu equivalentVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EDITPASTESPECIALCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TOleWindow::CMEditPasteSpecialCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Paste|SpecialCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EDITPASTELINKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TOleWindow::CMEditPasteLinkCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Paste|LinkCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EDITINSERTOBJECTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TOleWindow::CMEditInsertObjectCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Insert|ObjectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EDITLINKSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TOleWindow::CMEditLinksCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Edit|LinksCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EDITOBJECTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TOleWindow::CMEditObjectCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Edit|ObjectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EDITFIRSTVERBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TOleWindow::EvCommandEnableCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Edit|VerbsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EDITLASTVERBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TOleWindow::EvCommandEnableCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Edit|VerbsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_EDITCONVERTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TOleWindow::CMEditCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Edit|ConvertCM_xxxx MDI constantsMOREINFO="NONE"mdi.rhREMAP='Body'These MDI functions are invoked when the corresponding MDI command message is received.TOCENTRY="1"REMAP='TblCap'Command message constantsCOLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='122*'COLNAME='C2' COLWIDTH='135*'COLNAME='C3' COLWIDTH='116*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Menu equivalentVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_ARRANGEICONSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TMDIClient::CmArrangeIconsCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Window|Arrange IconsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_CASCADECHILDRENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TMDIClient::CmCascadeChildrenCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Window|CascadeCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_CLOSECHILDRENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TMDIClient::CmCloseChildrenCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Window|Close AllCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_CREATECHILDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TMDIClient::CmCreateChildCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_TILECHILDRENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TMDIClient::CmTileChildrenCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Window|TileCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CM_TILECHILDRENHORIZCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TMDIClient::CmTileChildrenCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Window|TileSee alsoREMAP='BodyNoLead'TMDIClient::CmArrangeIcons, TMDIClient::CmCascadeChildren, TMDIClient::CmCloseChildren, TMDIClient::CmCreateChild, TMDIClient::CmTileChildrenDECLARE_RESPONSE_TABLE macroMOREINFO="NONE"eventhan.hREMAP='Body'Declares a response table in the class definition. To handle events for a class, you need to both declare a response table with this macro and define the response table using one of the DEFINE_RESPONSE_TABLE macros. For example, to declare a response table, use the following declaration, where the single parameter, ROLE='italic'Class, represents the name of the current class:FORMAT="LINESPECIFIC"DECLARE_RESPONSE_TABLE(Class);REMAP='Body'ObjectWindows' response tables define the relationship between a window message and a corresponding event-handling function. The description of ROLE='italic'TEventHandler has more information about how ObjectWindows associates a response table entry with the appropriate function.See alsoREMAP='BodyNoLead'DEFINE_RESPONSE_TABLE macros, END_RESPONSE_TABLE macro, TEventHandler classDEFINE_APP_DICTIONARY macroMOREINFO="NONE"appdict.hREMAP='Body'This macro defines an ROLE='italic'AppDictionary reference and object as needed for use in component DLLs and EXEs. Unless a user dictionary is specified, the macro defines the dictionary as ROLE='italic'OwlAppDictionary, which is a globally exported ROLE='italic'TAppDictionary. The macro is defined as follows:FORMAT="LINESPECIFIC"# define DEFINE_APP_DICTIONARY(AppDictionary)See alsoREMAP='BodyNoLead'TAppDictionaryDEFINE_DOC_TEMPLATE_CLASS macroMOREINFO="NONE"doctpl.hREMAP='Body'Creates a document template. Takes three arguments: the name of the document class that holds the data, the name of the view class that displays the data, and the name of the template class, and then associates the document with one or more views. The following example illustrates how you can associate document and view classes with new template classes.FORMAT="LINESPECIFIC"DEFINE_DOC_TEMPLATE_CLASS(TFileDocument, TListView, ListTemplate);
DEFINE_DOC_TEMPLATE_CLASS(TFileDocument, TEditView, EditTemplate);See alsoREMAP='BodyNoLead'TDocTemplateDEFINE_RESPONSE_TABLE macrosMOREINFO="NONE"eventhan.hREMAP='Body'Defines a response table. Takes one plus ROLE='italic'x number of arguments: one is the name of the class that is defining the response table, and ROLE='italic'x is the immediate base class as well as any virtual base classes. Use the END_RESPONSE_TABLE macro to end the definition for the response table. Between the DEFINE_RESPONSE_TABLE macro and the END_RESPONSE_TABLE macro, insert the message response entries for the messages you want the class to handle. For example,FORMAT="LINESPECIFIC"DEFINE_RESPONSE_TABLE1(TMyClass, TWindow)
EV_WM_PAINT,
EV_WM_LBUTTONDOWN,
END_RESPONSE_TABLE;REMAP='Body'In this example, EV_WM_PAINT and EV_WM_LBUTTONDOWN illustrate the message response entries for the class ROLE='italic'TMyClass derived from ROLE='italic'TWindow. These macros call the corresponding event-handling functions, ROLE='italic'EvPaint and ROLE='italic'EvLButtonDown, respectively. Note that response tables are sometimes defined, but have no entries. In such cases, the base class's response table entries are searched for the appropriate event-handling function. You can also associate more than one message with an event-handling function.REMAP='Body'The following table shows the form the DEFINE_RESPONSE_TABLE macro takes depending on the number of base classes.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='109*'COLNAME='C2' COLWIDTH='221*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Number of base classesCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MacroVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'0COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DEFINE_RESPONSE_TABLE(Class)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'1COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DEFINE_RESPONSE_TABLE(Class, Base)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'2COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DEFINE_RESPONSE_TABLE2(Class, Base1, Base2)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'3COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DEFINE_RESPONSE_TABLE3(Class, Base1, Base2, Base3)See alsoREMAP='BodyNoLead'DECLARE_RESPONSE_TABLE macros, END_RESPONSE_TABLE macro, TEventHandler classDLGC_xxxx dialog control message constantsMOREINFO="NONE"windows.hREMAP='Body' Indicate the kind of input that the dialog manager needs to process. Returned by ROLE='italic'EvGetDlgCode. TOCENTRY="1"REMAP='TblCap'Dialog control message constantsCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='134*'COLNAME='C2' COLWIDTH='218*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DLGC_BUTTONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates a buttonCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DLGC_DEFPUSHBUTTONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates a default buttonCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DLGC_HASSETSELCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates a range of characters in an edit controlCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DLGC_RADIOBUTTONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates a radio button control messageCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DLGC_STATICCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates a static controlCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DLGC_UNDEFPUSHBUTTONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates a non-default push button controlCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DLGC_WANTALLKEYSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates all keyboard inputCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DLGC_WANTARROWSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates the direction keysCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DLGC_WANTCHARSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates all key code messagesCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DLGC_WANTMESSAGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates all keyboard input can be passed on to the control.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DLGC_WANTTABCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates the TAB keySee alsoREMAP='BodyNoLead'TButton::EvGetDlgCode, TCheckBox::EvGetDlgCode, TEdit::EvGetDlgCode, TListView::EvGetDlgCode, TSlider::EvGetDlgCodedmxxxx document manager mode constantsMOREINFO="NONE"docmanag.hREMAP='Body'Used by TDocManager to indicate if a document supports single or multiple open documents, and to indicate if it has file menu IDs.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='69*'COLNAME='C2' COLWIDTH='174*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmMenuCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Sets IDs for file menu.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmMDI COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Supports multiple open documents.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmNoRevertCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Disables the File|Revert menu command.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmSaveEnableCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Enables File|Save menu command.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmSDICOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Does not support multiple open documents.See alsoREMAP='BodyNoLead'TDocManager::TDocManagerdnxxxx document message constantsMOREINFO="NONE"docmanag.hREMAP='Body'Used by TDocManager to indicate that a document or view has been created or closed. You can set up response table entries for these messages using the EV_OWLVIEW or EV_OWLDOCUMENT macros.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='51*'COLNAME='C2' COLWIDTH='169*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dnCreateCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A new document or view has been created.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dnCloseCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A document or view has been closed.See alsoREMAP='BodyNoLead'TDocManager::TDocManagerdtxxxx document template constantsMOREINFO="NONE"locale.hREMAP='Body'Used by ROLE='italic'TDocument and ROLE='italic'TDocTemplate to create templates. Several constants are equivalent to the OFN_xxxx constants defined by Windows in commdlg.h.COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='84*'COLNAME='C2' COLWIDTH='139*'COLNAME='C3' COLWIDTH='151*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Windows equivalentCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtAutoDeleteCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Deletes the document when the last view is deleted.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtAutoOpenCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Opens a document upon creation.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtCreatePromptCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(OFN_CREATEPROMPT)COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Prompts the user before creating a document that does not currently exist.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtDynRegInfoCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Used to register a container or server for OLE 2 support. Indicates that the registration information table is dynamic not static. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtFileMustExistCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(OFN_FILEMUSTEXIST)COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Lets the user enter only existing file names in the File Name entry field. If an invalid file name is entered, causes a warning message to be displayed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtHiddenCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Hides the template from the user's selection.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtHideReadOnlyCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(OFN_HIDEREADONLY)COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Hides the read-only check box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtNewDocCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates a new document with no path specified.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtNoAutoViewCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Does not automatically create the default view type.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtNoReadOnlyCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(OFN_NOREADONLYRETURN)COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Returns the specified file as writeable.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtNoTestCreateCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(OFN_NOTESTFILECREATE)COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Does not perform document-creation tests. The file is created after the dialog box is closed. If the application sets this flag, there is no check against write protection, a full disk, an open drive door, or network protection. For certain network environments, this flag should be set.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtOverwritePromptCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(OFN_OVERWRITEPROMPT)COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'When the Save As dialog box is displayed, asks the user if it's OK to overwrite the file.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtPathMustExistCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(OFN_PATHMUSTEXIST)COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Allows only valid document paths to be entered. If an invalid path name is entered, causes a warning message to be displayed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtProhibitedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(OFN_ALLOWMULTISELECT)COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Doesn't support these specifiedCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(OFN_ENABLEHOOK)COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Windows optionsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(OFN_ENABLETEMPLATE)COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(OFN_ENABLETEMPLATEHANDLE)COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtReadOnlyCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(OFN_READONLY)COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Checks the read-only check box when the dialog box is created.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtRegisterExtCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Used to register a container or server for OLE 2 support. Registers an extension with this application.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtSelectedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Indicates the last selected template.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtSingleUseCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Indicates that the document is to be registered as a singl use document.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtSingleViewCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Provides only a single view for each document.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dtUpdateDirCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Updates the directory with the directory specified in the dialog box.See alsoREMAP='BodyNoLead'TDocTemplate::GetFlags, TLocaleString, TDocument classEND_RESPONSE_TABLE macroMOREINFO="NONE"eventhan.hFORMAT="LINESPECIFIC"END_RESPONSE_TABLE;REMAP='BodyNoLead'Indicates the end of a response table. For each class that contains a response table, add this macro to the class definition.See alsoREMAP='BodyNoLead'DEFINE_RESPONSE_TABLE macroEN_xxxx edit message constantsMOREINFO="NONE"windows.hREMAP='Body' Indicate the state of an edit control in various situations: after a user has changed text, when the edit control receives the input focus, and so onTOCENTRY="1"REMAP='TblCap'Edit message constants COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EN_CHANGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the display is updated after changes have been made to the edit controlCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EN_ERRSPACECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the edit control is out of memoryCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EN_HSCROLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the user clicks the horizontal scroll barCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EN_KILLFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the edit control is losing the input focusCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EN_MAXTEXTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the text insertion is truncatedCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EN_SETFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the edit control receives input focusCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EN_UPDATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the edit control is going to display revised textCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EN_VSCHOLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the user clicks the vertical scroll barREMAP='Body'.EV_xxxx macrosMOREINFO="NONE"windowev.hREMAP='Body'Create response table entries that match events to member functions.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='189*'COLNAME='C2' COLWIDTH='179*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_CHILD_NOTIFY(id,notifyCode,method)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Handles child ID notifications (for example, button, edit control, list box, combo box, and scroll bar notification messages) at the child's parent window. Passes no arguments.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_CHILD_NOTIFY_ALL_CODESCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Passes all notifications to the response function and passes the notification code in as an argument.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_CHILD_NOTIFY_AND_CODE(id, notifyCode, method)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Handles child ID notifications at the child's parent window and passes the notification code as an argument.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(id, method)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Handler for menu selections, accelerator keys, and push buttons.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_AND_ID(id, method)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Handler for multiple commands using a single response function. Passes the menu ID in as an argument.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(id, method)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body' Enables and disables commands such as buttons and menu items.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_MESSAGE(message, method)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'General purpose macro for Windows WM_xxxx messages.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_NOTIFY_AT_CHILD(notifyCode, method)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Handles all child ID notifications at the child window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OWLDOCUMENT(id, method)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Handles new document notifications.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OWLNOTIFY(id, method)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Generic document handler.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OWLVIEW(id, method)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Handles view notifications.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_REGISTERED(str, method)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Handles registered MSG messages.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VIEWNOTIFYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Sends a notification message from the document to the views.Factory template classesMOREINFO="NONE"olefacto.hREMAP='Body'The factory template classes create callback code for both automated and non automated Doc/View and non-Doc/view ObjectWindows applications. Use these factory template classes to make objects for embedding and linking. (That is, when an application object needs to be embedded within another container, the callback function is responsible for creating the embedded object.) Depending on the template arguments passed to the factory class, you obtain different kinds of factories designed to create the object you need. All the templetized classes, however, assume that the application is using a global ROLE='italic'AppDictionary (the application's dictionary), and a global ROLE='italic'Registrar (the ROLE='italic'TOcRegistrar pointer that manages registering the application in the database).REMAP='Body'ObjectWindows includes several factory template classes, divided into two main categories: those designed for Doc/View applications and those designed for non-Doc/View applications. Although all these classes contain the same functions, they are designed to create different types of objects. REMAP='Body'Each class takes three arguments: the application class, the automation class, and the Doc/View class. The arguments indicate whether or not the application is a Doc/View application and whether or not the application is automated. The factory classes and their definitions include the following four classes.Factory class for Doc/View, non-automated, OLE componentsFORMAT="LINESPECIFIC"template <class T> class TOleDocViewFactory
: public TOleFactoryBase<T, TOleFactoryDocView<T, TOleFactoryNoAuto<T>>>{};Factory class for Doc/View, automated OLE componentsFORMAT="LINESPECIFIC"template <class T> class TOleDocViewAutoFactory
: public TOleFactoryBase<T, TOleFactoryDocView<T, TOleFactoryAuto<T>>>{};Factory class for non-Doc/View, non-automated, OLE componentsFORMAT="LINESPECIFIC"template <class T> class TOleFactory
: public TOleFactoryBase<T, TOleFactoryNoDocView<T, TOleFactoryNoAuto<T>>>{};Factory class for non-Doc/View, automated OLE componentsFORMAT="LINESPECIFIC"template <class T> class TOleAutoFactory
: public TOleFactoryBase<T, TOleFactoryNoDocView<T, TOleFactoryAuto<T>>>{};REMAP='Body'For either a Doc/View or a non-Doc/View application, you need to register your application in your OwlMain function. The argument to ROLE='italic'TOcRegistrar (in this case, ROLE='italic'TOleFactory<ROLE='italic'TDrawApp>) constructs an object and converts it to a ROLE='italic'TComponentFactory type, using the operator ROLE='italic'TComponentFactory to create a function pointer. In reality, the object is never created because all the factory class's functions are static.REMAP='Body'Pass your application object derived from ROLE='italic'TApplication as the parameter to ROLE='italic'TOleFactory, as the following code from STEP15.CPP illustrates: FORMAT="LINESPECIFIC"int
OwlMain(int /*argc*/, char* /*argv*/ [])
{
try {
Registrar = new TOcRegistrar(AppReg, TOleFactory<TDrawApp>( ),
TApplication::GetCmdLine( ));
if (Registrar->IsOptionSet(TOcCmdLine::AnyRegOption))
return 0;
//If this is a normal exe server, run the application now; otherwise,
// wait until the factory is called.
return Registrar->Run( );
}REMAP='Body'In general, these are the steps each factory class follows in the default callback code:NUMERATION='ARABIC' CONTINUATION="RESTARTS" INHERITNUM="IGNORE"REMAP='.NumList1'The factory gets the application. This is the application object derived from ROLE='italic'TApplication. For a DLL server, there can be several instances of the object. Using ROLE='italic'TAppDictionary::GetApplication, the factory verifies whether or not there is an entry in the application dictionary for an application object for the current process. REMAP='.NumList1'If the application does not exist, the factory creates the application object and tests to see if the application was created successfully before creating its corresponding ROLE='italic'TOcApp object. If the shutdown option flag is set, it then exits. (If the application has already been destroyed, the shutdown flag is set.)REMAP='.NumList1'If the factory is passed a shutdown option flag (one of the ROLE='italic'TOcAppMode enum values), it then shuts down the application and calls the factory's ROLE='italic'DestroyApp function to destroy the application.REMAP='.NumList1'If the application is automated, the factory creates a corresponding automation object.REMAP='.NumList1'If the object ID is not zero, the factory creates the object and gets the OLE interface. Otherwise, it gets the application's OLE interface. At this point, the Doc/View and non-Doc/View processes differ because they need to create different types of objects. If the application is automated, the factory creates an automated helper object.REMAP='.NumList1'The factory checks to see if the option flag ROLE='italic'amRun (one of the ROLE='italic'TOcAppMode enum values) is set, and, if so, it runs the application. This occurs if the application either was built as an .EXE or is a DLL running as an .EXE. If the ROLE='italic'amRun flag is not set and the application is an in-proc DLL server and should not be running, the factory just starts the application. REMAP='.NumList1'The factory returns either the OLE interface for the object or 0 if no interface was requested or if an error occurred.REMAP='Body'The following diagram illustrates this process.FILEREF='snap2_1.gif'REMAP='Body'The factory can be called back to walk through this process several times:NUMERATION='ARABIC' CONTINUATION="RESTARTS" INHERITNUM="IGNORE"REMAP='.NumList1'On the first callback, the factory creates the application, and if the ROLE='italic'amRun flag is set, it enters a message loop.REMAP='.NumList1'On the second callback, OLE calls the factory to automate or embed or link an object. In the case of an embedded and/or linked object, this pass can occur one or more times. (In the case of an automation object, however, this second pass occurs only once because any subsequent requests pass through the automated application itself.)REMAP='.NumList1'On the final callback, the factory shuts down the application.See also REMAP='BodyNoLead'TAutoFactory class, TAutoFactory::DestroyApp, TComponentFactory typedef, TOcAppMode enum, TOcRegistrar class, TOleFactoryBase class, TOleFactoryBase::DestroyApp, TOleFactoryBase::TComponentFactoryGetApplicationObject functionMOREINFO="NONE"appdict.hFORMAT="LINESPECIFIC"TApplication* GetApplicationObject(unsigned pid = 0);REMAP='BodyNoLead'This global function is included mainly for backward compatibility with previous ObjectWindows applications. To find the application object associated with a process ID, GetApplicationObject calls ROLE='italic'TAppDictionary::ROLE='italic'GetApplication on an application dictionary. Used by EXEs or DLLs statically linking ObjectWindows, ROLE='italic'GetApplicationObject can return 0.See alsoREMAP='BodyNoLead'GetWindowPtr function, TAppDictionary::GetApplicationGetWindowPtr functionMOREINFO="NONE"window.hFORMAT="LINESPECIFIC"TWindow* GetWindowPtr(HWND hWnd);REMAP='BodyNoLead'This global function is included mainly for backward compatibility with previous ObjectWindows applications. First, ROLE='italic'GetWindowPtr calls the global function ROLE='italic'GetApplicationObject to find the application. Then, calls ROLE='italic'TApplication's ROLE='italic'GetWindowPtr to get the ROLE='italic'TWindow pointer associated with the window.See alsoREMAP='BodyNoLead'GetApplicationObject function, TApplication::GetWindowPtrID_xxxx file constantsMOREINFO="NONE"inputdia.rhREMAP='Body'Resource and control IDs for the input dialog box.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='177*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Constant COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDD_INPUTDIALOGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Resource ID number for the input dialog boxCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ID_INPUTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Control ID for the user inputCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ID_PROMPTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Control ID for the static textSee alsoREMAP='BodyNoLead'TInputDialog::SetUpWindowID_xxxx printer constantsMOREINFO="NONE"printer.rhREMAP='Body'Resource and control IDs for the printer abort dialog box.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='178*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDD_ABORTDIALOGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Resource ID number for the abort dialog box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ID_TITLE COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Control ID for the selected printer driver.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ID_DEVICECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Control ID for the selected printer.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ID_PAGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID number for the page number text control.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ID_PORTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Control ID for the selected printer port.IDA_xxxx accelerator ID constantsMOREINFO="NONE"editfile.rhREMAP='Body'Resource ID for accelerator keys.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='130*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDA_EDITFILECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Resource ID for accelerator keys.IDA_xxxx OLE accelerator ID constantsMOREINFO="NONE"oleview.rhREMAP='Body'Resource ID for accelerator keys.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='230*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDA_OLEVIEWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Resource ID for accelerator keys for OLE enabled applications.IDM_xxxx menu ID constantsMOREINFO="NONE"editfile.rhREMAP='Body'Resource ID for menu selections.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='71*'COLNAME='C2' COLWIDTH='136*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDM_EDITFILECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Resource ID for menu selections.IDM_xxxx OLE menu ID constantsMOREINFO="NONE"oleview.rhREMAP='Body'Menu IDs for OLE-enabled applications.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='170*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDM_OLEPOPUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'OLE enabled application pop-up menuCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDM_OLEVIEWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'OLE enable application view menu selectionIDS_xxxx edit view ID constantsMOREINFO="NONE"oleview.rhREMAP='Body'String constants used to respond to edit view commands.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='106*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_EDITOBJECTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Edit the objectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_EDITCONVERTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Convert the objectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_EXITSERVERCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Exit the server applicationIDS_Mode constantsMOREINFO="NONE"statusba.rhREMAP='Body'Resource and command IDs to use with TStatusBar.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='86*'COLNAME='C2' COLWIDTH='174*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_MODESCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'String resource to define mode On indicatorsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_MODESOFFCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'String resource to define mode Off indicatorsIDS_xxxx document string ID constantsMOREINFO="NONE"docview.rhREMAP='Body'String IDs that define resource IDs used to determine the status of the document.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='125*'COLNAME='C2' COLWIDTH='249*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Displays these messagesVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_DOCCHANGEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'If the document has been changed, displays the message, "Do you want to save the changes?"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_DOCLIST COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Document is a document type.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_DOCMANAGERFILECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'This is a document manager file.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_DUPLICATEDOCCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'This is a duplicate document.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_NODOCMANAGERCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'There is no document manager.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_NOMEMORYFORVIEWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Not enough memory to view the documentCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_NOTCHANGEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The document has not been changed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_READERRORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Error while reading the fileCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_UNTITLEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The file is untitled.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_UNABLECLOSECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Document manager is unable to close the document.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_UNABLEOPENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Document manager is unable to open the document.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_UNTITLED COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Document is untitled.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_VIEWLIST COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Document is a view type.IDS_xxxx edit file ID constantsMOREINFO="NONE"editfile.rhREMAP='Body'String constants used by edit and file classes to display information about files.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='113*'COLNAME='C2' COLWIDTH='188*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_FILECHANGEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The text in the file has changed. Do you want to save the changes?COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_FILEFILTERCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Use this filter to display text files.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_UNABLEREADCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Unable to read the file from the disk.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_UNABLEWRITECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Unable to write the file to the disk.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_UNTITLEDFILECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The default window title unless the file is being edited.IDS_xxxx exception message constantsMOREINFO="NONE"except.rhREMAP='Body'General and application exception message constants. The following list groups the constants according to message type:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='151*'COLNAME='C2' COLWIDTH='155*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_INVALIDMAINWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Invalid MainWindowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_INVALIDMODULECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Invalid module specified for windowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_NOAPPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No application objectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_OKTORESUMECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Resume in spite of errorCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_OWLEXCEPTIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Unknown exceptionCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_OUTOFMEMORYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Out of memoryCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_UNHANDLEDXMSGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Unhandled xmsg errorCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_UNKNOWNERRORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Unknown errorCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_UNKNOWNEXCEPTIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Unknown exception errorCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Subhead'Owl 1 compatibility messages: COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_INVALIDCHILDWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Invalid child windowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_INVALIDCLIENTWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Invalid client windowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_INVALIDWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Invalid windowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Subhead'TXWindow messages:COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_CHILDCREATEFAILCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Child create fail for windowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_CHILDREGISTERFAILCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Child class registration fails for windowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_CLASSREGISTERFAILCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Class registration fails for windowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_LAYOUTCOMPLETECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Layout window failureCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_LAYOUTBADRELWINCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Layout window failureCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_MENUFAILURE COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Menu creation failureCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_PRINTERERRORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Printer errorCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_VALIDATORSYNTAXCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Validator syntax errorCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_WINDOWCREATEFAILCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Create fail for windowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_WINDOWEXECUTEFAILCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Execute fail for windowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Subhead'GDI messages:COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_GDIALLOCFAILCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'GDI allocate failureCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_GDICREATEFAILCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'GDI creation failureCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_GDIDELETEFAILCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'GDI object delete failureCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_GDIDESTROYFAILCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'GDI object destroy failureCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_GDIFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'GDI failureCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_GDIFILEREADFAILCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'GDI file read failureCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_INVALIDDIBHANDLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Invalid DIB handleCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_GDIRESLOADFAILCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'GDI resource load failureIDS_xxxx listview ID constantsMOREINFO="NONE"listview.rhREMAP='Body'Define operations performed on views. These include clearing the document, inserting a new line, copying text to the Clipboard, and so on.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='133*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_LISTVIEWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Resource ID for listview constants.IDS_xxxx printer string ID constantsMOREINFO="NONE"printer.rhREMAP='Body'Constants used by printer classes to determine the printer status.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='127*'COLNAME='C2' COLWIDTH='136*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'String displayedVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_PRNCANCELCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Printing is canceled.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_PRNERRORCAPTIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Printer error occurred.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_PRNERRORTEMPLATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Document was not printed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_PRNGENERRORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Error encountered during printing.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_PRNMGRABORTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Printing aborted in Print Manager.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_PRNONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Printer is on.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_PRNOUTOFDISKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Out of disk space.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_PRNOUTOFMEMORYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Out of memory.IDS_xxxx validator ID constantsMOREINFO="NONE"validate.rhREMAP='Body'Defines several constants used by validator classes to determine the validator status.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='118*'COLNAME='C2' COLWIDTH='181*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_VALPXPCONFORMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Item doesn't conform to correct picture format.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_VALINVALIDCHARCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Character isn't one of the valid entries.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_VALNOTINRANGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Entry isn't within the specified range.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDS_VALNOTINLISCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'String isn't found in the list of valid entries.IDW_MDICLIENT constantMOREINFO="NONE"framewin.hFORMAT="LINESPECIFIC"IDW_MDICLIENTREMAP='BodyNoLead'Child ID constant used to identify MDI client windows.IDW_MDIFIRSTCHILD constantMOREINFO="NONE"framewin.hFORMAT="LINESPECIFIC"IDW_FIRSTMDICHILDREMAP='BodyNoLead'Child ID constant used to identify the first MDI client window.LangXxxx ID constantsMOREINFO="NONE"locale.hREMAP='Body'A language ID is 16-bit number representing a language. In ObjectComponents, a language ID is a value of type ROLE='italic'TLangId.REMAP='Body'A language ID is composed of two parts. The ten low-order bits identify a language and the six high-order bits identify a dialect or sub-language. For example, a language ID can specify simply French, or make use of the upper bits to designate Belgian French, Swiss French, or Canadian French.REMAP='Body'ObjectComponents defines constants to represent three common IDs:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LangSysDefault COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The default language set for the system.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LangUserDefault COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The default language set for a particular user (which can differ from the system setting on multi-user systems.)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LangNeutralCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A neutral setting signifying no particular locale. An application that receives this value uses its own default setting.See alsoREMAP='BodyNoLead'TLangId typedef, TLocaleStringLBN_xxxx list box message constantMOREINFO="NONE"windows.hREMAP='Body'Indicate changes in the status of the list box.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='85*'COLNAME='C2' COLWIDTH='234*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LBN_DBLCLKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the user double-clicks a string in a list boxCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LBN_ERRSPACECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the list box is out of memoryCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LBN_KILLFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the list box is losing the input focusCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LBN_SELCANCELCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the user cancels the selection in a list boxCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LBN_SELCHANGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the user changes the selection in a list boxCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LBN_SETFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message sent when the list box receives the input focus.lmParent constantMOREINFO="NONE"layoutco.hFORMAT="LINESPECIFIC"#define lmParent 0REMAP='BodyNoLead'LmParent is used to construct layout metrics (for example, edge and size constraints).See alsoREMAP='BodyNoLead'TLayoutConstraint structLongMulDiv functionMOREINFO="NONE"scroller.hFORMAT="LINESPECIFIC"long LongMulDiv(long mul1, long mul2, long div1);REMAP='BodyNoLead'ROLE='italic'TScroller uses this function to convert horizontal range values (ROLE='italic'XRange) from the scroll bar to horizontal scroll values (ROLE='italic'XScrollValue) and vice versa, or to convert vertical range values (ROLE='italic'YRange) from the scroll bar to vertical scroll values (ROLE='italic'YScrollValue) and vice versa.See alsoREMAP='BodyNoLead'TScrollerMAX_RSRC_ERROR_STRING constantMOREINFO="NONE"except.hFORMAT="LINESPECIFIC"const int MAX_RSRC_ERROR_STRING = 255;REMAP='BodyNoLead'Maximum number of characters possible for an error message.MB_Xxxx message constantsMOREINFO="NONE"windows.hREMAP='Body'Contain information about the style and behavior of a message dialog box. You can use these constants to determine the kinds of information displayed in a message dialog box. COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='115*'COLNAME='C2' COLWIDTH='259*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_OKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The message dialog box contains an OK push button.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_OKCANCELCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The message dialog box contains Cancel and OK push buttons.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_ABORTRETRYIGNORECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The message dialog box contains Abort, Retry, and Ignore push buttons.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_YESNOCANCELCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The message dialog box contains Yes, No and Cancel push buttons.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_YESNOCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The message dialog box contains Yes and No push buttons.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_RETRYCANCELCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The message dialog box contains Retry and Cancel push buttons.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_ICONHANDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The message dialog box contains a stop sign icon.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_ICONQUESTIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The message dialog box contains a question mark.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_ICONEXCLAMATIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The message dialog box contains an exclamation mark.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_ICONASTERISKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The message dialog box contains an icon consisting of a lowercase letter i.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_ICONINFORMATIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The message dialog box contains an icon consisting of a lowercase letter i.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_ICONSTOPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The message dialog box contains a stop sign icon.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_ICONHANDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The message dialog box contains a stop-sign icon.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_DEFBUTTON1COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The first button is the default button in the message dialog box. This is always the case unless MB_DEFBUTTON2 or MB_DEFBUTTON3 is specified.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_DEFBUTTON2COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The second button is the default button in the message dialog box. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_DEFBUTTON3COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The third button is the default button in the message dialog box. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_APPLMODALCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Before continuing to work in this window, the user must answer the message dialog box. However, the user can work in other windows. MB_APPLMODAL is the default unless MB_SYSTEMMODAL, MB_TASKMODAL, or MB_NOFOCUS is specified.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_SYSTEMMODALCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Before continuing to work in this window, the user must answer the message dialog box. Unless the application indicates MB_ICONHAND, the message box does not become modal until after it is created. The owning window and other windows can continue to receive messages. You can use MB_SYSTEMMODAL to notify the user of serious errors, such as lack of sufficient memory to run an application, that must be taken care of immediately.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_TASKMODALCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Before continuing to work in this window, the user must answer the message dialog box. However, the user can work in other windows. Unlike MB_APPLMODAL, all top-level windows in the current task are disabled. Use this constant when the calling application does not have a window handle available, and you want to prevent input to other windows in the current application without actually preventing the other applications from executing. See alsoREMAP='BodyNoLead'TDocument::PostError, TDocManager::PostDocError, TWindow::MessageBoxNBits functionMOREINFO="NONE"color.hFORMAT="LINESPECIFIC"uint16 NBits(long colors);REMAP='BodyNoLead'Returns the bit count corresponding to the given color count.See alsoREMAP='BodyNoLead'NColors, TColor classNColors functionMOREINFO="NONE"color.hFORMAT="LINESPECIFIC"int NColors(uint16 bitCount);REMAP='BodyNoLead'Returns the color count corresponding to the given bit count, or -1 if the bit count is not supported by Windows. Bit counts currently supported are 1, 4, 8, and 24.See alsoREMAP='BodyNoLead'NBits, TColor classofxxxx document open enumMOREINFO="NONE"docview.hREMAP='Body'Defines the document and open sharing modes used for constructing streams and storing data. Any constants that have the same functionality as those used by OLE 2.0 docfiles are indicated in the following table; for example, STGM_TRANSACTED, STGM_CONVERT, STGM_PRIORITY, and STGM_DELETEONRELEASE.REMAP='Body'Although files are typically used for data storage, databases or spreadsheets can also be used. I/O streams rather than DOS use these bit values. Documents open the object used for storage in one of the following modes:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ofParentCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A storage object is opened using the parent's mode.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ofReadCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A storage object is opened for reading.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ofWriteCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A storage object is opened for writing.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ofReadWriteCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A storage object is opened for reading and writing.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ofAtEndCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Seek to end-of-file when opened originally.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ofAppendCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data is appended to the end of the storage object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ofTruncateCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'An already existing file is truncated.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ofNoCreateCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Open fails if file doesn't exist.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ofNoReplaceCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Open fails if file already exists.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ofBinaryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data is stored in a binary, not text, format. Carriage returns are not stripped.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ofIosMaskCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'All of the above bits are used by the ios class.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ofTransactedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Changes to the storage object are preserved until the data is either committed to permanent storage or discarded. (STGM_TRANSACTED)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ofPreserveCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Backs up previous storage data using before creating a new storage object with the same name. (STGM_CONVERT)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ofPriorityCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Supports temporary, efficient reading before opening the storage. (STGM_PRIORITY)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ofTemporaryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The storage or stream is automatically destroyed when it is destructed. (STGM_DELETEONRELEASE)See alsoREMAP='BodyNoLead'TStream, TInStream, TOutStreampfxxxx property attribute constantsMOREINFO="NONE"docview.hREMAP='Body'Define document and view property attributes. Documents, views, and applications use these attributes to determine how to process a document or view.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='67*'COLNAME='C2' COLWIDTH='244*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'pfGetTextCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Property is accessible in a text format.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'pfGetBinaryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Property is accessible as a native nontext format.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'pfConstant COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Property can't be changed for the object instance.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'pfSettableCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Property can be set as a native format.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'pfUnknownCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Property is defined but unavailable for the object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'pfHidden COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Property should be hidden from the user during normal browsing.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'pfUserDef COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Property has been user-defined at run time.See alsoREMAP='BodyNoLead'TDocument, TView_BUILDOWLDLL macroMOREINFO="NONE"owldefs.hFORMAT="LINESPECIFIC"_BUILDOWLDLLREMAP='BodyNoLead'Used internally to control values for the _OWLCLASS, _OWLDATA, and _OWLFUNC macros. This macro is defined when the user's module is built as a DLL. It must be defined and included in ObjectWindows makefiles to build the ObjectWindows DLL.See alsoREMAP='BodyNoLead'_OWLDLL macro_OWLCLASS macroMOREINFO="NONE"owldefs.hFORMAT="LINESPECIFIC"_OWLCLASSREMAP='BodyNoLead'Used internally by ObjectWindows to modify an entire class for use in a DLL. It is the ObjectWindows version of _RTLCLASS adjusted to export and import WIN32 DLLs. REMAP='Body'For static WIN16 and WIN32 , the default models are used. When ObjectWindows is being built, this macro evaluates to ROLE='bold'_export for WIN16 and WIN32 DLLs. For WIN32 DLLs, this macro evaluates to ROLE='bold'_import and performs necessary operations for WIN32 DLLs. For WIN16 DLL use, this macro evaluates to ROLE='bold'_import, which is essentially the same as ROLE='bold'_huge._OWLDATA macroMOREINFO="NONE"owldefs.hFORMAT="LINESPECIFIC"_OWLDATAREMAP='BodyNoLead'The ObjectWindows version of _RTLDATA adjusted to export and import WIN32 DLLs for ObjectWindows. _OWLDATA modifies a specific data declaration. REMAP='Body'For static WIN16 and WIN32, the default models are used. When ObjectWindows is being built, this macro evaluates to ROLE='bold'_export for WIN16 and WIN32 DLLs. For WIN32 DLLs, this macro evaluates to ROLE='bold'_import and performs necessary operations for WIN32 DLLs. For WIN16 DLLs, this macro evaluates to nothing._OWLDLL macroMOREINFO="NONE"owldefs.hFORMAT="LINESPECIFIC"_OWLDLLREMAP='BodyNoLead'_OWLDLL, which is automatically defined if _RTLDLL is turned on, controls values for the _OWLCLASS, _OWLDATA, and _OWLFUNC macros. It is also automatically defined if the user _OWLDLL module is used as a DLL from another user module. It must be defined if you are writing ObjectWindows applications or DLLs that use DLLs. This macro can also be turned on by a makefile._OWLFAR macroMOREINFO="NONE"owldefs.hFORMAT="LINESPECIFIC"_OWLFARREMAP='BodyNoLead'The macro _OWLFAR is the ObjectWindows version of _RTLFAR adapted to promote far data pointers in DLLs for ObjectWindows._OWLFARVTABLE macroMOREINFO="NONE"owldefs.hFORMAT="LINESPECIFIC"_OWLFARVTABLEREMAP='BodyNoLead'Moves the ObjectWindows virtual function tables (vtables) out of the DGROUP of the data segment and stores them in the code segment. Use this macro in conjunction with the _OWLCLASS macro to add the ROLE='bold'_huge option when static models are compiled._OWLFASTTHIS macroMOREINFO="NONE"owldefs.hFORMAT="LINESPECIFIC"_OWLFASTTHISREMAP='BodyNoLead' The macro _OWLFASTTHIS causes ROLE='bold'_fastthis to be added to the _OWLCLASS macro so that all ObjectWindows classes use the fastthis calling convention for passing the ROLE='bold'this parameter in the registers. This macro, which has the same effect as using the -ROLE='bold'po compiler option, applies to 16-bit code only._OWLFUNC macroMOREINFO="NONE"owldefs.hFORMAT="LINESPECIFIC"_OWLFUNCREMAP='BodyNoLead'The ObjectWindows function version of _RTLFUNC adapted to export and import functions for building WIN32 DLLs for ObjectWindows. _OWLFUNC modifies a specific member or global function for use in a DLL.REMAP='Body'For static WIN16 and WIN32 DLLs, the default models are used. When ObjectWindows is being built, this macro evaluates to ROLE='bold'_export for WIN16 and WIN32 DLLs. For WIN32 DLLs, this macro evaluates to ROLE='bold'_import and performs necessary operations for WIN32 DLLs. For WIN16 DLL use, this macro evaluates to nothing.OWLGetVersion functionMOREINFO="NONE"owldefs.hFORMAT="LINESPECIFIC"unsigned short far _OWLFUNC OWLGetVersion( );REMAP='BodyNoLead'Returns the version number of the ObjectWindows library. The version number is represented as an unsigned short.SB_Xxxx scroll bar constantsMOREINFO="NONE"windows.hREMAP='Body'The following constants define scroll bar modes:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='62*'COLNAME='C2' COLWIDTH='251*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SB_BOTHCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Displays or hides the horizontal and vertical scroll bars for a window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SB_CTLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Displays or hides a scroll bar's control button.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SB_HORIZCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Displays or hides the horizontal scroll bars for a window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SB_VERTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Displays or hides the vertical scroll bar for a window.shxxxx document sharing enumMOREINFO="NONE"docview.hREMAP='Body'The following file-sharing modes are available when opening document streams.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='69*'COLNAME='C2' COLWIDTH='259*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'shCompatCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Used for noncompliant applications, but should be avoided if possible.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'shNoneCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DENY_ALL functionality.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'shRead COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DENY_WRITE functionality.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'shWrite COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DENY_READ functionality.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'shReadWrite COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DENY_NONE functionalityCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'shDefaultCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Use stream implementation default value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'shMask COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Mask for file-sharing bits.TActionFunc typedefMOREINFO="NONE"window.hFORMAT="LINESPECIFIC"typedef void(*TActionFunc)(TWindow* win, void* param);REMAP='BodyNoLead'Passes a function pointer to ROLE='italic'TWindow::ForEach.See alsoREMAP='BodyNoLead'TWindow::ForEachTActionMemFunc typedefMOREINFO="NONE"window.hFORMAT="LINESPECIFIC"typedef void(TWindow::*TActionMemFunc)(TWindow* win, void* param);REMAP='BodyNoLead'Passes a member function pointer to ROLE='italic'TWindow::ForEach.See alsoREMAP='BodyNoLead'TWindow::ForEachTAnyPMF typedefMOREINFO="NONE"dispatch.hFORMAT="LINESPECIFIC"typedef void(GENERIC::*TAnyPMF)( );REMAP='BodyNoLead'A generic pointer to a member function.TAnyDispatcher typedefMOREINFO="NONE"dispatch.hFORMAT="LINESPECIFIC"typedef LRESULT(*TAnyDispatcher)(GENERIC&, TAnyPMF, WPARAM, LPARAM);REMAP='BodyNoLead'A message dispatcher type. All message dispatcher functions conform to this type and take four parameters:MARK='bullet'REMAP='Bullet1'A reference to an objectREMAP='Bullet1'A pointer to the member function in which the signature varies according to the cracking that the function performsREMAP='Bullet1'WPARAMREMAP='Bullet1'LPARAMTAppDictionary classMOREINFO="NONE"appdict.hREMAP='BodyNoLead'A ROLE='italic'TAppDictionary is a dictionary of associations between a process ID and an application. A process ID identifies a process, that is, a program (including all of its affiliated code, data, and system resources) that is loaded into memory and ready to execute. A ROLE='italic'TAppDictionary supports global application lookups using the global ROLE='italic'GetApplicationObject function or ROLE='italic'TAppDictionary's ROLE='italic'GetApplication function. If you do not define an application dictionary, ObjectWindows provides a default, global application dictionary that is exported. In fact, for EXEs, this global application dictionary is automatically used. REMAP='Body'ROLE='italic'TAppDictionary includes a ROLE='italic'TEntry struct, which stores the process ID and the corresponding application associated with the ID. The public member functions add, find, and remove the entries in the appplication dictionary. REMAP='Body'If you are statically linking ObjectWindows, you do not have to explicitly create an application dictionary because the default global ObjectWindows application dictionary is used. However, when writing a DLL component that is using ObjectWindows in a DLL, you do need to create your own dictionary. To make it easier to define an application dictionary, ObjectWindows includes a macro DEFINE_APP_DICTIONARY, which automatically creates or references the correct dictionary for your application.REMAP='Body'Although this class is transparent to most users building EXEs, component DLLs need to create an instance of a ROLE='italic'TApplication class for each task that they service. This kind of application differs from an EXE application in that it never runs a message loop. (All the other application services are available, however.)REMAP='Body'Although a component may consist of several DLLs, each with its own ROLE='italic'TModule, the component has only one ROLE='italic'TApplication for each task. A ROLE='italic'TAppDictionary, which is used for all servers (including DLL servers) and components, lets users produce a complete, self-contained application or component. By using a ROLE='italic'TAppDictionary, these components can share application objects. REMAP='Body'When 16-bit ObjectWindows is statically linked with an EXE or under Win32, with per- instance data, the ROLE='italic'TAppDictionary class is implemented as a wrapper to a single application pointer. In this case, there is only one ROLE='italic'TApplication that the component ever sees. REMAP='Body'To build a component DLL using the ObjectWindows DLL, a new ROLE='italic'TAppDictionary object must be constructed for that DLL. These are the steps an application must follow in order to associate the component DLL with the ROLE='italic'TAppDictionary, the application, and the window class hierarchy:NUMERATION='ARABIC' CONTINUATION="RESTARTS" INHERITNUM="IGNORE"REMAP='.NumList1'Use the DEFINE_APP_DICTIONARY macro to construct an instance of ROLE='italic'TAppDictionary. Typically, this will be a static global in one of the application's modules (referred to as "AppDictionary"). The DEFINE_DICTIONARY macro allows the same code to be used for EXEs and DLLs. FORMAT="LINESPECIFIC"TAppDictionary AppDictionary;REMAP='.NumList1'Construct a generic ROLE='italic'TModule and assign it to the global ROLE='italic'::Module. This is the default provided in the ObjectWindows' ROLE='italic'LibMain function.FORMAT="LINESPECIFIC"LibMain(...)
::Module = new TModule(0, hInstance);REMAP='.NumList1'When each ROLE='italic'TApplication instance is constructed, pass a pointer to the ROLE='italic'TAppDictionary as the last argument. This ensures that the application will insert itself into this dictionary. In addition, for 16 bit DLLs, the ROLE='italic'gModule argument needs to be supplied with a placeholder value because the ROLE='italic'Module construction has already been completed at this point, as a result of the process performed in step 2. FORMAT="LINESPECIFIC"TApplication* app = new TMyApp(..., app, AppDictionary);REMAP='.NumList1'If the Doc/View model is used, supply the application pointer when constructing the ROLE='italic'TDocManager object.FORMAT="LINESPECIFIC"SetDocManager(new TDocManager(mode, this));REMAP='.NumList1'When a non-parented window (for example, the main window) is being constructed, pass the application as the module. FORMAT="LINESPECIFIC"SetMainWindow(new TFrameWindow(0, "", false, this));See alsoREMAP='BodyNoLead'TApplication::GetWindowPtr, TWindow::GetWindowPtr, DEFINE_APP_DICTIONARY macroType definitionsTEntry FORMAT="LINESPECIFIC"struct TEntry {FORMAT="LINESPECIFIC" unsigned Pid;FORMAT="LINESPECIFIC" TApplication* App;FORMAT="LINESPECIFIC"};REMAP='BodyNoLead'An application dictionary entry that associates a process ID (ROLE='italic'Pid) with an application (ROLE='italic'App). The dictionary is indexed by (ROLE='italic'Pid) and can have only 1 entry per process ID.See alsoREMAP='Body'TAppDictionary::TEntry struct, TAppDictionary::IterateTEntryIteratorFORMAT="LINESPECIFIC"typedef void(*TEntryIterator)(TEntry&);REMAP='BodyNoLead'A dictionary iterator function pointer type that receives a reference to an entry. You can supply a function of this type to the ROLE='italic'Iterate function to iterate through the entries in the dictionary.See alsoREMAP='Body'TAppDictionary::TEntryIterator typedefPublic constructor and destructorConstructorFORMAT="LINESPECIFIC"TAppDictionary( );REMAP='BodyNoLead'Constructs aROLE='italic' TAppDictionary object.DestructorFORMAT="LINESPECIFIC"~TAppDictionary( );REMAP='BodyNoLead'Destroys the ROLE='italic'TAppDictionary object and calls ROLE='italic'DeleteCondemned to clean up the condemned applications.Public member functionsAddFORMAT="LINESPECIFIC"void Add(TApplication* app, unsigned pid = 0);REMAP='BodyNoLead'Adds an application object (ROLE='italic'app) and corresponding process ID to this dictionary. The default ID is the current process's ID.See alsoREMAP='Body'TAppDictionary::RemoveCondemnFORMAT="LINESPECIFIC"void Condemn(TApplication* app);REMAP='BodyNoLead'Marks an application in this dictionary as condemned by zeroing its process ID so that the application can be deleted later when ROLE='italic'DeleteCondemned is called.See alsoREMAP='Body'TAppDictionary::DeleteCondemnedDeleteCondemnedFORMAT="LINESPECIFIC"bool DeleteCondemned( );REMAP='BodyNoLead'Deletes all condemned applications and their associated process IDs from the dictionary. If no applications remain in the dictionary, ROLE='italic'DeleteCondemned returns ROLE='bold'true.See alsoREMAP='BodyNoLead'TAppDictionary::CondemnGetApplicationFORMAT="LINESPECIFIC"TApplication* GetApplication(unsigned pid = 0);REMAP='BodyNoLead'Looks up and returns the application associated with a given process ID. The default ID is the ID of the current process. If no application is associated with the process ID, ROLE='italic'GetApplication returns 0.IterateFORMAT="LINESPECIFIC"void Iterate(TEntryIterator iter);REMAP='BodyNoLead'Iterates through a list of entries in the application dictionary, calling the ROLE='italic'iter callback function for each entry.See alsoREMAP='Body'TAppDictionary::TEntryIteratorRemoveFORMAT="LINESPECIFIC"void Remove(TApplication* app);REMAP='BodyNoLead'Searches for the dictionary entry using the specified application (ROLE='italic'app). Then, removes a given application and process ID entry from this dictionary, but does not delete the application. FORMAT="LINESPECIFIC"void Remove(unsigned pid);REMAP='BodyNoLead'Searches for the dictionary entry using the specified process ID (ROLE='italic'pid). Then, removes a given application and its associated process ID entry from this dictionary, but does not delete the application. See alsoREMAP='Body'TAppDictionary::AddTApplication classMOREINFO="NONE"applicat.hREMAP='BodyNoLead'Derived from ROLE='italic'TModule, ROLE='italic'TApplication acts as an object-oriented stand-in for an application module. ROLE='italic'TApplication and ROLE='italic'TModule supply the basic behavior required of an application. ROLE='italic'TApplication member functions create instances of a class, create main windows, and process messages.Public data membersHAccTableFORMAT="LINESPECIFIC"HACCEL HAccTable;REMAP='BodyNoLead'Included to provide backward compatibility, ROLE='italic'HAccTable holds a handle to the current accelerator table being used by the application. New applications should instead use the accelerator table handle ROLE='italic'TWindowAttr::AccelTable for each window object in the application.See alsoREMAP='BodyNoLead'TWindow::LoadAcceleratorTable, TWindowAttr structhPrevInstanceFORMAT="LINESPECIFIC"HINSTANCE hPrevInstance;REMAP='BodyNoLead'Contains the handle of the previously executing instance of the Windows application. If ROLE='italic'hPrevInstance is 0, there was no previously executing instance when this instance began execution. Under Win32, this value is always 0.nCmdShowFORMAT="LINESPECIFIC"int nCmdShow;REMAP='BodyNoLead'Indicates how the main window is to be displayed (either maximized or as an icon). These correspond to the ROLE='italic'WinMain parameter ROLE='italic'nCmdShow. ROLE='italic'nCmdShow can contain one of the following constants:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='108*'COLNAME='C2' COLWIDTH='264*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SW_SHOWDEFAULTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Shows the default SW_xxxx command.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SW_HIDECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Hides the window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SW_MINIMIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Minimizes the specified window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SW_SHOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Activates a window using current size and position.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SW_SHOWMAXIMIZEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Displays a maximized window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SW_SHOWMINIMIZEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Displays a minimized window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SW_SHOWNACOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Displays window in its current state.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SW_SHOWNOACTIVATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Displays the window as an icon.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SW_SHOWNORMALCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Displays a window in its original size and position.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SW_SHOWSMOOTHCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Shows a window by updating it in a bitmap and then copying the bits to the screen.Type definitionsxsFORMAT="LINESPECIFIC"enum {xsUnknown, xsBadCast, xsBadTypeid, xsMsg, xsAlloc, xsOwl};REMAP='BodyNoLead'These bit flags define the types of exceptions that are caught and suspended. ROLE='italic'TApplication::SuspendThrow and ROLE='italic'TApplication::QueryThrow return the values of these bit flags.REMAP='Body'The following table shows the xs exception enum constants:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='72*'COLNAME='C2' COLWIDTH='144*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xsUnknownCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Unknown exceptionCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xsBadCast COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'Bad_cast exceptionCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xsBadTypeidCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'Bad_typeid exceptionCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xsMsgCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Any exception derived from ROLE='italic'xmsgCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xsAllocCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'xalloc exceptionCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xsOwlCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TXOwl exceptionSee alsoREMAP='BodyNoLead'TXOwl, TApplication::QueryThrow, TApplication::SuspendThrowPublic constructor and destructorConstructorFORMAT="LINESPECIFIC"TApplication(const char far* name = 0, TModule*& gModule = ::Module, TAppDictionary* appDict = 0);REMAP='BodyNoLead'This ROLE='italic'TApplication constructor creates a new ROLE='italic'TApplication object named ROLE='italic'name. You can use ROLE='italic'gModule to specify the global module pointer that points to this application. The ROLE='italic'appDict parameter specifies which dictionary this application will insert itself into. To override the default ObjectWindows ROLE='italic'TAppDictionary object, pass a pointer to a user-supplied ROLE='italic'appDict object.FORMAT="LINESPECIFIC"TApplication(const char far* name, HINSTANCE hInstance, HINSTANCE hPrevInstance, const char far* cmdLine, int cmdShow, TModule*& gModule = ::Module, TAppDictionary* appDict = 0);REMAP='BodyNoLead'This ROLE='italic'TApplication constructor creates a ROLE='italic'TApplication object with the application name (ROLE='italic'name), the application instance handle (ROLE='italic'instance), the previous application instance handle (ROLE='italic'prevInstance), the command line invoked (ROLE='italic'cmdLine), and the main window show flag (ROLE='italic'cmdShow). The ROLE='italic'appDict parameter specifies which dictionary this application will insert itself into. To override the default ObjectWindows ROLE='italic'TAppDictionary object, pass a pointer to a user-supplied ROLE='italic'appDict object. REMAP='Body'If you want to create your own ROLE='italic'WinMain, use this constructor because it provides access to the various arguments provided by ROLE='italic'WinMain. You can use ROLE='italic'gModule to specify the global module pointer that points to this application.DestructorFORMAT="LINESPECIFIC"~TApplication( );REMAP='BodyNoLead'~ROLE='italic'TApplication destroys the ROLE='italic'TApplication object.See alsoREMAP='BodyNoLead'TApplication::nCmdShow, TModule, TAppDictionaryPublic member functionsBeginModalFORMAT="LINESPECIFIC"int BeginModal(TWindow* window, int flags = MB_APPLMODAL);REMAP='BodyNoLead'ROLE='italic'BeginModal is called to begin a modal window's modal message loop. After determining which window to disable, saves the current status of the window, disables the window, calls ROLE='italic'MessageLoop, and then reenables the window when the message loop is finished. The flags determine how ROLE='italic'BeginModal treats the window. ROLE='italic'flags can be one of the following values:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='282*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_APPLMODALCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The window to be disabled (which is usually an ancestor of the modal window) is identified by window. If window is 0, no window is disabled.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_SYSTEMMODALCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The window to become system modal is identified by window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MB_TASKMODALCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'All top-level windows are disabled, and window is ignored. ROLE='italic'BeginModal returns -1 if an error occurs.See alsoREMAP='BodyNoLead'TWindowBWCCEnabledFORMAT="LINESPECIFIC"bool BWCCEnabled( );REMAP='BodyNoLead'Indicates if the Borland Custom Controls library (BWCC) is enabled. Returns ROLE='bold'true if BWCC is enabled and ROLE='bold'false if BWCC is disabled.CanCloseFORMAT="LINESPECIFIC"virtual bool CanClose( );REMAP='BodyNoLead'Returns ROLE='bold'true if it's OK for the application to close. By default, ROLE='italic'CanClose calls the ROLE='italic'CanClose member function of its main window and returns ROLE='bold'true if both the main window and the document manager (ROLE='italic'TDocManager) can be closed. If any of the ROLE='italic'CanClose functions return ROLE='bold'false, the application doesn't close. REMAP='Body'This member function is seldom redefined; closing behavior is usually redefined in the main window's ROLE='italic'CanClose member function, if needed.See alsoREMAP='BodyNoLead'TWindow::CanClose, TDocManagerCondemnFORMAT="LINESPECIFIC"void Condemn(TWindow* win);REMAP='BodyNoLead'Performs window cleanup.Ctl3dEnabledFORMAT="LINESPECIFIC"bool Ctl3dEnabled( ) const;REMAP='BodyNoLead'Returns ROLE='bold'true if the Microsoft 3-D Controls Library DLL is enabled. This DLL gives controls a three-dimensional look and feel.See alsoREMAP='.Indent1' ROLE='indent1'TApplication::EnableCtl3d, TApplication::EnableCtl3dAutosubclassEnableBWCCFORMAT="LINESPECIFIC"void EnableBWCC(bool enable = true, uint Language = 0);REMAP='BodyNoLead'Loads and registers BWCC.DLL if you are running 16-bit applications or BWCC32.DLL if you are running 32-bit applications. By default, BWCC is enabled. To disable BWCC, set ROLE='italic'enable to ROLE='bold'false.See alsoREMAP='BodyNoLead'TDialogEnableCtl3dFORMAT="LINESPECIFIC"void EnableCtl3d(bool enable = true);REMAP='BodyNoLead'Enables or disables the use of the CTL3D DLL. If ROLE='italic'enable is ROLE='bold'true, ROLE='italic'EnableCtl3d loads and registers the CTL3D.DLL if it's not already enabled.See alsoREMAP='BodyNoLead'TApplication::Ctl3dEnabled, TApplication::EnableCtl3dAutosubclassEnableCtl3dAutosubclassFORMAT="LINESPECIFIC"void EnableCtl3dAutosubclass(bool enable);REMAP='BodyNoLead'Enables or disables CTL3D's use of autosubclassing if CTL3D is already enabled using ROLE='italic'Ctl3dEnabled. If autosubclassing is enabled, any non-ObjectWindows dialog boxes have a 3-D effect. The common dialog classes and ROLE='italic'TDocManager use this function to turn on autosubclassing before creating a non-ObjectWindows dialog box to make it three-dimensional and to turn off autosubclassing immediately after the dialog box is destroyed.See alsoREMAP='BodyNoLead'TDialog::EvCtlColor, TApplication::EnableCtl3d, TApplication::Ctl3dEnabledEndModalFORMAT="LINESPECIFIC"void EndModal(int result);REMAP='BodyNoLead'ROLE='italic'EndModal is called to end a modal window's modal message loop. Sets ROLE='italic'result to -1 if an error occurs.FindFORMAT="LINESPECIFIC"bool Find(TEventInfo &, TEqualOperator = 0);REMAP='BodyNoLead'Because ROLE='italic'TApplication has no event table itself, it defers event handling to the DocManager. If a DocManager has been installed, ROLE='italic'Find calls ROLE='italic'TDocManager to handle events. See alsoREMAP='BodyNoLead'TEventHandler::TEventInfoGetBWCCModuleFORMAT="LINESPECIFIC"TModule* GetBWCCModule( ) const;REMAP='BodyNoLead'Returns a pointer to the enabled BWCC module.GetCtl3dModuleFORMAT="LINESPECIFIC"TModule* GetCtl3dModule( ) const;REMAP='BodyNoLead'Returns a pointer to the enabled Ctl3d module.GetDocManagerFORMAT="LINESPECIFIC"TDocManager* GetDocManager( );REMAP='BodyNoLead'Returns a pointer to the document manager object that invoked the application.See alsoREMAP='BodyNoLead'TApplication::SetDocManager, TDocManagerGetMainWindowFORMAT="LINESPECIFIC"TFrameWindow* GetMainWindow( );REMAP='BodyNoLead'Returns a pointer to the application's main window.See alsoREMAP='BodyNoLead'TApplication::SetMainWindow, TFrameWindowGetWindowPtrFORMAT="LINESPECIFIC"TWindow* GetWindowPtr(HWND hWnd) const;REMAP='BodyNoLead'Retrieves a ROLE='italic'TWindow pointer associated with the handle to a window (hWnd). Allows more than one application to share the same HWND.See alsoREMAP='BodyNoLead'TWindow::GetWindowPtrGetWinMainParamsFORMAT="LINESPECIFIC"void GetWinMainParams( );REMAP='BodyNoLead'Initializes a static instance of an application. ObjectWindows ROLE='italic'OwlMain uses this function to support static application instances.See alsoREMAP='BodyNoLead'TApplication::SetWinMainParamsMessageLoopFORMAT="LINESPECIFIC"virtual int MessageLoop( );REMAP='BodyNoLead'Operates the application's message loop, which runs during the lifetime of the application. Queries for messages; if one is received, ROLE='italic'MessageLoop processes it by calling ROLE='italic'ProcessAppMsg. If the query returns without a message, ROLE='italic'MessageLoop calls ROLE='italic'IdleAction to perform some processing during the idle time. ROLE='italic'MessageLoop calls ROLE='italic'PumpWaitingMessages to get and dispatch waiting messages. ROLE='italic'MessageLoop can be broken if ROLE='italic'BreakMessageLoop is set by ROLE='italic'EndModal.See alsoREMAP='BodyNoLead'TApplication::BreakMessageLoop, TApplication::IdleAction, TApplication::ProcessAppMsg, TApplication::PumpWaitingMessagesPostDispatchActionFORMAT="LINESPECIFIC"void PostDispatchAction( );REMAP='BodyNoLead'If ROLE='italic'TApplication's message loop is not used, this function should be called after each message is dispatchedPreProcessMenuFORMAT="LINESPECIFIC"virtual void PreProcessMenu(HMENU hmenu);REMAP='BodyNoLead'Your application can call ROLE='italic'PreProcessMenu to process the main window's menu before it is displayed.See alsoREMAP='BodyNoLead'TDocmanager::EvPreProcessMenu, TMenu::TMenuProcessAppMsgFORMAT="LINESPECIFIC"virtual bool ProcessAppMsg(MSG& msg);REMAP='BodyNoLead'Checks for any special processing that is required for modeless dialog box, accelerator, and MDI accelerator messages. Calls the virtual ROLE='italic'TWindow::PreProcessMsg function of the window receiving the message. If your application does not create modeless dialog boxes, does not respond to accelerators, and is not an MDI application, you can improve performance by overriding this member function to return ROLE='bold'false.See alsoREMAP='BodyNoLead'TWindow::PreProcessMsg, MSG structPumpWaitingMessagesFORMAT="LINESPECIFIC"bool PumpWaitingMessages( );REMAP='BodyNoLead'Called by ROLE='italic'MessageLoop, PumpWaitingMessages processes and dispatches all waiting messages until the queue is empty. It also sets ROLE='italic'BreakMessageLoop when a WM_QUIT message is received.See alsoREMAP='BodyNoLead'TApplication::MessageLoop, TApplication::BreakMessageLoopQueryThrowFORMAT="LINESPECIFIC"int QueryThrow( );REMAP='BodyNoLead'ROLE='italic'QueryThrow tests to see if an exception is suspended and returns one or more of the bit flags in the ROLE='italic'xsROLE='italic' exceptionROLE='italic' statusROLE='italic' enum.See alsoREMAP='BodyNoLead'xs exception status enumResumeThrowFORMAT="LINESPECIFIC"void ResumeThrow( );REMAP='BodyNoLead'ROLE='italic'ResumeThrow checks and rethrows suspended exceptions. Call this function any time you reenter ObjectWindows code from exception-unsafe code where an exception could have been thrown.RunFORMAT="LINESPECIFIC"virtual int Run( );REMAP='BodyNoLead'Initializes the instance, calling ROLE='italic'InitApplication for the first executing instance and ROLE='italic'InitInstance for all instances. If the initialization is successful, ROLE='italic'Run calls ROLE='italic'MessageLoop and runs the application. If exceptions are thrown outside the message loopROLE='italic', Run catches these exceptions.REMAP='Body'If an error occurs in the creation of a window, ROLE='italic'Run throws a ROLE='italic'TXWindow exception. If ROLE='italic'Status is assigned a nonzero value (which ObjectWindows uses to identify an error), a ROLE='italic'TXCompatibility exception is thrown.See alsoREMAP='BodyNoLead'TApplication::InitApplication, TApplication::InitInstance, TApplication::MessageLoop, TXWindow, TXCompatibilitySetWinMainParamsFORMAT="LINESPECIFIC"static void SetWinMainParams(HINSTANCE hInstance, HINSTANCE hPrevInstance, const char far* cmdLine, int cmdShow);REMAP='BodyNoLead'ObjectWindows default ROLE='italic'WinMain function calls ROLE='italic'SetMainWinParams so that ROLE='italic'TApplication can store the parameters for future use. To construct an application instance, ROLE='italic'WinMain calls the ROLE='italic'OwlMain function that's in the user's code. As it's being constructed, the application instance can fill in the parameters using those set earlier by ROLE='italic'SetMainWinParams.See alsoREMAP='BodyNoLead'TApplication::GetWinMainParamsSuspendThrowFORMAT="LINESPECIFIC"void SuspendThrow(xalloc& x);REMAP='BodyNoLead'This version of ROLE='italic'SuspendThrow saves xalloc exception information.FORMAT="LINESPECIFIC"void SuspendThrow(xmsg& x);REMAP='BodyNoLead'This version of ROLE='italic'SuspendThrow saves xmsg exception information.FORMAT="LINESPECIFIC"void SuspendThrow(TXOwl& x);REMAP='BodyNoLead'This version of ROLE='italic'SuspendThrow saves a copy of a ROLE='italic'TXOwl exception.FORMAT="LINESPECIFIC"void SuspendThrow(int);REMAP='BodyNoLead'This version of ROLE='italic'SuspendThrow sets the ROLE='italic'xs exception status bit flags to the specified exception, for example ROLE='italic'Bad_cast or ROLE='italic'Bad_typeid.See alsoREMAP='BodyNoLead'xs exception status enum, TXOwlUncondemnFORMAT="LINESPECIFIC"void Uncondemn (TWindow* win);REMAP='BodyNoLead'Removes condemned children from the list of condemned windows.See alsoREMAP='BodyNoLead'TWindowProtected data membersBreakMessageLoopFORMAT="LINESPECIFIC"bool BreakMessageLoop;REMAP='BodyNoLead'Causes the current modal message loop to break and terminate. If the current modal message loop is the main application, and your program sets ROLE='italic'BreakMessageLoop, your main application terminates.See alsoREMAP='BodyNoLead'TApplication::EndModal, TApplication::MessageLoop, TApplication::PumpWaitingMessagesMessageLoopResultFORMAT="LINESPECIFIC"int MessageLoopResult;REMAP='BodyNoLead'ROLE='italic'MessageLoopResult is set by a call to ROLE='italic'EndModal. It contains the value that is returned by ROLE='italic'MessageLoop and ROLE='italic'BeginModal.See alsoREMAP='BodyNoLead'TApplication::BeginModal, TApplication::EndModal, TApplication::MessageLoopProtected member functionsIdleActionFORMAT="LINESPECIFIC"virtual bool IdleAction(long idleCount);REMAP='BodyNoLead'ObjectWindows calls ROLE='italic'IdleAction when no messages are waiting in the queue to be processed. You can override ROLE='italic'IdleAction to do background processing. However, the default action is to give the main window a chance to do idle processing as long as ROLE='italic'IdleAction returns true. ROLE='italic'idleCount specifies the number of times ROLE='italic'IdleAction has been called between messages.See alsoREMAP='BodyNoLead'TFrameWindow::IdleActionInitApplicationFORMAT="LINESPECIFIC"virtual void InitApplication( );REMAP='BodyNoLead'ObjectWindows calls ROLE='italic'InitApplication to initialize the first instance of the application. For subsequent instances, this member function is not called.REMAP='Body'The following sample program calls ROLE='italic'InitApplication the first time an instance of the program begins.FORMAT="LINESPECIFIC"class TTestApp : public TApplication {
public:
TTestApp( ): TApplication("Instance Tester")
{strcpy(WindowTitle, "Additional Instance");}
protected:
char WindowTitle[20];
void InitApplication( ) {strcpy(WindowTitle, "First Instance");}
void InitMainWindow( ) {MainWindow = new TFrameWindow(0, WindowTitle);}
};
static TTestApp App;InitInstanceFORMAT="LINESPECIFIC"virtual void InitInstance( );REMAP='BodyNoLead'Performs each instance initialization necessary for the application. Unlike ROLE='italic'InitApplication, which is called for the first instance of an application, ROLE='italic'InitInstance is called whether or not there are other executing instances of the application. ROLE='italic'InitInstance calls ROLE='italic'InitMainWindow, and then creates and shows the main window element by ROLE='italic'TWindow::Create and ROLE='italic'TWindow::Show. If the main window can't be created, a ROLE='italic'TXInvalidMainWindow exception is thrown.REMAP='Body'If you redefine this member function, be sure to explicitly call ROLE='italic'TApplication::InitInstance.See alsoREMAP='BodyNoLead'TApplication::InitApplication, TApplication::InitMainWindow, TApplication::Run, TModule::MakeWindow, TWindow::ShowInitMainWindowFORMAT="LINESPECIFIC"virtual void InitMainWindow( );REMAP='BodyNoLead'By default, ROLE='italic'InitMainWindow constructs a generic ROLE='italic'TFrameWindow object with the name of the application as its caption. You can redefine ROLE='italic'InitMainWindow to construct a useful main window object of ROLE='italic'TFrameWindow (or a class derived from ROLE='italic'TFrameWindow) and store it in ROLE='italic'MainWindow. The main window must be a top-level window; that is, it must be derived from ROLE='italic'TFrameWindow. A typical use isFORMAT="LINESPECIFIC"virtual void TMyApp_InitMainWindow( ){
SetMainWindow(TMyWindow(NULL, Caption));
}REMAP='Body'ROLE='italic'InitMainWindow can be overridden to create your own custom window.SetDocManagerFORMAT="LINESPECIFIC"TFrameWindow* SetDocManager(TDocManager* docManager);REMAP='BodyNoLead'Sets a pointer to the document manager object that invoked the application.See alsoREMAP='BodyNoLead'TApplication::GetDocManager, TDocManager, TFrameWindowSetMainWindowFORMAT="LINESPECIFIC"TFrameWindow* SetMainWindow(TFrameWindow* window);REMAP='BodyNoLead'Sets up a new main window and sets the window's WM_MAINWINDOW flag.See alsoREMAP='BodyNoLead'TApplication::GetMainWindow, TFrameWindowTermInstanceFORMAT="LINESPECIFIC"virtual int TermInstance(int status);REMAP='BodyNoLead'Handles the termination of each executing instance of an ObjectWindows application.TApplication::TXInvalidMainWindow classMOREINFO="NONE"applicat.hREMAP='BodyNoLead'A nested class, ROLE='italic'TXInvalidMainWindow describes an exception that results from an invalid Window. This exception is thrown if there is not enough memory to create a window or a dialog object. ROLE='italic'InitInstance throws this exception if it can't initialize an instance of an application object.Public constructorConstructorFORMAT="LINESPECIFIC"TXInvalidMainWindow( );REMAP='BodyNoLead'Constructs a ROLE='italic'TXInvalidMainWindow object with a default IDS_INVALIDMAINWINDOW message.Public member functionsCloneFORMAT="LINESPECIFIC"virtual TXOwl* Clone( );REMAP='BodyNoLead'Makes a copy of the exception object. ROLE='italic'Clone must be implemented in any class derived from ROLE='italic'TXOwl.ThrowFORMAT="LINESPECIFIC"virtual void Throw( );REMAP='BodyNoLead'Throws the exception object. ROLE='italic'Throw must be implemented in any class derived from ROLE='italic'TXOwl.TAutoFactory<> classMOREINFO="NONE"olefacto.hREMAP='Body'A template class, ROLE='italic'TAutoFactory<> creates callback code for ObjectWindows classes. The application class is passed as the argument to the template. By itself, ROLE='italic'TAutoFactory<> does not provide linking or embedding support for ObjectWindows automated applications.REMAP='Body'Although ROLE='italic'TAutoFactory<> simplifies the process of creating the callback function, you can write your own callback function or provide alternate implementation for any or all of ROLE='italic'TAutoFactory<>'s functions.See alsoREMAP='BodyNoLead'TComponentFactory typedef, TOcRegistrar class, TOleFactoryBase classPublic member functionsCreateFORMAT="LINESPECIFIC"static IUnknown* Create(IUnknown* outer, uint32 options, uint32 id);REMAP='BodyNoLead'ROLE='italic'Create is a ROLE='italic'TComponentFactory callback function that creates or destroys the application or creates objects. If an application object does not already exist, ROLE='italic'Create creates a new one. The ROLE='italic'outer argument points to the OLE2 ROLE='italic'IUnknown interface with which this object aggregates itself. If outer is 0, the new object is not aggregated, or it will become the main object.REMAP='Body'The ROLE='italic'options argument indicates the application's mode while it is running. The values for ROLE='italic'options are either set from the command line or set by ObjectComponents. They are passed in by the "Registrar" to this callback. The application looks at these flags to know how to operate, and the factory callback looks at them to know what to do. For example, a value of ROLE='italic'amExeMode indicates that the server is running as an .EXE either because it was built as an .EXE or because it is a .DLL that was launched by an .EXE stub and is now running as an executable program. See ROLE='italic'TOcAppMode enum for a description of the possible values for the ROLE='italic'options argument. REMAP='Body'If the application already exists, ROLE='italic'Create returns the application's OLE interface and registers the options from ROLE='italic'TOcAppMode enum which contains OLE-related flags used in the application's command line. For example, theROLE='italic' amAutomation flag tells the server to register itself as a single-user application. (In general, these flags tell the application whether it has been run as a server, whether it needs to register itself, and so on.)REMAP='Body'The ROLE='italic'id argument, which is not used for ROLE='italic'TAutoFactory, is always 0.See also REMAP='BodyNoLead'TAutoFactory::DestroyApp, TOcAppMode enumCreateAppFORMAT="LINESPECIFIC"static T* CreateApp(uint32 options);REMAP='BodyNoLead'ROLE='italic'CreateApp creates a new automated application. By default, it creates a new application of template type ROLE='italic'T with no arguments. The ROLE='italic'options argument is one of the ROLE='italic'TOcAppMode enum values, for example, ROLE='italic'amRun, ROLE='italic'amAutomation, and so on that indicate the application's mode when running.See also REMAP='BodyNoLead'TAutoFactory::DestroyApp, TOcAppMode enumDestroyAppFORMAT="LINESPECIFIC"static void DestroyApp(T* app);REMAP='BodyNoLead'Destroys the previously created application referred to in ROLE='italic'app.operator TComponentFactoryFORMAT="LINESPECIFIC"operator TComponentFactory( );REMAP='BodyNoLead'Converts the object into a pointer to the factory. ObjectComponents uses this pointer to create the automated object.See alsoREMAP='BodyNoLead'TAutoFactory::CreateAppTBandInfo structMOREINFO="NONE"dc.hREMAP='Body'An ObjectWindows ROLE='bold'struct, ROLE='italic'TBandInfo is used to pass information to a printer driver that supports banding. ROLE='italic'TBandInfo is declared as follows:FORMAT="LINESPECIFIC"struct TBandInfo {
bool HasGraphics;
bool HasText;
TRect GraphicsRect;
};REMAP='Body'ROLE='italic'HasGraphics is ROLE='bold'true if graphics are (or are expected to be) on the page or in the band; otherwise, it is ROLE='bold'false. REMAP='Body'ROLE='italic'HasText is ROLE='bold'true if text is (or is expected to be) on the page or in the band; otherwise, it is ROLE='bold'false. REMAP='Body'ROLE='italic'GraphicsRect defines the bounding region for all graphics on the page.See alsoREMAP='BodyNoLead'TPrintDC::BandInfo, TPrintDC::NextBandTBitmap classMOREINFO="NONE"gdiobjec.hREMAP='BodyNoLead'ROLE='italic'TBitmap is the GDI bitmap class derived from ROLE='italic'TGdiObject. ROLE='italic'TBitMap can construct a bitmap from many sources. ROLE='italic'TBitmap objects are DDBs (device-dependent bitmaps), which are different from the DIBs (device-independent bitmaps) represented by ROLE='italic'TDib objects.Public constructorsConstructorsFORMAT="LINESPECIFIC"TBitmap(HBITMAP handle, TAutoDelete autoDelete = NoAutoDelete);REMAP='BodyNoLead'Creates a ROLE='italic'TBitmap object and sets the ROLE='italic'Handle data member to the given borrowed ROLE='italic'handle. The ROLE='italic'ShouldDelete data member defaults to false, ensuring that the borrowed handle will not be deleted when the C++ object is destroyed.FORMAT="LINESPECIFIC"TBitmap(const TClipboard& clipboard);REMAP='BodyNoLead'Creates a ROLE='italic'TBitmap object with values from the given Clipboard.FORMAT="LINESPECIFIC"TBitmap(const TBitmap& bitmap);REMAP='BodyNoLead'Creates a copy of the given ROLE='italic'bitmap object.FORMAT="LINESPECIFIC"TBitmap(int width, int height, uint8 planes=1, uint8 bitCount=1, void far* bits=0);REMAP='BodyNoLead'Creates a ROLE='italic'bitmap object from ROLE='italic'bitCount bits in the ROLE='italic'bits buffer with the given ROLE='italic'width, ROLE='italic'height, and ROLE='italic'planes argument values.FORMAT="LINESPECIFIC"TBitmap(const BITMAP far* bitmap);REMAP='BodyNoLead'Creates a bitmap object with the values found in the given ROLE='italic'bitmap structure.FORMAT="LINESPECIFIC"TBitmap(const TDC& Dc, int width, int height, bool discardable = false);REMAP='BodyNoLead'Creates a bitmap object for the given device context with the given argument values.FORMAT="LINESPECIFIC"TBitmap(const TDC& Dc, const TDib& dib, uint32 usage=CBM_INIT);REMAP='BodyNoLead'Creates a bitmap object for the given device context with the given ROLE='italic'dib and ROLE='italic'usage argument values.FORMAT="LINESPECIFIC"TBitmap(const TMetaFilePict& metaFile, TPalette& palette, const TSize& size);REMAP='BodyNoLead'Creates a bitmap object from the given ROLE='italic'metaFile using the given ROLE='italic'palette and ROLE='italic'size arguments.FORMAT="LINESPECIFIC"TBitmap(const TDib& dib, const TPalette* palette = 0);REMAP='BodyNoLead'Creates a bitmap object from the given ROLE='italic'dib and ROLE='italic'palette arguments. A working palette constructed from the DIB's color table is used if no palette is supplied. The default system palette can also be passed using ROLE='italic'&TPalette::GetStock(TPalette::Default);FORMAT="LINESPECIFIC"TBitmap(HINSTANCE instance, TResID resID);REMAP='BodyNoLead'Creates a bitmap object for the given application instance from the given resource.See alsoREMAP='BodyNoLead'TClipBoard::GetClipboardData, TDC, TDib, TGdiObject::Handle, TGdiObject::ShouldDelete, TPalette, BITMAP structPublic member functionsBitsPixelFORMAT="LINESPECIFIC"uint8 BitsPixel( ) const;REMAP='BodyNoLead'Returns the number of bits per pixel in this bitmap.See alsoREMAP='BodyNoLead'TBitmap::GetObjectGetBitmapBitsFORMAT="LINESPECIFIC"uint32 GetBitmapBits(uint32 count, void far* bits) const;REMAP='BodyNoLead'Copies up to ROLE='italic'count bits of this bitmap to the buffer ROLE='italic'bits.GetBitmapDimensionFORMAT="LINESPECIFIC"bool GetBitmapDimension(TSize& size) const;REMAP='BodyNoLead'Retrieves the size of this bitmap (width and height, measured in tenths of millimeters) and sets it in the size argument. Returns ROLE='bold'true if the call is successful; otherwise returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TSizeGetObjectFORMAT="LINESPECIFIC"bool GetObject(BITMAP far& bitmap) const;REMAP='BodyNoLead'Retrieves data (width, height, and color format) for this bitmap and sets it in the given ROLE='italic'BITMAP structure. To retrieve the bit pattern, use ROLE='italic'GetBitmapBits.See alsoREMAP='BodyNoLead'TBitMap::GetBitmapBits, BITMAP structHeightFORMAT="LINESPECIFIC"int Height( ) const;REMAP='BodyNoLead'Returns the height of this bitmap.See alsoREMAP='BodyNoLead'TBitmap::GetObjectoperator <<FORMAT="LINESPECIFIC"TClipboard& operator <<(TClipboard& clipboard, TBitmap& bitmap);REMAP='BodyNoLead'Copies the given ROLE='italic'bitmap to the given ROLE='italic'clipboard argument. Returns a reference to the resulting Clipboard, which allows normal chaining of <<.See alsoREMAP='BodyNoLead'TClipboardoperator HBITMAP( )FORMAT="LINESPECIFIC"operator HBITMAP( ) const;REMAP='BodyNoLead'Typecasting operator. Converts this bitmap's ROLE='italic'Handle to type ROLE='italic'HBITMAP (the data type representing the handle to a physical bitmap).PlanesFORMAT="LINESPECIFIC"uint8 Planes( ) const;REMAP='BodyNoLead'Returns the number of planes in this bitmap.See alsoREMAP='BodyNoLead'TBitmap::GetObjectSetBitmapBitsFORMAT="LINESPECIFIC"uint32 SetBitmapBits(uint32 count, const void far* bits);REMAP='BodyNoLead'Copies up to ROLE='italic'count bits from the ROLE='italic'bits buffer to this bitmap.SetBitmapDimensionFORMAT="LINESPECIFIC"bool SetBitmapDimension(const TSize& size, TSize far* oldSize=0);REMAP='BodyNoLead'Sets the size of this bitmap from the given ROLE='italic'size argument (width and height, measured in tenths of millimeters). The previous size is set in the oldSize argument. Returns ROLE='bold'true if the call is successful; otherwise returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TSizeToClipboardFORMAT="LINESPECIFIC"void ToClipboard(TClipboard& clipboard);REMAP='BodyNoLead'Copies this bitmap to the given Clipboard.See alsoREMAP='BodyNoLead'TClipboard::SetClipboardDataWidthFORMAT="LINESPECIFIC"int Width( ) const;REMAP='BodyNoLead'Returns the width of this bitmap.See alsoREMAP='BodyNoLead'TBitmap::GetObjectProtected constructorConstructorFORMAT="LINESPECIFIC"TBitMap( );REMAP='BodyNoLead'Protected constructor for a ROLE='italic'TBitmap object.Protected member functionsCreateFORMAT="LINESPECIFIC"void Create(const TDib& dib, const TPalette &palette);FORMAT="LINESPECIFIC"void Create(const TBitmap &src);REMAP='BodyNoLead'Creates a bitmap handle from the given argument objects.See alsoREMAP='BodyNoLead'TDib, TPaletteOperatorsoperator <<FORMAT="LINESPECIFIC"TClipboard& operator <<(TClipboard& clipboard, TBitmap& bitmap);REMAP='BodyNoLead'Copies the given ROLE='italic'bitmap to the given ROLE='italic'clipboard argument. Returns a reference to the resulting Clipboard, which allows normal chaining of <<.See alsoREMAP='BodyNoLead'TClipboardoperator HBITMAP( )FORMAT="LINESPECIFIC"operator HBITMAP( ) const;REMAP='BodyNoLead'Typecasting operator. Converts this bitmap's ROLE='italic'Handle to type ROLE='italic'HBITMAP (the data type representing the handle to a physical bitmap).TBitmapGadget classMOREINFO="NONE"bitmapga.hREMAP='BodyNoLead'Derived from ROLE='italic'TGadget, TBitmapGadget is a simple gadget that can display an array of bitmap images one at a time.Public constructor and destructorConstructor FORMAT="LINESPECIFIC"TBitmapGadget(TResId bmpResId, int id, TBorderStyle borderStyle, TResId bitmapName, int numImages, int startImage);REMAP='BodyNoLead'Constructs a ROLE='italic'TBitmapGadget and sets the current image to the beginning image (ROLE='italic'startImage) in the array of images. Then, sets the border style to the current ROLE='italic'TGadget border style and ROLE='italic'numImages to the number of images in the array.REMAP='Body'DestructorFORMAT="LINESPECIFIC"~TBitmapGadget( );REMAP='BodyNoLead'Deletes the array of images.Public member functionsSelectImageFORMAT="LINESPECIFIC"int SelectImage(int imageNum, bool immediate);REMAP='BodyNoLead'Determines the current image and repaints the client area if the image has changed. Updates the client area if the image has changed.SysColorChangeFORMAT="LINESPECIFIC"void SysColorChange( );REMAP='BodyNoLead'When the system colors have been changed, ROLE='italic'SysColorChange is called by the gadget window's ROLE='italic'EvSysColorChange so that bitmap gadgets can be rebuilt and repainted.Protected member functionsGetDesiredSizeFORMAT="LINESPECIFIC"void GetDesiredSize(TSize& size);REMAP='BodyNoLead'Calls ROLE='italic'TGadget::GetDesiredSize, which determines how big the bitmap gadget can be. The gadget window sends this message to query the gadget's size. If shrink-wrapping is requested, ROLE='italic'GetDesiredSize returns the size needed to accommodate the borders and margins. If shrink-wrapping is not requested, it returns the gadget's current width and height. ROLE='italic'TGadgetWindow needs this information to determine how big the gadget needs to be, but it can adjust these dimensions if necessary. If ROLE='italic'WideAsPossible is ROLE='bold'true, then the width parameter (ROLE='italic'size.cx) is ignored.PaintFORMAT="LINESPECIFIC"void Paint(TDC& dc);REMAP='BodyNoLead'Paints the gadget's border and the contents of the bitmap.See alsoREMAP='BodyNoLead'TGadget::PaintSetBoundsFORMAT="LINESPECIFIC"void SetBounds(TRect& r);REMAP='BodyNoLead'Calls ROLE='italic'TGadget::SetBounds and passes the dimensions of the bitmap gadget. ROLE='italic'SetBounds informs the control gadget of a change in its bounding rectangle.See alsoREMAP='BodyNoLead'TGadget::SetBoundsTBitSet classMOREINFO="NONE"bitset.hREMAP='BodyNoLead'ROLE='italic'TBitSet sets or clears a single bit or a group of bits. You can use this class to set and clear option flags and to retrieve information about a set of bits. The class ROLE='italic'TCharSet performs similar operations for a string of characters.Public constructorsConstructorsFORMAT="LINESPECIFIC"TBitSet( );REMAP='BodyNoLead'Constructs a ROLE='italic'TBitSet object.FORMAT="LINESPECIFIC"TBitSet(const TBitSet& bs);REMAP='BodyNoLead'Constructs a ROLE='italic'TBitSet object as a copy of another ROLE='italic'TBitSet.Public member functionsDisableItemFORMAT="LINESPECIFIC"void DisableItem(int item);REMAP='BodyNoLead'Clears a single bit at ROLE='italic'item.FORMAT="LINESPECIFIC"void DisableItem(const TBitSet& bs);REMAP='BodyNoLead'Clears the set of bits enabled in ROLE='italic'bs.EnableItemFORMAT="LINESPECIFIC"void EnableItem(int item);REMAP='BodyNoLead'Sets a single bit at ROLE='italic'item.FORMAT="LINESPECIFIC"void EnableItem(const TBitSet& bs);REMAP='BodyNoLead'Sets the set of bits enabled in ROLE='italic'bs.HasFORMAT="LINESPECIFIC"int Has(int item);REMAP='BodyNoLead'Is nonzero if ROLE='italic'item is in the set of bits.IsEmptyFORMAT="LINESPECIFIC"int TBitSet::IsEmpty( );REMAP='BodyNoLead'Is nonzero if the set is empty; otherwise, is 0.operator +=FORMAT="LINESPECIFIC"TBitSet& operator +=(int item);REMAP='BodyNoLead'Calls ROLE='italic'EnableItem to set a bit in the copied set. Returns a reference to the copied ROLE='italic'TBitSet object.FORMAT="LINESPECIFIC"TBitSet& operator +=(const TBitSet& bs);REMAP='BodyNoLead'Calls ROLE='italic'EnableItem to set the bits enabled in ROLE='italic'bs. Returns a reference to the copied ROLE='italic'TBitSet object.operator -=FORMAT="LINESPECIFIC"TBitSet& operator -=(int item);REMAP='BodyNoLead'Calls ROLE='italic'DisableItem to clear a bit in the set. Returns a reference to the copied ROLE='italic'TBitSet object.FORMAT="LINESPECIFIC"TBitSet& operator -=(const TBitSet& bs);REMAP='BodyNoLead'Calls ROLE='italic'DisableItem to clear the bits enabled in bs. Returns a reference to the copied ROLE='italic'TBitSet object.operator &=FORMAT="LINESPECIFIC"TBitSet& operator &=(const TBitSet&);REMAP='BodyNoLead'ANDs all the bits in the copied set and returns a reference to the copied ROLE='italic'TBitSet object.operator |=FORMAT="LINESPECIFIC"TBitSet& operator |=(const TBitSet&);REMAP='BodyNoLead'ORs all of the bits in the copied set and returns a reference to the copied ROLE='italic'TBitSet object.operator ~FORMAT="LINESPECIFIC"TBitSet operator ~(const TBitSet&);REMAP='BodyNoLead'Returns the set of bits that is the opposite of a specified set of bits. For example, if the set of bits is 01010101, the returned set is 10101010. Returns a reference to the copied ROLE='italic'TBitSet object.TBIVbxLibrary classMOREINFO="NONE"vxbctl.hREMAP='Body'Defined in vbxctl.h and virtually derived from ROLE='italic'TModule, TBIVbxLibrary handles loading and initializing of BIVBX10.DLL. If you want to use VBX controls, construct a ROLE='italic'TBIVbxLibrary object with the same scope as your application. For example, FORMAT="LINESPECIFIC"int OwlMain(int, char**)
{
TBIVbxLibrary vbxLib;
return TTestApp( ).Run( );
}Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TBIVbxLibrary( );REMAP='BodyNoLead'Constructs a ROLE='italic'TBIVbxLibrary object.DestructorFORMAT="LINESPECIFIC"~TBIVbxLibrary( );REMAP='BodyNoLead'Destroys a ROLE='italic'TBIVbxLibrary object.TBrush classMOREINFO="NONE"gdiobjec.hREMAP='BodyNoLead'The ROLE='italic'GDI Brush class is derived from ROLE='italic'TGdiObject. ROLE='italic'TBrush provides constructors for creating solid, styled, or patterned brushes from explicit information. It can also create a brush indirectly from a borrowed handle.Public constructorsConstructorsFORMAT="LINESPECIFIC"TBrush(HBRUSH handle, TAutoDelete autoDelete = NoAutoDelete);REMAP='BodyNoLead'Creates a ROLE='italic'TBrush object and sets the ROLE='italic'Handle data member to the given borrowed ROLE='italic'handle. The ROLE='italic'ShouldDelete data member defaults to ROLE='bold'false, ensuring that the borrowed handle will not be deleted when the C++ object is destroyed.FORMAT="LINESPECIFIC"TBrush(TColor color);REMAP='BodyNoLead'Creates a solid ROLE='italic'TBrush object with the given color. To save a brush creation this constructor uses a cache that can detect any color that matches a stock color.FORMAT="LINESPECIFIC"TBrush(TColor color, int style);REMAP='BodyNoLead'Creates a hatched ROLE='italic'TBrush object with the given style and color.FORMAT="LINESPECIFIC"TBrush(const TBitmap& pattern);REMAP='BodyNoLead'Creates a patterned ROLE='italic'TBrush object with the given pattern.FORMAT="LINESPECIFIC"TBrush(const TDib& pattern);REMAP='BodyNoLead'Creates a patterned ROLE='italic'TBrush object with the given DIB pattern.FORMAT="LINESPECIFIC"TBrush(const LOGBRUSH far* logBrush);REMAP='BodyNoLead'Creates a ROLE='italic'TBrush object with values from the given ROLE='italic'logBrush.See alsoREMAP='BodyNoLead'TBitmap, TColor, TDib, TGdiObject::Handle, TGdiObject::ShouldDelete, LOGBRUSH structPublic member functionsGetObjectFORMAT="LINESPECIFIC"bool GetObject(LOGBRUSH far& logBrush) const;REMAP='BodyNoLead'Retrieves information about this brush object and places it in the given ROLE='italic'LOGBRUSH structure. Returns ROLE='bold'true if the call is successful; otherwise returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TGdiObject::GetObject, LOGBRUSH structoperator HBRUSH( )FORMAT="LINESPECIFIC"operator HBRUSH( ) const;REMAP='BodyNoLead'Typecasting operator. Converts this brush's ROLE='italic'Handle to type HBRUSH (the data type representing the handle to a physical brush).UnrealizeObjectFORMAT="LINESPECIFIC"bool UnrealizeObject( );REMAP='BodyNoLead'Directs the GDI to reset the origin of this brush the next time it is selected. Returns ROLE='bold'true if call is successful; otherwise returns ROLE='bold'false.TButton ClassMOREINFO="NONE"button.hREMAP='BodyNoLead'ROLE='italic'TButton is an interface class that represents a pushbutton interface element. You must use a ROLE='italic'TButton to create a button control in a parent ROLE='italic'TWindow. You can also use a ROLE='italic'TButton to facilitate communication between your application and the button controls of a ROLE='italic'TDialog. This class is streamable.REMAP='Body'There are two types of pushbuttons: regular and default. Regular buttons have a thin border. Default buttons (which represent the default action of the window) have a thick border.Public data membersIsDefPBFORMAT="LINESPECIFIC"bool IsDefPB;REMAP='BodyNoLead'Indicates whether the button is to be considered the default pushbutton. Used for owner-draw buttons, ROLE='italic'IsDefPB is set by a ROLE='italic'TButton constructor based on BS_DEFPUSHBUTTON style setting.Public constructorsConstructorsFORMAT="LINESPECIFIC"TButton(Window *parent, int Id, const char far* text, int X, int Y, int W, int H, bool isDefault = false, TModule* module = 0);REMAP='BodyNoLead'Constructs a button object with the supplied parent window (ROLE='italic'parent), control ID (ROLE='italic'Id), associated text (ROLE='italic'text), position (ROLE='italic'X, ROLE='italic'Y) relative to the origin of the parent window's client area, width (ROLE='italic'W), and height (ROLE='italic'H). If ROLE='italic'IsDefault is ROLE='bold'true, the constructor adds BS_DEFPUSHBUTTON to the default styles set for the ROLE='italic'TButton (in ROLE='italic'Attr.ROLE='italic'Style). Otherwise, it adds BS_PUSHBUTTON.FORMAT="LINESPECIFIC"TButton(TWindow* parent, int resourceID, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TButton object to be associated with a button control of a ROLE='italic'TDialog. Calls ROLE='italic'DisableTransfer to exclude the button from the transfer mechanism because there is no data to be transferred.REMAP='Body'The ROLE='italic'resId parameter must correspond to a button resource that you define.See alsoREMAP='BodyNoLead'TControl::TControlProtected data memberIsCurrentDefPBFORMAT="LINESPECIFIC"bool IsCurrentDefPB;REMAP='BodyNoLead'Indicates whether the current button is the default pushbutton.Protected member functionsBMSetStyleFORMAT="LINESPECIFIC"LRESULT BMSetStyle(WPARAM, LPARAM);REMAP='BodyNoLead'Because a button can't have both owner-drawn and pushbutton styles, ROLE='italic'BMSetStyle keeps track of the style if the button is owner-drawn and the system tries to set the style to BS_DEFPUSHBUTTON. ROLE='italic'BMSetStyle sets ROLE='italic'IsCurrentDefPB to ROLE='bold'true if the button style is BS_DEFPUSHBUTTON.EvGetDlgCodeFORMAT="LINESPECIFIC"uint EvGetDlgCode(MSG far*);REMAP='BodyNoLead'Responds to WM_GETDLGCODE messages that are sent to a dialog box associated with a control. ROLE='italic'EvGetDlgCode allows the dialog manager to intercept a message that would normally go to a control and then ask the control if it wants to process this message. If not, the dialog manager processes the message. The ROLE='italic'msg parameter indicates the kind of message, for example a control, command, or button message, sent to the dialog box manager.REMAP='Body'ROLE='italic'EvGetDlgCode returns a code that indicates how the button is to be treated. If this is the currently used pushbutton, ROLE='italic'EvGetDlgCode returns either DLGC_DEFPUSHBUTTON or DLGC_UNDEFPUSHBUTTON.See alsoREMAP='BodyNoLead'DLGC_xxxx dialog control message constantsGetClassNameFORMAT="LINESPECIFIC"char far* GetClassName( );REMAP='BodyNoLead'Overrides ROLE='italic'TWindow's GetClassName function. If BWCC is enabled, returns the name of ROLE='italic'TButton's registration class, "BUTTON_CLASS"; if BWCC isn't enabled, returns the name "BUTTON".SetupWindowFORMAT="LINESPECIFIC"void SetupWindow( );REMAP='BodyNoLead'Overrides ROLE='italic'TWindow's SetupWindow function. If the button is the default pushbutton and an owner-drawn button, ROLE='italic'SetupWindow sends a DM_SETDEFID message to the parent window.Response table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='171*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_GETDLGCODECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EVGetDlgCodeCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_MESSAGE (BM_SETSTYLE, BMSetStyle)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'BMSetStyleTButtonGadget classMOREINFO="NONE"buttonga.hREMAP='BodyNoLead'Derived from ROLE='italic'TGadget, TButtonGadgets represent buttons that you can click on or off. You can also apply attributes such as color, style, and shape (notched or unnotched) to your button gadgets.REMAP='Body'In general, button gadgets are classified as either command or attribute buttons. Attribute buttons include radio buttons (which are considered exclusive), or check boxes (which are nonexclusive). The public data member, ROLE='italic'TType, enumerates these button types.REMAP='Body'ROLE='italic'TButtonGadget contains several functions that let you change the style of a button. Use ROLE='italic'SetAntialiasEdges to turn antialiasing on and off, ROLE='italic'SetNotchCorners to control corner notching, and ROLE='italic'SetShadowStyle to change the style of the button shadow.REMAP='Body'ROLE='italic'TButtonGadget objects respond to mouse events in the following manner: when a mouse button is pressed, the button is pressed; when the mouse button is released, the button is released. Commands can be entered only when the mouse button is in the "up" state. When the mouse is pressed, ROLE='italic'TButtonGadget objects capture the mouse and reserve all mouse messages for the current window. When the mouse button is up, button gadgets release the capture for the current window. The public data member, ROLE='italic'TState, enumerates the three button states.Type definitionsTShadowStyleFORMAT="LINESPECIFIC"enum TShadowStyle;REMAP='BodyNoLead'Enumerates button shadow stylesname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'either single (1) or double (2) shadow borders.TState FORMAT="LINESPECIFIC"enum TState;REMAP='BodyNoLead'ROLE='italic'TState enumerates the three button positions during which the button can be pressed: up (0), down (1), and an indeterminate state (2). A nonzero value indicates a highlighted button.TType FORMAT="LINESPECIFIC"enum TType;REMAP='BodyNoLead'Enumerates the types of buttons: command, exclusive, or nonexclusive.Public constructor and destructorConstructor FORMAT="LINESPECIFIC"TButtonGadget(TResId bmpResId, int id, TType type = Command, bool enabled = false, TState state = Up, bool repeat = false);REMAP='BodyNoLead'Constructs a ROLE='italic'TButtonGadget object using the specified bitmap ID, button gadget ID, and type, with enabled set to ROLE='italic'false and in a button-up state. The button isn't enabledname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'its initial state before command enabling occurs.REMAP='Body'DestructorFORMAT="LINESPECIFIC"~TButtonGadget( );REMAP='BodyNoLead'Deconstructs a ROLE='italic'TButtonGadget object.See alsoREMAP='BodyNoLead'TButtonGadget::TStatePublic member functionsCommandEnableFORMAT="LINESPECIFIC"void CommandEnable( );REMAP='BodyNoLead'Enables the button gadget to capture messages. Calls ROLE='italic'SendMessage to send a WM_COMMAND_ENABLE message to the gadget window's parent, passing a ROLE='italic'TCommandEnable: EvCommandEnable message for this button.GetButtonStateFORMAT="LINESPECIFIC"TState GetButtonState( );REMAP='BodyNoLead'Returns the state of the button. If 0, the button is up, if 1, the button is down, if 2, the state is indeterminate.See alsoREMAP='BodyNoLead'TButtonGadget::TStateGetButtonTypeFORMAT="LINESPECIFIC"TType GetButtonType( );REMAP='BodyNoLead'Returns the button type as 1 if the button is a command, 2 if exclusive, or 3 if nonexclusive.SetAntialiasEdgesFORMAT="LINESPECIFIC"SetAntialiasEdges(bool anti = true);REMAP='BodyNoLead'Turns the antialiasing of the button bevels on or off. By default, antialiasing is on. SetButtonStateFORMAT="LINESPECIFIC"void SetButtonState(TState);REMAP='BodyNoLead'Sets the state of the button. If the state has changed, the button is exclusive, and is in the down state, checks that the button is exclusive, sets ROLE='italic'State, and calls ROLE='italic'Invalidate to mark the changed area of the gadget for repainting.See alsoREMAP='BodyNoLead'TButtonGadget::TStateSetNotchCornersFORMAT="LINESPECIFIC"void SetNotchCorners(bool NotchCorners = true);REMAP='BodyNoLead'By default, ROLE='italic'SetNotchCorners implements notched corners for buttons. To repaint the frame of the button if the window has already been created, call ROLE='italic'InvalidateRect with the ROLE='italic'Bounds rectangle.See alsoREMAP='BodyNoLead'TButtonGadget::Invalidate, TGadget::InvalidateRect, TGadget::PaintSetShadowStyleFORMAT="LINESPECIFIC"void SetShadowStyle(TShadowStyle);REMAP='BodyNoLead'Sets the button style to a shadow style which, by default, is DoubleShadow. Sets the left and top borders to 2 and the right and bottom borders to ROLE='italic'ShadowStyle + 1.SysColorChangeFORMAT="LINESPECIFIC"void SysColorChange( );REMAP='BodyNoLead'ROLE='italic'SysColorChange responds to an ROLE='italic'EvSysColorChange message forwarded by the owning ROLE='italic'TGadgetWindow by setting the dither brush to zero. If a user-interface bitmap exists, ROLE='italic'SysColorchange deletes and rebuilds it to get the new button colors.Protected data membersAntialiasEdgesFORMAT="LINESPECIFIC"bool AntialiasEdges;REMAP='BodyNoLead'Is true if antialiasing is turned on.BitmapOriginFORMAT="LINESPECIFIC"TPoint BitmapOrigin;REMAP='BodyNoLead'Points to the x and y coordinates of the bitmap used for this button gadget.CelArrayFORMAT="LINESPECIFIC"TCelArray* CelArray;REMAP='BodyNoLead'The array of cels used by this button gadget.NotchCornersFORMAT="LINESPECIFIC"bool NotchCorners;REMAP='BodyNoLead'Initialized to 1, ROLE='italic'NotchCorners is 1 if the button gadget has notched corners or 0 if it doesn't have notched corners.PressedFORMAT="LINESPECIFIC"bool Pressed;REMAP='BodyNoLead'Initialized to 1, ROLE='italic'Pressed is 1 if the button is released or 0 if it isn't released.See alsoREMAP='BodyNoLead'TButtonGadget::Activate, TButtonGadget::BeginPressed, TButtonGadget::CancelPressedRepeatFORMAT="LINESPECIFIC"bool Repeat;REMAP='BodyNoLead'Initialized to 1, ROLE='italic'Repeat stores the repeat count for keyboard events.ResIdFORMAT="LINESPECIFIC"TResId ResId;REMAP='BodyNoLead'Holds the resource ID for this button gadget's bitmap.ShadowStyleFORMAT="LINESPECIFIC"TShadowStyle ShadowStyle;REMAP='BodyNoLead'Holds the shadow style for the buttonname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'1 for single and 2 for double.StateFORMAT="LINESPECIFIC"TState State;REMAP='BodyNoLead'Holds the state of the buttonname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'either up, down, or indeterminate.TypeFORMAT="LINESPECIFIC"TType Type;REMAP='BodyNoLead'Holds the type of the buttonname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'either command, exclusive, or nonexclusive.Protected member functionsActivateFORMAT="LINESPECIFIC"virtual void Activate(TPoint& p);REMAP='BodyNoLead'Invoked when the mouse is in the "up" state, ROLE='italic'Activate sets ROLE='italic'Pressed to ROLE='italic'false, changes the state for attribute buttons, and paints the button in its current state. To do this, it calls ROLE='italic'CancelPressed, posts a WM_COMMAND message to the gadget window's parent, and sends menu messages to the gadget window's parent.See alsoREMAP='BodyNoLead'TButtonGadget::PressedBeginPressedFORMAT="LINESPECIFIC"virtual void BeginPressed(TPoint& p);REMAP='BodyNoLead'When the mouse button is pressed, ROLE='italic'Beginpressed sets ROLE='italic'Pressed to ROLE='bold'true, paints the pressed button, and sends menu messages to the gadget window's parent.See alsoREMAP='BodyNoLead'TButtonGadget::PressedBuildCelArrayFORMAT="LINESPECIFIC"virtual void BuildCelArray( );REMAP='BodyNoLead'Builds a cel array using the resource bitmap as the base glyph. Any existing cel array should be deleted if a replacement is built. See alsoREMAP='BodyNoLead'TCelArrayCancelPressedFORMAT="LINESPECIFIC"virtual void CancelPressed(TPoint& p);REMAP='BodyNoLead'When the mouse button is released, ROLE='italic'CancelPressed sets ROLE='italic'Pressed to ROLE='bold'false, paints the button, and sends menu messages to the gadget window's parent.See alsoREMAP='BodyNoLead'TButtonGadget::PressedGetDesiredSizeFORMAT="LINESPECIFIC"void GetDesiredSize(TSize& size);REMAP='BodyNoLead'Stores the width and height (measured in pixels) of the button gadget in size. Calls ROLE='italic'TGadget's GetDesiredSize to calculate the relationship between one rectangle and another.GetGlyphDibFORMAT="LINESPECIFIC"virtual TDib* GetGlyphDib( );REMAP='BodyNoLead'Supplies the ROLE='italic'glyphdib. You can override this function to get a different ROLE='italic'dib, or to change the attributes of the ROLE='italic'dib, such as the colors, and so on.InvalidateFORMAT="LINESPECIFIC"void Invalidate( );REMAP='BodyNoLead'If a button is pressed or the state of the button is changed, ROLE='italic'Invalidate invalidates (marks for repainting) the changed area of the gadget. ROLE='italic'Invalidate only invalidates the area that changes. To repaint the entire gadget, call ROLE='italic'TGadget::InvalidateRect and pass the rectangle's boundaries.See alsoREMAP='BodyNoLead'TButtonGadget::TState, TGadget::InvalidateRectLButtonDownFORMAT="LINESPECIFIC"void LButtonDown(uint modKeys, TPoint& p);REMAP='BodyNoLead'Overrides ROLE='italic'TGadget member function and responds to a left mouse button click by calling ROLE='italic'BeginPressed.See alsoREMAP='BodyNoLead'TButtonGadget::BeginPressedLButtonUpFORMAT="LINESPECIFIC"void LButtonUp(uint modKeys, TPoint& p);REMAP='BodyNoLead'Overrides ROLE='italic'TGadget member functions and responds to a release of the left mouse button by calling ROLE='italic'Activate.See alsoREMAP='BodyNoLead'TButtonGadget::ActivateMouseEnterFORMAT="LINESPECIFIC"void MouseEnter(uint modKeys, TPoint& p);REMAP='BodyNoLead'Called when the mouse enters the boundary of the button gadget. ROLE='italic'modKeys indicates the virtual key information and can be any combination of the following values: MK_CONTROL, MK_LBUTTON, MK_MBUTTON, MK_RBUTTON, or MK_SHIFT..p indicates where the mouse entered the button gadget.MouseLeaveFORMAT="LINESPECIFIC"void MouseLeave(uint modKeys, TPoint& p);REMAP='BodyNoLead'Called when the mouse leaves the boundary of the button gadget. ROLE='italic'modKeys indicates the virtual key information and can be any combination of the following values: MK_CONTROL, MK_LBUTTON, MK_MBUTTON, MK_RBUTTON, or MK_SHIFT..p indicates the place where the mouse left the button gadget.MouseMoveFORMAT="LINESPECIFIC"void MouseMove(uint modKeys, TPoint& p);REMAP='BodyNoLead'Calls ROLE='italic'TGadget::MouseMove in response to the mouse being dragged. If the mouse moves off the button, ROLE='italic'MouseMove calls ROLE='italic'CancelPressed. If the mouse moves back onto the button, ROLE='italic'MouseMove calls ROLE='italic'BeginPressed.See alsoREMAP='BodyNoLead'TButtonGadget::BeginPressed, TButtonGadget::CancelPressedPaintFORMAT="LINESPECIFIC"void Paint(TDC& dc);REMAP='BodyNoLead'Gets the width and height of the window frame (in pixels), calls ROLE='italic'GetImageSize to retrieve the size of the bitmap, and sets the inner rectangle to the specified dimensions. Calls ROLE='italic'TGadget::PaintBorder to perform the actual painting of the border of the control. Before painting the control, ROLE='italic'Paint determines whether the corners of the control are notched, and then calls ROLE='italic'GetSysColor to see if highlighting or shadow colors are used. Paint assumes the border style is plain. Then, ROLE='italic'Paint draws the top, left, right, and bottom of the control, adjusts the position of the bitmap, and finishes drawing the control using the specified embossing, fading, and dithering.ReleaseGlyphDibFORMAT="LINESPECIFIC"virtual void ReleaseGlyphDib(TDib* glyph);REMAP='BodyNoLead'Releases the ROLE='italic'glyph dib depending on how it was obtained by ROLE='italic'GetGlyphDib.SetBoundsFORMAT="LINESPECIFIC"void SetBounds(TRect& r);REMAP='BodyNoLead'Gets the size of the bitmap, calls ROLE='italic'TGadget::SetBounds to set the boundary of the rectangle, and centers the bitmap within the button's rectangle.See alsoREMAP='BodyNoLead'TGadget::SetBoundsTButtonGadgetEnabler classMOREINFO="NONE"buttonga.cppREMAP='BodyNoLead'Derived from ROLE='italic'TCommandEnabler, TButtonGadgetEnabler serves as a command enabler for button gadgets. The functions in this class modify the text, check state, and appearance of a button gadget.Public constructorConstructorFORMAT="LINESPECIFIC"TButtonGadgetEnabler(HWND hWndReceiver, TButtonGadget* g)REMAP='BodyNoLead'Constructs a ROLE='italic'TButtonGadgetEnabler for the specified gadget.ROLE='italic' hWndReceiver is the window receiving the message.Protected data membergadgetFORMAT="LINESPECIFIC"TButtonGadget* gadget;REMAP='BodyNoLead'The button gadget being enabled or disabled.Public member functionsEnableFORMAT="LINESPECIFIC"void Enable(bool enable);REMAP='BodyNoLead'Overrides ROLE='italic'TCommandEnable::Enable. Enables or disables the keyboard, mouse input and appearance of the corresponding button gadget.SetCheckFORMAT="LINESPECIFIC"void SetCheck(int state)REMAP='BodyNoLead'Overrides ROLE='italic'TCommandEnable::SetCheck. Changes the check state of the corresponding button gadget.SetTextFORMAT="LINESPECIFIC"void SetText(const char far*)REMAP='BodyNoLead'Overrides ROLE='italic'TCommandEnable::SetText. Changes the text of the corresponding button gadget.TCelArray classMOREINFO="NONE"celarray.hREMAP='BodyNoLead'ROLE='italic'TCelArray is a horizontal array of cels (a unit of animation) created by slicing a portion of or an entire bitmap into evenly sized shapes. Gadgets such as buttons can use a ROLE='italic'TCelArray to save resource space. ROLE='italic'TCelArray's functions let you control the dimensions of each cel and determine if the cel can delete the bitmap.Public constructors and destructorConstructorsFORMAT="LINESPECIFIC"TCelArray(TBitmap* bmp, int numCels, TSize celSize = 0, TPoint Offset = 0, TAutoDelete = AutoDelete);REMAP='BodyNoLead'Constructs a ROLE='italic'TCelArray from a bitmap by slicing the bitmap into a horizontal array of cels of a specified size. If ROLE='italic'autoDelete is ROLE='bold'true, ROLE='italic'TCelArray can automatically delete the bitmap. The ROLE='italic'ShouldDelete data member defaults to ROLE='bold'true, ensuring that the handle will be deleted when the bitmap is destroyed.FORMAT="LINESPECIFIC"TCelArray(TDib& dib, int numCels);REMAP='BodyNoLead'Constructs a ROLE='italic'TCelArray from a DIB (Device Independent Bitmap) by slicing the DIB into a horizontal array of evenly sized cels.FORMAT="LINESPECIFIC"TCelArray(const TCelArray& src);REMAP='BodyNoLead'Constructs a ROLE='italic'TCelArray as a copy of an existing one. If the original ROLE='italic'TCelArray owned its bitmap, the constructor copies this bitmap; otherwise, it keeps a reference to the bitmap.DestructorFORMAT="LINESPECIFIC"virtual ~TCelArray( );REMAP='BodyNoLead'If ROLE='italic'ShouldDelete is ROLE='bold'true (the default value), the bitmap is deleted. If ROLE='italic'ShouldDelete is ROLE='bold'false, no action is taken.Public member functionsCelSizeFORMAT="LINESPECIFIC"TSize CelSize( ) const;REMAP='BodyNoLead'Returns the size in pixels of each cell.CelOffsetFORMAT="LINESPECIFIC"TPoint CelOffset(int cels);REMAP='BodyNoLead'Returns the position of the upper left corner of a given cel relative to the upper left corner of the bitmap.CelRectFORMAT="LINESPECIFIC"TRect CelRect(int cel) const;REMAP='BodyNoLead'Returns the upper left and lower right corner of a given cell relative to the upper left corner of the bitmap.NumCelsFORMAT="LINESPECIFIC"int NumCels( ) const;REMAP='BodyNoLead'Returns the number of cels in the array.OffsetFORMAT="LINESPECIFIC"TPoint Offset( ) const;REMAP='BodyNoLead'Returns the offset of the entire ROLE='italic'CelArray.operator []FORMAT="LINESPECIFIC"TRect operator [](int cel) const;REMAP='BodyNoLead'Returns ROLE='italic'CelRect.operator =FORMAT="LINESPECIFIC"TCelArray& operator =(const TCelArray&);REMAP='BodyNoLead'Returns ROLE='italic'TCelArray.operator TBitmap&FORMAT="LINESPECIFIC"operator TBitmap&( );REMAP='BodyNoLead'Returns a reference to the bitmap.SetCelSizeFORMAT="LINESPECIFIC"void SetCelSize(TSize size);REMAP='BodyNoLead'Sets the size of each cel in the array.SetOffsetFORMAT="LINESPECIFIC"void SetOffset(TPoint offs);REMAP='BodyNoLead'Sets the offset for the cels in the array.SetNumCelsFORMAT="LINESPECIFIC"void SetNumCels(int numCels);REMAP='BodyNoLead'Sets the number of cels in the array.Protected data membersBitmapFORMAT="LINESPECIFIC"TBitmap* Bitmap;REMAP='BodyNoLead'Points to the bitmap.CSizeFORMAT="LINESPECIFIC"TSize CSize;REMAP='BodyNoLead'The size of a cell in the array.OffsFORMAT="LINESPECIFIC"TPoint Offs;REMAP='BodyNoLead'Holds the offset of the upper left corner of the cel array from the upper left corner of the bitmap.NCelsFORMAT="LINESPECIFIC"int NCels;REMAP='BodyNoLead'The number of cells in the cel array.ShouldDeleteFORMAT="LINESPECIFIC"bool ShouldDelete;REMAP='BodyNoLead'Is ROLE='bold'true if the destructor needs to delete the bitmap associated with the cel array. TCharSet classMOREINFO="NONE"bitset.hREMAP='BodyNoLead'Derived from ROLE='italic'TBitSet, TCharSet sets and clears bytes for a group of characters. You can use this class to set or clear bits in a group of characters, such as the capital letters from "A" through "Z" or the lowercase letters from "a" through "z." The class ROLE='italic'TBitSet performs similar operations for a group of bits.Public constructorsConstructorsFORMAT="LINESPECIFIC"TCharSet( );REMAP='BodyNoLead'Constructs a ROLE='italic'TCharSet object.FORMAT="LINESPECIFIC"TCharSet(const TCharSet&);REMAP='BodyNoLead'Copy constructor for a ROLE='italic'TCharSet object.FORMAT="LINESPECIFIC"TCharSet(const char far* str);REMAP='BodyNoLead'Constructs a string of characters.Public member functionoperator !=FORMAT="LINESPECIFIC"int operator !=(const TBitSet& bs1, const TBitSet& bs2);REMAP='BodyNoLead'ORs all of the bits in the copied string and returns a reference to the copied ROLE='italic'TCharSet object.TCheckBox classMOREINFO="NONE"checkbox.hREMAP='BodyNoLead'ROLE='italic'TCheckBox is a streamable interface class that represents a check box control. Use ROLE='italic'TCheckBox to create a check box control in a parent window. You can also use ROLE='italic'TCheckBox objects to more easily manipulate check boxes you created in a dialog box resource.REMAP='Body'Two-state check boxes can be ROLE='italic'checked or ROLE='italic'unchecked; three-state check boxes have an additional ROLE='italic'grayed state. ROLE='italic'TCheckBox member functions let you easily control the check box's state. A check box can be in a group box (a ROLE='italic'TGroupBox object) that groups related controls.Public data memberGroupFORMAT="LINESPECIFIC"TGroupBox* Group;REMAP='BodyNoLead'If the check box belongs to a group box (a ROLE='italic'TGroupBox object), ROLE='italic'Group points to that object. If the check box is not part of a group, ROLE='italic'Group is zero.See alsoREMAP='BodyNoLead'TGroupBox::TGroupBoxPublic constructorsConstructorsFORMAT="LINESPECIFIC"TCheckBox(TWindow* parent, int Id, const char far* title, int x, int y, int w, int h, TGroupBox* group = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs a check box object with the specified parent window (ROLE='italic'parent), control ID (ROLE='italic'Id), associated text (ROLE='italic'title), position relative to the origin of the parent window's client area (ROLE='italic'x, y), width (ROLE='italic'w), height (ROLE='italic'h), associated group box (ROLE='italic'group), and owning module (ROLE='italic'module). Invokes the ROLE='italic'TButton constructor with similar parameters. Sets the check box's style to WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_AUTOCHECKBOX.FORMAT="LINESPECIFIC"TCheckBox(TWindow* parent, int resourceId, TGroupBox* group = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs an associated ROLE='italic'TCheckBox object for the check box control with a resource ID of ROLE='italic'resourceId in the parent dialog boxSets ROLE='italic'Group to ROLE='italic'group then enables the data transfer mechanism by calling ROLE='italic'EnableTransfer.See alsoREMAP='BodyNoLead'TButton::TButton, TWindow::EnableTransferPublic member functionsCheckFORMAT="LINESPECIFIC"void Check( );REMAP='BodyNoLead'Forces the check box to be checked by calling ROLE='italic'SetCheck with the value of BF_CHECKED. Notifies the associated group box, if there is one, that the state was changed.See alsoREMAP='Body'TCheckBox::GetCheckTCheckBox_GetCheck, TCheckBox::ToggleTCheckBox_Toggle, TCheckBox::UncheckTCheckBox_Uncheck, TGroupBox::SelectionChangedTGroupBox_SelectionChangedGetCheckFORMAT="LINESPECIFIC"uint GetCheck( ) const;REMAP='BodyNoLead'Returns the state of the check box.TCheckBox check statesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Check box stateCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Return valueVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CheckedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BF_CHECKEDCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'UncheckedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BF_UNCHECKEDCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GrayedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BF_GRAYEDSee alsoREMAP='BodyNoLead'TCheckBox::SetCheckGetStateFORMAT="LINESPECIFIC"uint GetState( ) const;REMAP='BodyNoLead'Returns the check, focus, and highlight state of the check box.See alsoREMAP='BodyNoLead'TCheckBox::SetStateSetCheckFORMAT="LINESPECIFIC"void SetCheck(uint check);REMAP='BodyNoLead'Forces the check box into the state specified by ROLE='italic'check. See the table in ROLE='italic'GetCheck for possible values of ROLE='italic'check.See alsoREMAP='BodyNoLead'TCheckBox::GetCheckSetStateFORMAT="LINESPECIFIC"void SetState(uint state);REMAP='BodyNoLead'Sets the check, focus, and highlight state of the check box.See alsoREMAP='BodyNoLead'TCheckBox::GetStateSetStyleFORMAT="LINESPECIFIC"void SetStyle(uint style, bool redraw);REMAP='BodyNoLead'Changes the style of the check box.ToggleFORMAT="LINESPECIFIC"void Toggle( );REMAP='BodyNoLead'Toggles the check box between checked and unchecked if it is a two-state check box; toggles it between checked, unchecked, and gray if it is a three-state check box.See alsoREMAP='BodyNoLead'TCheckBox::SetCheckTransferFORMAT="LINESPECIFIC"uint Transfer(void* buffer, TTransferDirection direction);REMAP='BodyNoLead'Overrides ROLE='italic'TWindow::Transfer. Transfers the check state of the check box to or from ROLE='italic'buffer, using the values specified in the table in ROLE='italic'GetCheck. If ROLE='italic'direction is ROLE='italic'tdGetDate, the check box state is transferred into the buffer. If ROLE='italic'direction is ROLE='italic'tdSetData, the check box state is changed to the settings in the transfer ROLE='italic'buffer.REMAP='Body'ROLE='italic'Transfer returns the size of the transfer data in bytes. To get the size without actually transferring the check box, use ROLE='italic'tdSizeData as the ROLE='italic'direction argument.UncheckFORMAT="LINESPECIFIC"void Uncheck( );REMAP='BodyNoLead'Forces the check box to be unchecked by calling ROLE='italic'SetCheck with a value of BF_UNCHECKED. Notifies the associated group box, if there is one, that the state has changed.See alsoREMAP='BodyNoLead'TCheckBox::Check, TCheckBox::SetCheck, TCheckBox::ToggleProtected member functionsBNClickedFORMAT="LINESPECIFIC"void BNClicked( );REMAP='BodyNoLead'Responds to notification message BN_CLICKED, indicating that the user clicked the check box. If ROLE='italic'Group isn't 0, ROLE='italic'BNClicked calls the group box's ROLE='italic'SelectionChanged member function to notify the group box that the state has changed.See alsoREMAP='BodyNoLead'TGroupBox::SelectionChangedEvGetDlgCodeFORMAT="LINESPECIFIC"uint EvGetDlgCode(MSG far* msg);REMAP='BodyNoLead'Overrides ROLE='italic'TButton's response to the WM_GETDLGCODE message, an input procedure associated with a control that is not a check box, by calling ROLE='italic'DefaultProcessing. The ROLE='italic'msg parameter indicates the kind of message, for example a control, command, or check box message, sent to the dialog box manager.REMAP='Body'ROLE='italic'EvGetDlgCode returns a code that indicates how the check box is to be treated.See alsoREMAP='BodyNoLead'TButton::EvGetDlgCode, TWindow::DefaultProcessing, DLGC_xxxxdialogcontrolmessageconstantsGetClassNameFORMAT="LINESPECIFIC"char far* GetClassName( );REMAP='BodyNoLead'If BWCC is enabled, ROLE='italic'TCheckBox returns CHECK_CLASS. If BWCC is not enabled, returns "BUTTON."Response table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='216*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_NOTIFY_AT_CHILD (BN_CLICKED, BNClicked)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'BNClickedCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_GETDLGCODECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EVGetDlgCodeTChooseColorDialog classMOREINFO="NONE"chooseco.hREMAP='BodyNoLead'ROLE='italic'TChooseColorDialog objects represent modal dialog box interface elements that allow color selection and custom color adjustment. ROLE='italic'TChooseColorDialog can be made to appear modeless to the user by creating the dialog's parent as an invisible pop-up window and making the pop-up window a child of the main application window. ROLE='italic'TChooseColorDialog uses the ROLE='italic'TChooseColor::TData struct to initialize the dialog box with the user's color selection.Public constructorsConstructorFORMAT="LINESPECIFIC"TChooseColorDialog(TWindow* parent, TData& data, TResId templateID = 0, const char far* title = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs a dialog box with specified parent window, data, resource identifier, window caption, and module ID. Sets the attributes of the dialog box based on info in the ROLE='italic'TChooseColor::TData structure.See alsoREMAP='BodyNoLead'TChooseColorDialog::TDataPublic member functionSetRGBColorFORMAT="LINESPECIFIC"void SetRGBColor(TColor color);REMAP='BodyNoLead'Sets the current RGB color for the open dialog box by sending a ROLE='italic'SetRGBMsgId. You can use ROLE='italic'SetRGBColor to send a message to change the current color selection.Public data membersccFORMAT="LINESPECIFIC"CHOOSECOLOR cc;REMAP='BodyNoLead'Stores the length of the ROLE='italic'TChooseColorDialog structure, the window that owns the dialog box, and the data block that contains the dialog template. It also points to an array of 16 RGB values for the custom color boxes in the dialog box, and specifies the dialog-box initialization flags.See alsoREMAP='BodyNoLead'TChooseColorDialog::TDataDataFORMAT="LINESPECIFIC"TData& Data;REMAP='BodyNoLead'ROLE='italic'Data is a reference to the ROLE='italic'TData object passed in the constructor.See alsoREMAP='BodyNoLead'TChooseColorDialog::TDataSetRGBMsgIdFORMAT="LINESPECIFIC"static uint SetRGBMsgId;REMAP='BodyNoLead'Contains the ID of the registered message sent by ROLE='italic'SetRGBColor.Protected member functionsDialogFunctionFORMAT="LINESPECIFIC"bool DialogFunction(uint message, WPARAM, LPARAM);REMAP='BodyNoLead'Returns ROLE='bold'true if a message is handled.See alsoREMAP='BodyNoLead'TDialog::DialogFunctionDoExecuteFORMAT="LINESPECIFIC"int DoExecute( );REMAP='BodyNoLead'If no error occurs, ROLE='italic'DoExecute copies flags and colors into ROLE='italic'Data and returns zero. If an error occurs, ROLE='italic'DoExecute returns the IDCANCEL with ROLE='italic'Data.Error set to the value returned from ROLE='italic'CommDlgExtendedError.EvSetRGBColorFORMAT="LINESPECIFIC"LPARAM EvSetRGBColor(WPARAM, LPARAM);REMAP='BodyNoLead'Responds to the message sent by ROLE='italic'SetRGBColor by forwarding the to the original class. This event handler is not in the response table.Response table entriesREMAP='Body'The ROLE='italic'TChooseColorDialog response table has no entries.TChooseColorDialog::TData classMOREINFO="NONE"chooseco.hREMAP='BodyNoLead'Defines information necessary to initialize the dialog box with the user's color selection.Public data membersColorFORMAT="LINESPECIFIC"TColor Color;REMAP='BodyNoLead'Specifies the color that is initially selected when the dialog box is created. Contains the user's color selection when the dialog box is closed.CustColorsFORMAT="LINESPECIFIC"TColor* CustColors;REMAP='BodyNoLead'Points to an array of 16 colors.ErrorFORMAT="LINESPECIFIC"uint32 Error;REMAP='BodyNoLead'If the dialog box is successfully executed, ROLE='italic'Error is 0. Otherwise, it contains one of the following codes:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='144*'COLNAME='C2' COLWIDTH='144*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_DIALOGFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to create a dialog box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_FINDRESFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to find a specified resource.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_LOADRESFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to load a specified resource.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_LOCKRESOURCEFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to lock a specified resource.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_LOADSTRFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to load a specified string.FlagsFORMAT="LINESPECIFIC"uint32 Flags;REMAP='BodyNoLead'ROLE='italic'Flags can be a combination of the following values that control the appearance and functionality of the dialog box:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='114*'COLNAME='C2' COLWIDTH='259*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CC_FULLOPENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Causes the entire dialog box to appear when the dialog box is created.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CC_PREVENTFULLOPENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Disables the "Define Custom Colors" push button.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CC_RGBINITCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Causes the dialog box to use the color specified in ROLE='italic'rgbResult as the initial color selection.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CC_SHOWHELPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Causes the dialog box to show the Help push button.See alsoREMAP='BodyNoLead'TChooseColorDialog::DataTChooseFontDialog classMOREINFO="NONE"choosefo.hREMAP='BodyNoLead'A ROLE='italic'TChooseFontDialog represents modal dialog-box interface elements that create a system-defined dialog box from which the user can select a font, a font style (such as bold or italic), a point size, an effect (such as strikeout or underline), and a color. ROLE='italic'TChooseFontDialog can be made to appear modeless by creating the dialog's parent as an invisible pop-up window and making the pop-up window a child of the main application window. ROLE='italic'TChooseFontDialog uses the ROLE='italic'TChooseFontDialog::TData structure to initialize the dialog box with the user-selected font styles.Public constructorConstructorFORMAT="LINESPECIFIC"TChooseFontDialog(TWindow* parent, TData& data, TResID templateID = 0, const char far* title = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs a dialog box with specified data, parent window, resource identifier, window caption, and module ID. Sets the attributes of the dialog box based on the font information in the ROLE='italic'TChooseFontDialog::TData structure.See alsoREMAP='BodyNoLead'TChooseFontDialog::TDataProtected data memberscfFORMAT="LINESPECIFIC"CHOOSEFONT cf;REMAP='BodyNoLead'Contains font attributes. ROLE='italic'cf is initialized using fields in the ROLE='italic'TChooseFontDialog::ROLE='italic'TData structure. It stores the length of the structure, the window that owns the dialog box and the data block that contains the dialog template. It also specifies the dialog-box initialization flags.See alsoREMAP='BodyNoLead'TChooseFontDialog::TDataDataFORMAT="LINESPECIFIC"TData& Data;REMAP='BodyNoLead'ROLE='italic'Data is a reference to the ROLE='italic'TData object passed in the constructor.See alsoREMAP='BodyNoLead'TChooseFontDialog::TDataProtected member functionsCmFontApplyFORMAT="LINESPECIFIC"void CmFontApply( );REMAP='BodyNoLead'Default handler for the third pushbutton (the Apply button) in the dialog box.DialogFunctionFORMAT="LINESPECIFIC"bool DialogFunction(uint message, WPARAM, LPARAM);REMAP='BodyNoLead'Returns ROLE='bold'true if a dialog box message is handled.See alsoREMAP='BodyNoLead'TDialog::DialogFunctionDoExecuteFORMAT="LINESPECIFIC"int DoExecute( );REMAP='BodyNoLead'If no error occurs, ROLE='italic'DoExecute copies the flag values and font information into ROLE='italic'Ddata, and returns IDOK or IDCANCEL. If an error occurs, ROLE='italic'DoExecute returns an error code from ROLE='italic'TChooseFontDialog::TData structure's ROLE='italic'Error data member.See alsoREMAP='BodyNoLead'TChooseFontDialog::TDataResponse table entriesREMAP='Body'The ROLE='italic'TChooseFontDialog response table contains no entries.TChooseFontDialog::TData classMOREINFO="NONE"choosefo.hREMAP='Body'Defines information necessary to initialize the dialog box with the user's font selection.Public data membersColorFORMAT="LINESPECIFIC"TColor Color;REMAP='BodyNoLead'Indicates the font color that is initially selected when the dialog box is created; contains the user's font color selection when the dialog box is closed.DCFORMAT="LINESPECIFIC"HDC DC;REMAP='BodyNoLead'Handle to the device context from which fonts are obtained.ErrorFORMAT="LINESPECIFIC"uint32 Error;REMAP='BodyNoLead'If the dialog box is successfully executed, ROLE='italic'Error returns 0. Otherwise, it contains one of the following codes:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='144*'COLNAME='C2' COLWIDTH='231*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningROLE='BOLD' VALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_DIALOGFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to create a dialog box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_FINDRESFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to find a specified resource.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_LOCKRESOURCEFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to lock a specified resource.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_LOADRESFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to load a specified resource.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_LOADSTRFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to load a specified string.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CFERR_MAXLESSTHANMINCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The size specified in ROLE='italic'SizeMax is less than the size in ROLE='italic'SizeMin.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CFERR_NOFONTSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No fonts exist.FlagsFORMAT="LINESPECIFIC"uint32 Flags;REMAP='BodyNoLead'ROLE='italic'Flags can be a combination of the following constants that control the appearance and functionality of the dialog box:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='120*'COLNAME='C2' COLWIDTH='253*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_APPLYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Enables the display and use of the Apply button.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_ANSIONLYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies that the ROLE='italic'ChooseFontDialog structure allows only the selection of fonts that use the ANSI character set.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_BOTHCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Causes the dialog box to list both the available printer and screen fonts.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_EFFECTSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Enables strikeout, underline, and color effects.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_FIXEDPITCHONLYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Enables fixed-pitch fonts only.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_FORCEFONTEXISTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates an error if the user selects a nonexistent font or style.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_INITTOLOGFONTSTRUCTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Uses the ROLE='italic'LOGFONT structure at which ROLE='italic'LogFont points to initialize the dialog controls.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_LIMITSIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Limits font selection to those between ROLE='italic'SizeMin and ROLE='italic'SizeMax.ROLE='italic'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_NOSIMULATIONSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Does not allow GDI font simulations.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_PRINTERFONTSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Causes the dialog box to list only the fonts supported by the printer that is associated with the device context.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_SCALABLEONLYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Allows only the selection of scalable fonts.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_SCREENFONTSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Causes the dialog box to list only the system-supported screen fonts.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_SHOWHELPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Causes the dialog box to show the Help button.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_TTONLYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Enumerates and allows the selection of TrueType fonts only.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_USESTYLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies that ROLE='italic'Style points to a buffer containing the style attributes used to initialize the selection of font styles.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_WYSIWYGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Allows only the selection of fonts available on both the printer and the screen.FontTypeFORMAT="LINESPECIFIC"uint16 FontType;REMAP='BodyNoLead'Font type or name.LogFontFORMAT="LINESPECIFIC"LOGFONT LogFont;REMAP='BodyNoLead'Attributes of the font.PointSizeFORMAT="LINESPECIFIC"int PointSize;REMAP='BodyNoLead'Point size of the font.SizeMaxFORMAT="LINESPECIFIC"int SizeMax;REMAP='BodyNoLead'Maximum size of the font.SizeMinFORMAT="LINESPECIFIC"int SizeMin;REMAP='BodyNoLead'Minimum size of the font.See alsoREMAP='BodyNoLead'TChooseFontDialog::DataStyleFORMAT="LINESPECIFIC"char far* Style;REMAP='BodyNoLead'Style of the font such as bold, italic, underline, or strikeout.TClientDC ClassMOREINFO="NONE"dc.hREMAP='BodyNoLead'A DC class derived from ROLE='italic'TWindowDC, TClientDC provides access to the client area owned by a window.See alsoREMAP='BodyNoLead'TOleClientDCPublic constructorsConstructorFORMAT="LINESPECIFIC"TClientDC(HWND wnd);REMAP='BodyNoLead'Creates a ROLE='italic'TClientDC object with the given owned window. The data member ROLE='italic'Wnd is set to ROLE='italic'wnd.See alsoREMAP='BodyNoLead'TWindowDC::Wnd, TDC::TDCTClipboard classMOREINFO="NONE"clipboar.hREMAP='BodyNoLead'ROLE='italic'TClipboard encapsulates and manipulates clipboard data. You can open, close, empty, and paste data in a variety of data formats between the Clipboard and the open window. An object on the clipboard can exist in a variety of clipboard formats, which range from bitmaps to text. REMAP='Body'Usually, the window is in charge of manipulating clipboard interactions between the window and the clipboard. It does this by responding to messages sent between the clipboard owner and the application. The following ObjectWindows event-handling functions encapsulate these clipboard messages:REMAP='Body'ROLE='italic'EvRenderFormatname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'Responds to a WM_RENDERFORMAT message sent to the clipboard owner if a specific clipboard format that an application has requested hasn't been rendered. After the clipboard owner renders the data in the requested format, it calls ROLE='italic'SetClipboardData to place the data on the clipboard.REMAP='Body'ROLE='italic'EvRenderAllFormatsname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'Responds to a message sent to the clipboard owner if the clipboard owner has delayed rendering a clipboard format. After the clipboard owner renders data in all of possible formats, it calls ROLE='italic'SetClipboardData.REMAP='Body'The following example tests to see if there is a palette on the clipboard. If one exists, ROLE='italic'TClipboard retrieves the palette, realizes it, and then closes the clipboard.FORMAT="LINESPECIFIC" if (clipboard.IsClipboardFormatAvailable(CF_PALETTE)) {
newPal = new TPalette(TPalette(clipboard)); // make a copy
UpdatePalette(true);
}
// TryDIB format first.
if (clipboard.IsClipboardFormatAvailable(CF_DIB)) {
newDib = new TDib(TDib(clipboard)); // make a copy
newBitmap = new TBitmap(*newDib, newPal); // newPal==0 is OK
// try metafile 2nd
//
} else if (clipboard.IsClipboardFormatAvailable(CF_METAFILEPICT)) {
if (!newPal)
newPal = new TPalette((HPALETTE)GetStockObject(DEFAULT_PALETTE));
newBitmap = new TBitmap(TMetaFilePict(clipboard), *newPal,
GetClientRect( ).Size( ));
:
// Gets a bitmap , keeps it, and sets up data on the clipboard.
//
delete Bitmap;
Bitmap = newBitmap;
if (!newDib)
newDib = new TDib(*newBitmap, newPal);
#endif
delete Dib;
Dib = newDib;
delete Palette;
Palette = newPal ? newPal : new TPalette(*newDib);
Palette->GetObject(Colors);
PixelWidth = Dib->Width( );
PixelHeight = Dib->Height( );
AdjustScroller( );
SetCaption("(Clipboard)");
clipboard.CloseClipboard( );Public destructorDestructorFORMAT="LINESPECIFIC"~TClipboard( );REMAP='BodyNoLead'Destroys the ROLE='italic'TClipboard object.Public data membersDefaultProtocolFORMAT="LINESPECIFIC"static const char* DefaultProtocol;REMAP='BodyNoLead'Points to a string that specifies the name of the protocol the client needs. The default protocol is "StdFileEditing," which is the name of the object linking and embedding protocol.See alsoREMAP='BodyNoLead'TClipboard::QueryCreatePublic member functionsCloseClipboardFORMAT="LINESPECIFIC"void CloseClipboard( )REMAP='BodyNoLead'If the Clipboard is closed (ROLE='italic'IsOpen is false), closes the Clipboard. Closing the Clipboard allows other applications to access the Clipboard.See alsoREMAP='BodyNoLead'TClipboard::OpenClipboardCountClipboardFormatsFORMAT="LINESPECIFIC"int CountClipboardFormats( ) const;REMAP='BodyNoLead'Returns a count of the number of types of data formats the Clipboard can use.See alsoREMAP='BodyNoLead'TClipboard::RegisterClipboardFormatEmptyClipboardFORMAT="LINESPECIFIC"bool EmptyClipboard( );REMAP='BodyNoLead'Clears the Clipboard and frees any handles to the Clipboard's data. Returns true if the Clipboard is empty, or false if an error occurs.GetClipboardFORMAT="LINESPECIFIC"static TClipboard& GetClipboard( )REMAP='BodyNoLead'Returns a reference to the ROLE='italic'TClipboard object.GetClipboardDataFORMAT="LINESPECIFIC"HANDLE GetClipboardData(uint format) const;REMAP='BodyNoLead'Retrieves data from the Clipboard in the format specified by ROLE='italic'format. The following formats are supported:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='102*'COLNAME='C2' COLWIDTH='216*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_BITMAPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data is in a bitmap format.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_DIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data is memory. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_DIFCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data is in a Data Interchange Format (DIF).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_DSPMETAFILEPICTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data is in a metafile format.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_DSPTEXTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data is in a text format.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_METAFILEPICTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data is in a metafile structure.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_OEMTEXTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data is an array of text characters in OEM character set.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_OWNERDISPLATCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data is in a special format that the application must display.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_PALETTECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data is in a color palette format.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_PENDATACOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data is used for pen format.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_RIFFCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data is in Resource Interchange File Format (RIFF).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_SYLKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data is in symbolic Link format (SYLK).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_TEXTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data is stored as an array of text characters.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_TIFFCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data is in Tag Image File Format (TIFF).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CF_WAVECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data is in a sound wave format.See alsoREMAP='BodyNoLead'TClipboard::SetClipboardDataGetClipboardFormatNameFORMAT="LINESPECIFIC"int GetClipboardFormatName(uint format, char far* formatName, int maxCount) const;REMAP='BodyNoLead'Retrieves the name of the registered format specified by ROLE='italic'format and copies the format to the buffer pointed to by ROLE='italic'formatName. ROLE='italic'maxCount specifies the maximum length of the name of the format. If the name is longer than ROLE='italic'maxCount, it is truncated.See alsoREMAP='BodyNoLead'TClipboard::CountClipboardFormatsGetClipboardOwnerFORMAT="LINESPECIFIC"HWND GetClipboardOwner( ) const;REMAP='BodyNoLead'Retrieves the handle of the window that currently owns the Clipboard, otherwise returns NULL.GetClipboardViewerFORMAT="LINESPECIFIC"HWND GetClipboardViewer( ) const;REMAP='BodyNoLead'Retrieves the handle of the first window in the Clipboard-view chain. Returns NULL if there is no viewer.See alsoREMAP='BodyNoLead'TClipboard::SetClipboardViewerGetOpenClipboardWindowFORMAT="LINESPECIFIC"HWND GetOpenClipboardWindow( ) const;REMAP='BodyNoLead'Retrieves the handle of the window that currently has the Clipboard open. If the Clipboard is not open, the return value is false. Once the Clipboard is opened, applications cannot modify the data. GetPriorityClipboardFormatFORMAT="LINESPECIFIC"int GetPriorityClipboardFormat(uint FAR * priorityList, int count) const;REMAP='BodyNoLead'Returns the first Clipboard format in a list. ROLE='italic'priorityList points to an array that contains a list of the Clipboard formats arranged in order of priority. See ROLE='italic'GetClipboardData for the clipboard formats.See alsoREMAP='BodyNoLead'TClipboard::GetClipboardDataIsClipboardFormatAvailableFORMAT="LINESPECIFIC"bool IsClipboardFormatAvailable(uint format) const;REMAP='BodyNoLead'Indicates if the format specified in ROLE='italic'format exists for use in the Clipboard. See GetClipBoardData for a description of clipboard data formats. REMAP='Body'The following code tests if the clipboard can support the specified formats:FORMAT="LINESPECIFIC"void
TBmpViewWindow::CePaste(TCommandEnabler& ce)
{
TClipboard& clipboard = OpenClipboard( );
ce.Enable(
clipboard && (
clipboard.IsClipboardFormatAvailable(CF_METAFILEPICT) ||
clipboard.IsClipboardFormatAvailable(CF_DIB) ||
clipboard.IsClipboardFormatAvailable(CF_BITMAP)
)
);
clipboard.CloseClipboard( );See alsoREMAP='BodyNoLead'TClipboard::GetClipboardDataOpenClipboardFORMAT="LINESPECIFIC"HWND GetOpenClipboardWindow( ) const;REMAP='BodyNoLead'Retrieves the handle of the window that currently has the Clipboard open. If the Clipboard is not open, the return value is false. Once the Clipboard is opened, applications cannot modify the data. See alsoREMAP='BodyNoLead'TClipboard::CloseClipboardboolFORMAT="LINESPECIFIC"operator bool( ) const;REMAP='BodyNoLead'Checks handle. Should use ROLE='italic'IsOk instead.QueryCreateFORMAT="LINESPECIFIC"bool QueryCreate(const char far* protocol = DefaultProtocol, OLEOPT_RENDER renderopt = olerender_draw, OLECLIPFORMAT format = 0);REMAP='BodyNoLead'ROLE='italic'QueryCreate determines if the object on the Clipboard supports the specified protocol and rendering options. ROLE='italic'DefaultProtocol points to a string specifying the name of the protocol the client application needs to use. ROLE='italic'renderopt specifies the client application's display and printing preference for the Clipboard object. ROLE='italic'renderopt is set to ROLE='italic'olerender_draw, which tells the client library to obtain and manage the data presentation. ROLE='italic'format specifies the Clipboard format the client application requests. The macros _OLE_H or _INC_OLE must be defined before this function can be used.See alsoREMAP='BodyNoLead'TClipboard::QueryLinkQueryLinkFORMAT="LINESPECIFIC"bool QueryLink(const char far* protocol = DefaultProtocol, OLEOPT_RENDER renderopt = olerender_draw, OLECLIPFORMAT format = 0);REMAP='BodyNoLead'ROLE='italic'QueryLink determines if a client application can use the Clipboard data to produce a linked object that uses the specified protocol and rendering options. See ROLE='italic'TClipboard::QueryCreate for a description of the parameters. The macros _OLE_H or _INC_OLE must be defined before this function can be used.See alsoREMAP='BodyNoLead'TClipboard::QueryCreateRegisterClipboardFormatFORMAT="LINESPECIFIC"uint RegisterClipboardFormat(const char far* formatName) const;REMAP='BodyNoLead'Registers a new Clipboard format. ROLE='italic'formatName points to a character string that identifies the new format. If the format can be registered, the return value indicates the registered format. If the format can't be registered, the return value is 0. Once the format is registered, it can be used as a valid format in which to render the data.See alsoREMAP='BodyNoLead'TClipboard::CountClipboardFormats, TClipboard::GetClipboardFormatNameSetClipboardDataFORMAT="LINESPECIFIC"HANDLE SetClipboardData(uint format, HANDLE handle);REMAP='BodyNoLead'Sets a handle to the block of data at the location indicated by ROLE='italic'handle. format specifies the format of the data block. The clipboard must have been opened before the data handle is set. format can be any one of the valid clipboard formats (for example, CF_BITMAP or CF_DIB). See ROLE='italic'GetClipboardData for a list of these formats. handle is a handle to the memory location where the data data is stored. If successful, the return value is a handle to the data; if an error occurs, the return value is 0. Before the window is updated with the clipboard data, the clipboard must be closed.See alsoREMAP='BodyNoLead'TClipboard::GetClipboardDataSetClipboardViewerFORMAT="LINESPECIFIC"HWND SetClipboardViewer(HWND Wnd) const;REMAP='BodyNoLead'Adds the window specified by ROLE='italic'Wnd to the chain of windows that WM_DRAWCLIPBOARD notifies whenever the contents of the Clipboard change.See alsoREMAP='BodyNoLead'TClipboard::GetClipboardViewerProtected data membersIsOpenFORMAT="LINESPECIFIC"bool IsOpen;REMAP='BodyNoLead'Returns true if the Clipboard is open.TheClipboardFORMAT="LINESPECIFIC"static TClipboard TheClipboard;REMAP='BodyNoLead'Holds the current clipboard.Protected constructorProtected constructorFORMAT="LINESPECIFIC"TClipboard( );REMAP='BodyNoLead'Constructs a ROLE='italic'TClipboard object.TClipboardViewer ClassMOREINFO="NONE"clipview.hREMAP='BodyNoLead'ROLE='italic'TClipboardViewer is a mix-in class that registers a ROLE='italic'TClipboardViewer as a Clipboard viewer when the user interface element is created, and removes itself from the Clipboard-viewer chain when it is destroyed.Protected data memberHWndNextFORMAT="LINESPECIFIC"HWND HWndNext;REMAP='BodyNoLead'Specifies the next window in the Clipboard-viewer chain.Protected constructorsConstructorsFORMAT="LINESPECIFIC"TClipboardViewer( );REMAP='BodyNoLead'Constructs a ROLE='italic'TClipboardViewer object.FORMAT="LINESPECIFIC"TClipboardViewer(HWND hWnd, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TClipboardViewer object with a handle (ROLE='italic'hWnd) to the windows that will receive notification when the Clipboard's contents are changed.Protected member functionsDoChangeCBChainFORMAT="LINESPECIFIC"TEventStatus DoChangeCBChain(HWND hWndRemoved, HWND hWndNext);REMAP='BodyNoLead'Tests to see if the Clipboard has changed and, if so, ROLE='italic'DoChangeCBChain forwards this message.DoDestroyFORMAT="LINESPECIFIC"TEventStatus DoDestroy( );REMAP='BodyNoLead'Removes the window from the Clipboard-viewer chain.DoDrawClipboardFORMAT="LINESPECIFIC"TEventStatus DoDrawClipboard( );REMAP='BodyNoLead'Handles ROLE='italic'EvDrawClipboard messages.EvChangeCBChainFORMAT="LINESPECIFIC"void EvChangeCBChain(HWND hWndRemoved, HWND hWndNext);REMAP='BodyNoLead'Responds to a WM_CHANGECBCHAIN message. ROLE='italic'hWndRemoved is a handle to the window that's being removed. ROLE='italic'hWndNext is the window following the removed window.EvDestroyFORMAT="LINESPECIFIC"void EvDestroy( );REMAP='BodyNoLead'Responds to a WM_DESTROY message when a window is removed from the Clipboard-viewer chain.EvDrawClipboardFORMAT="LINESPECIFIC"void EvDrawClipboard( );REMAP='BodyNoLead'Responds to a WM_DRAWCLIPBOARD message sent to the window in the Clipboard-viewer chain when the contents of the Clipboard change.SetupWindowFORMAT="LINESPECIFIC"void SetupWindow( );REMAP='BodyNoLead'Adds a window to the Clipboard-viewer chain.See alsoREMAP='BodyNoLead'TWindow::SetupWindowResponse table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='120*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functioVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CHANGECBCHAINCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvChangeCbChainCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_DESTROYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvDestroyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_DRAWCLIPBOARDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvDrawClipBoardTColor ClassMOREINFO="NONE"color.hREMAP='BodyNoLead'ROLE='italic'TColor is a support class used in conjunction with the classes ROLE='italic'TPalette, ROLE='italic'TPaletteEntry, ROLE='italic'TRgbQuad, and TRgbTriple to simplify all color operations. ROLE='italic'TColor has ten static data members representing the standard RGB COLORREF values, from ROLE='italic'Black to ROLE='italic'White. Constructors are provided to create ROLE='italic'TColor objects from COLORREF and RGB values, palette indexes, palette entries, and RGBQUAD and RGBTRIPLE values. REMAP='Body'See the entries for ROLE='italic'NBits and ROLE='italic'NColors for a description of ROLE='italic'TColor-related functions.Public constructorsConstructorsFORMAT="LINESPECIFIC"TColor( );REMAP='BodyNoLead'The default constructor sets ROLE='italic'Value to 0.FORMAT="LINESPECIFIC"TColor(COLORREF value);REMAP='BodyNoLead'Creates a ROLE='italic'TColor object with ROLE='italic'Value set to the given value.FORMAT="LINESPECIFIC"TColor(long value);REMAP='BodyNoLead'Creates a ROLE='italic'TColor object with ROLE='italic'Value set to the value defined in COLORREF.FORMAT="LINESPECIFIC"TColor(int r, int g, int b);REMAP='BodyNoLead'Creates a TColor object with Value set to RGB(r,g,b).FORMAT="LINESPECIFIC"TColor(int r, int g, int b, int f);REMAP='BodyNoLead'Creates a ROLE='italic'TColor object with ROLE='italic'Value set to RGB(ROLE='italic'r,g,b) with the flag byte formed from f.FORMAT="LINESPECIFIC"TColor(int index);REMAP='BodyNoLead'Creates a ROLE='italic'TColor object with ROLE='italic'Value set to PALETTEINDEX(ROLE='italic'index).FORMAT="LINESPECIFIC"TColor(const PALETTEENTRY far& pe);REMAP='BodyNoLead'Creates a ROLE='italic'TColor object with ROLE='italic'Value set toFORMAT="LINESPECIFIC"RGB(pe.peRed, pe.peGreen, pe.peBlue)FORMAT="LINESPECIFIC"Color(const RGBQUAD far& q);REMAP='BodyNoLead'Creates a ROLE='italic'TColor object with ROLE='italic'Value set toFORMAT="LINESPECIFIC"RGB(q.rgbRed, q.rgbGreen, q.rgbBlue)FORMAT="LINESPECIFIC"TColor(const RGBTRIPLE far& t);REMAP='BodyNoLead'Creates a ROLE='italic'TColor object with ROLE='italic'Value set toFORMAT="LINESPECIFIC"RGB(t.rgbtRed, t.rgbtGreen, t.rgbtBlue)See alsoREMAP='Body'COLORREF typedef, PALETTEENTRY struct, RGBQUAD struct, RGBTRIPLE struct, TColor::ValuePublic data membersBlackFORMAT="LINESPECIFIC"static const TColor Black;REMAP='BodyNoLead'The static TColor object with fixed ROLE='italic'Value set by RGB(0, 0, 0).GrayFORMAT="LINESPECIFIC"static const TColor Gray;REMAP='BodyNoLead'Contains the static ROLE='italic'TColor object with fixed ROLE='italic'Value set by RGB(128, 128, 128).LtBlueFORMAT="LINESPECIFIC"static const TColor LtBlue;REMAP='BodyNoLead'Contains the static ROLE='italic'TColor object with the fixed ROLE='italic'Value set by RGB(0, 0, 255).LtCyanFORMAT="LINESPECIFIC"static const TColor LtCyan;REMAP='BodyNoLead'Contains the static ROLE='italic'TColor object with the fixed ROLE='italic'Value set by RGB(0, 255, 255).LtGrayFORMAT="LINESPECIFIC"static const TColor LtGray;REMAP='BodyNoLead'Contains the static ROLE='italic'TColor object with the fixed ROLE='italic'Value set by RGB(192, 192, 192).LtGreenFORMAT="LINESPECIFIC"static const TColor LtGreen;REMAP='BodyNoLead'Contains the static ROLE='italic'TColor object with the fixed ROLE='italic'Value set by RGB(0, 255, 0).LtMagentaFORMAT="LINESPECIFIC"static const TColor LtMagenta;REMAP='BodyNoLead'Contains the static ROLE='italic'TColor object with the fixed ROLE='italic'Value set by RGB(255, 0, 255).LtRedFORMAT="LINESPECIFIC"static const TColor LtRed;REMAP='BodyNoLead'Contains the static ROLE='italic'TColor object with the fixed ROLE='italic'Value set by RGB(255, 0, 0).LtYellowFORMAT="LINESPECIFIC"static const TColor LtYellow;REMAP='BodyNoLead'Contains the static ROLE='italic'TColor object with the fixed ROLE='italic'Value set by RGB(255, 255, 0).WhiteFORMAT="LINESPECIFIC"static const TColor White;REMAP='BodyNoLead'Contains the static ROLE='italic'TColor object with the fixed ROLE='italic'Value set by RGB(255, 255, 255).Public member functionsBlueFORMAT="LINESPECIFIC"uint8 Blue( ) const;REMAP='BodyNoLead'Returns the blue component of this color's ROLE='italic'Value.See alsoREMAP='BodyNoLead'TColor::Red, TColor::Green, COLORREF typedefFlagsFORMAT="LINESPECIFIC"uint8 Flags( ) const;REMAP='BodyNoLead'Returns the ROLE='italic'peFlags value of this object's ROLE='italic'Value.See alsoREMAP='BodyNoLead'TPaletteEntryGetSysColorFORMAT="LINESPECIFIC"static TColor GetSysColor(int uiElement);REMAP='BodyNoLead'(Presentation Manager only) Returns the color of the given ROLE='italic'uiElement.GreenFORMAT="LINESPECIFIC"uint8 Green( ) const;REMAP='BodyNoLead'Returns the green component of this color's ROLE='italic'Value.See alsoREMAP='BodyNoLead'TColor::Red, TColor::Blue, COLORREF typedefoperator ==FORMAT="LINESPECIFIC"bool operator ==(const TColor& clrVal);REMAP='BodyNoLead'Returns true if this color's ROLE='italic'Value equals ROLE='italic'clrValue; otherwise returns false.See alsoREMAP='BodyNoLead'TColor::Valueoperator COLORREF( )FORMAT="LINESPECIFIC"operator COLORREF( ) const;REMAP='BodyNoLead'Type-conversion operator that returns ROLE='italic'Value.See alsoREMAP='BodyNoLead'TColor::ValueIndexFORMAT="LINESPECIFIC"int Index( ) const;REMAP='BodyNoLead'Returns the index value corresponding to this color's ROLE='italic'Value by masking out the two upper bytes. Used when color is a palette index value.See alsoREMAP='BodyNoLead'TColor::Value, COLORREF typedefPalIndexFORMAT="LINESPECIFIC"TColor PalIndex( ) const;REMAP='BodyNoLead'Returns the palette index corresponding to this color's ROLE='italic'Value. The returned color has the high-order byte set to 1.See alsoREMAP='BodyNoLead'TColor::Value, TColor::Index, COLORREF typedefPalRelativeFORMAT="LINESPECIFIC"TColor PalRelative( ) const;REMAP='BodyNoLead'Returns the palette-relative RGB corresponding to this color's ROLE='italic'Value. The returned color has the high-order byte set to 2.See alsoREMAP='BodyNoLead'TColor::Value, TColor::Rgb, COLORREF typedefRedFORMAT="LINESPECIFIC"uint8 Red( ) const;REMAP='BodyNoLead'Returns the red component of this color's ROLE='italic'Value.See alsoREMAP='BodyNoLead'TColor::Blue, TColor::GreenRgbFORMAT="LINESPECIFIC"TColor Rgb( ) const;REMAP='BodyNoLead'Returns the explicit RGB color corresponding to this color's ROLE='italic'Value by masking out the high-order byte.See alsoREMAP='BodyNoLead'TColor::Value, COLORREF typedefSetSysColorsFORMAT="LINESPECIFIC"static bool SetSysColors(unsigned nelems, const int uiElementIndices[], const TColor colors[ ]);REMAP='BodyNoLead'(Presentation Manager only) Sets groups of UI element colors. ROLE='italic'nelems indicates the number of element colors to change (and the size of the array parameters, ROLE='italic'uiElementIndices indicates which elements to change, and ROLE='italic'colors indicates what color to change the corresponding element to. Returns ROLE='bold'true if successful.Protected data memberValueFORMAT="LINESPECIFIC"COLORREF Value;REMAP='BodyNoLead'The color value of this ROLE='italic'TColor object. ROLE='italic'Value can have three different forms, depending on the application:MARK='bullet'REMAP='Bullet1'Explicit values for RGB (red, green, blue)REMAP='Bullet1'An index into a logical color paletteREMAP='Bullet1'A palette-relative RGB valueSee alsoREMAP='BodyNoLead'COLORREF typedefTComboBox classMOREINFO="NONE"combobox.hREMAP='BodyNoLead'You can use ROLE='italic'TComboBox to create a combo box or a combo box control in a parent ROLE='italic'TWindow, or to facilitate communication between your application and the combo box controls of ROLE='italic'TDialog. TComboBox objects inherit most of their behavior from ROLE='italic'TListBox. This class is streamable.REMAP='Body'There are three types of combo boxes: simple, drop down, and drop down list. These types are governed by the style constants CBS_SIMPLE, CBS_DROPDOWN, and CBS_DROPDOWNLIST. These constants, supplied to the constructor of a ROLE='italic'TComboBox, indicate the type of combo box element to create.Public constructorsConstructorsFORMAT="LINESPECIFIC"FORMAT="LINESPECIFIC"TComboBox(TWindow* parent, int id, int x, int y, int w, int h, uint32 style, uint textLen, TModule* module = 0);REMAP='BodyNoLead'Constructs a combo box object with the specified parent window (ROLE='italic'parent), control ID (ROLE='italic'Id), position (ROLE='italic'x, y) relative to the origin of the parent window's client area, width (ROLE='italic'w), height (ROLE='italic'h), style (ROLE='italic'style), and text length (ROLE='italic'textLen).REMAP='Body'Invokes the ROLE='italic'TListBox constructor with similar parameters. Then sets ROLE='italic'Attr.Style as follows:FORMAT="LINESPECIFIC"Attr.Style = WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP | CBS_SORT | CBS_AUTOHSCROLL | WS_VSCROLL | style;REMAP='Body'One of the following combo box style constants must be among the styles set in ROLE='italic'style: CBS_SIMPLE, CBS_DROPDOWN, CBS_DROPDOWNLIST, CBS_OWNERDRAWFIXED, or CBS_OWNERDRAWVARIABLE.FORMAT="LINESPECIFIC"TComboBox(TWindow* parent, int ResourceId, uint textLen = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs a default combo box with the given parent window control ID text length.See alsoREMAP='BodyNoLead'TComboBox::GetTextLen, TListBox::TListBoxPublic data memberTextLenFORMAT="LINESPECIFIC"uint TextLen;REMAP='BodyNoLead'Contains the length of the text in the combo box's associated edit control.Public member functionsAddStringFORMAT="LINESPECIFIC"virtual int AddString(const char far* string);REMAP='BodyNoLead'Adds a string to an associated list part of a combo box. Returns the index of the string in the list. The first entry is at index zero. Returns a negative value if an error occurs.ClearFORMAT="LINESPECIFIC"void Clear( );REMAP='BodyNoLead'Clears the text of the associated edit control.ClearListFORMAT="LINESPECIFIC"virtual void ClearList( );REMAP='BodyNoLead'Clears out all associated entries in the associated list.DeleteStringFORMAT="LINESPECIFIC"virtual int DeleteString(int index);REMAP='BodyNoLead'Deletes the string at the passed index in the associated list part of a combo box. Returns a count of the entries remaining in the list or a negative value if an error occurs.DirectoryListFORMAT="LINESPECIFIC"virtual int DirectoryList(uint attrs, const char far* fileSpec);REMAP='BodyNoLead'Fills the combo box with file names from a specified directory.FindStringFORMAT="LINESPECIFIC"virtual int FindString(const char far* find, int indexStart) const;REMAP='BodyNoLead'Searches for a match beginning at the passed Index. If a match is not found after the last string has been compared, the search continues from the beginning of the list until a match is found or until the list has been completely traversed. Returns the index of the first string in the associated list part of a combo box or a negative value if an error occurs.GetCountFORMAT="LINESPECIFIC"virtual int GetCount( ) const;REMAP='BodyNoLead'Returns the number of entries in the associated list part of the combo box or a negative value if an error occurs.GetDroppedControlRectFORMAT="LINESPECIFIC"void GetDroppedControlRect(TRect& Rect) const;REMAP='BodyNoLead'For combo boxes, gets the screen coordinates of the dropped down list box.GetDroppedStateFORMAT="LINESPECIFIC"bool GetDroppedState( ) const;REMAP='BodyNoLead'For drop down combo boxes, determines if a list box is visible.GetEditSelFORMAT="LINESPECIFIC"int GetEditSel(int &startPos, int &endPos);REMAP='BodyNoLead'Returns the starting and ending positions of the text selected in the associated edit control. Returns CB_ERR if the combo box has no edit control.GetExtendedUIFORMAT="LINESPECIFIC"bool GetExtendedUI( ) const;REMAP='BodyNoLead'Determines if the combo box has the extended user interface, which differs from the default user interface in the following ways:MARK='bullet'REMAP='Bullet1'Displays the list box if the user clicks the static text field.REMAP='Bullet1'Displays the list box if the user presses the ROLE='italic'Down key.REMAP='Bullet1'Disables scrolling in the static text field if the item list is not visible.REMAP='Body'Returns ROLE='bold'true if the combo box has the extended user interface; otherwise returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TComboBox::SetExtendedUIGetItemDataFORMAT="LINESPECIFIC"virtual uint32 GetItemData(int index) const;REMAP='BodyNoLead'Returns the 32-bit value associated with the combo box's item.See alsoREMAP='BodyNoLead'TListBox::GetItemDataGetItemHeightFORMAT="LINESPECIFIC"int GetItemHeight(int index) const;REMAP='BodyNoLead'Returns the height in pixels of the combo box's list items. If an error occurs, returns a negative value.See alsoREMAP='BodyNoLead'TComboBox::GetItemData, TListBox::GetItemDataGetSelIndexFORMAT="LINESPECIFIC"virtual int GetSelIndex( ) const;REMAP='BodyNoLead'Returns the index of the list selection or a negative value if none exists.GetStringFORMAT="LINESPECIFIC"virtual int GetString(char far* str, int index) const;REMAP='BodyNoLead'Retrieves the contents of the string at the position supplied in ROLE='italic'index and returns it in ROLE='italic'string. GetString returns the string length or a negative value if an error occurs. The buffer must be large enough for the string and the terminating zero.See alsoREMAP='BodyNoLead'TListBox::GetStringGetStringLenFORMAT="LINESPECIFIC"virtual int GetStringLen(int index) const;REMAP='BodyNoLead'Returns the string length (excluding the terminating zero) of the item at the position index supplied in ROLE='italic'index. Returns a negative value if an error occurs.See alsoREMAP='BodyNoLead'TListBox::GetStringLenGetTextFORMAT="LINESPECIFIC"int GetText(char far* str, int maxChars) const;REMAP='BodyNoLead'Retrieves the number of characters in the edit or static portion of the combo box.GetTextLenFORMAT="LINESPECIFIC"int GetTextLen( ) const;REMAP='BodyNoLead'Returns the text length (excluding the terminating zero) of the edit control or static portion of the combo box.HideListFORMAT="LINESPECIFIC"void HideList( );REMAP='BodyNoLead'Hides the drop down list of a drop down or drop down list combo box.InsertStringFORMAT="LINESPECIFIC"virtual int InsertString(const char far* str, int index);REMAP='BodyNoLead'Inserts a string in the associated list part of a combo box at the position supplied in ROLE='italic'Index. Returns the index of the string in the list or a negative value if an error occurs.See alsoREMAP='BodyNoLead'TListBox::InsertStringSetEditSelFORMAT="LINESPECIFIC"int SetEditSel(int startPos, int endPos);REMAP='BodyNoLead'Selects characters that are between ROLE='italic'startPos and ROLE='italic'endPos in the edit control of the combo box. Returns CB_ERR if the combo box does not have an edit control.SetExtendedUIFORMAT="LINESPECIFIC"int SetExtendedUI(bool extended);REMAP='BodyNoLead'If the combo box has the extended user interface, sets the extended user interface.See alsoREMAP='BodyNoLead'TComboBox::GetExtendedUISetItemDataFORMAT="LINESPECIFIC"virtual int SetItemData(int index, uint32 data);REMAP='BodyNoLead'Sets the 32-bit value associated with the ROLE='italic'TComboBox's item. If an error occurs, returns a negative value.SetItemHeightFORMAT="LINESPECIFIC"int SetItemHeight(int index, int height);REMAP='BodyNoLead'Sets the height of the list items or the edit control portion in a combo box. If the index or height is invalid, returns a negative value.See alsoREMAP='BodyNoLead'TComboBox::GetItemHeightSetSelIndexFORMAT="LINESPECIFIC"virtual int SetSelIndex(int index);REMAP='BodyNoLead'Selects a string of characters in a combo box. ROLE='italic'index specifies the index of the string of characters in the list box to select. If the index is 0, the first line in the list box is selected. If the index is -1, the current selection is removed. If an error occurs, a negative value is returned.See alsoREMAP='BodyNoLead'TComboBox::GetSelIndexSetSelStringFORMAT="LINESPECIFIC"virtual int SetSelString(const char far* findStr, int indexStart);REMAP='BodyNoLead'Selects a string of characters in the associated list box and sets the contents of the associated edit control to the supplied string.SetTextFORMAT="LINESPECIFIC"void SetText(const char far* string);REMAP='BodyNoLead'Selects the first string in the associated list box that begins with the supplied ROLE='italic'string. If there is no match, ROLE='italic'SetText sets the contents of the associated edit control to the supplied string and selects it.ShowListFORMAT="LINESPECIFIC"void ShowList( );REMAP='BodyNoLead'Shows the list of a drop down or drop down list combo box.FORMAT="LINESPECIFIC"void ShowList(bool show);REMAP='BodyNoLead'Shows or hides the drop down or drop down list combo box depending on the value of show. If show is ROLE='bold'true, shows the list; if show is ROLE='bold'false, hides the list.See alsoREMAP='BodyNoLead'TComboBox::HideListTransferFORMAT="LINESPECIFIC"uint Transfer(void* buffer, TTransferDirection direction);REMAP='BodyNoLead'Transfers the items and selection of the combo box to or from a transfer buffer if ROLE='italic'tdSetData or ROLE='italic'tdGetData, respectively, is passed as the ROLE='italic'direction. ROLE='italic'buffer is expected to point to a ROLE='italic'TComboBoxData structure.REMAP='Body'ROLE='italic'Transfer returns the size of a pointer to a ROLE='italic'TComboBoxData. To retrieve the size without transferring data, your application must pass tdSizeData as the direction.REMAP='Body'You must use a pointer in your transfer buffer to these structures. You cannot embed copies of the structures in your transfer buffer, and you cannot use these structures as transfer buffers.See alsoREMAP='BodyNoLead'TComboBoxData, TWindow::Transfer, Window::SetupWindowProtected member functionsGetClassNameFORMAT="LINESPECIFIC"virtual char far* GetClassName( );REMAP='BodyNoLead'Returns the name of ROLE='italic'TComboBox's registration class, "ComboBox."SetupWindowFORMAT="LINESPECIFIC"void SetupWindow( );REMAP='BodyNoLead'Sets up the window and limits the amount of text the user can enter in the combo box's edit control to the value of ROLE='italic'TextLen minus 1.TComboBoxData classMOREINFO="NONE"combobox.hREMAP='BodyNoLead'An interface object that represents a transfer buffer for a ROLE='italic'TComboBox.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TComboBoxData( );REMAP='BodyNoLead'Constructs a ROLE='italic'TComboBoxData object, initializes ROLE='italic'Strings and ROLE='italic'ItemDatas to empty arrays, and initializes ROLE='italic'Selection and ROLE='italic'SelIndex to 0.DestructorFORMAT="LINESPECIFIC"~TComboBoxData( );REMAP='BodyNoLead'Deletes ROLE='italic'Strings, ItemDatas, and ROLE='italic'Selection.Public member functionsAddStringFORMAT="LINESPECIFIC"void AddString(const char *str, bool isSelected = false);REMAP='BodyNoLead'Adds the specified string to the array of Strings. If ROLE='italic'IsSelected is true, ROLE='italic'AddString deletes ROLE='italic'Selection and copies ROLE='italic'string into ROLE='italic'Selection.AddStringItemFORMAT="LINESPECIFIC"void AddStringItem(const char* str, uint32 itemData, bool isSelected = false);REMAP='BodyNoLead'Calls ROLE='italic'AddItemData to add the item data to the ROLE='italic'ItemDatas array, and calls ROLE='italic'AddString to add a string to the array of ROLE='italic'Strings.ClearFORMAT="LINESPECIFIC"void Clear( );REMAP='BodyNoLead'Flushes the ROLE='italic'Strings and ROLE='italic'ItemDatas members. Resets the index and selected string values.GetItemDatasFORMAT="LINESPECIFIC"TDwordArray& GetItemDatas( );REMAP='BodyNoLead'Returns the array of DWORDs to transfer to or from a combo box's associated list box.GetSelCountFORMAT="LINESPECIFIC"int GetSelCount( ) const;REMAP='BodyNoLead'Returns the number of items selected, either 0 or 1.GetSelectionFORMAT="LINESPECIFIC"string& GetSelection( );REMAP='BodyNoLead'Returns the currently selected string (the ROLE='italic'Selection data member) to transfer to or from a combo box.GetSelIndexFORMAT="LINESPECIFIC"int GetSelIndex( );REMAP='BodyNoLead'Returns the index (the ROLE='italic'SelIndex data member) of the selected item in the strings array.GetSelStringFORMAT="LINESPECIFIC"void GetSelString(char far* buffer, int bufferSize) const;REMAP='BodyNoLead'Copies the selected string into a buffer of the specified size. ROLE='italic'bufferSize includes the terminating 0.GetSelStringLengthFORMAT="LINESPECIFIC"int GetSelStringLength( ) const;REMAP='BodyNoLead'Returns length of the currently selected string excluding the terminating 0.GetStringsFORMAT="LINESPECIFIC"TStringArray& GetStrings( );REMAP='BodyNoLead'Returns the array of strings (the ROLE='italic'Strings data member) to transfer to or from a combo box's associated list box.ResetSelectionsFORMAT="LINESPECIFIC"void ResetSelections( );REMAP='BodyNoLead'Resets the index of the selected item and the currently selected string.SelectFORMAT="LINESPECIFIC"void Select(int index);REMAP='BodyNoLead'Selects the item at the given index.SelectStringFORMAT="LINESPECIFIC"void SelectString(const char far* str);REMAP='BodyNoLead'Selects the selection string (ROLE='italic'str) and makes the matching ROLE='italic'String entry (if one exists) as selected.Protected data membersItemDatasFORMAT="LINESPECIFIC"TDwordArray ItemDatas;REMAP='BodyNoLead'Array of DWORDs to transfer to or from a combo box's associated list box.SelectionFORMAT="LINESPECIFIC"string Selection;REMAP='BodyNoLead'The currently selected string to transfer to or from a combo box.SelIndexFORMAT="LINESPECIFIC"int SelIndex;REMAP='BodyNoLead'Index of the selected item in the strings array.StringsFORMAT="LINESPECIFIC"TStringArray Strings;REMAP='BodyNoLead'Array of class string to transfer to or from a combo box's associated list box.TCommandEnabler classMOREINFO="NONE"window.hREMAP='Body'An abstract base class used for automatic enabling and disabling of commands, ROLE='italic'TCommandEnabler is a class from which you can derive other classes, each one having its own command enabler. For example, ROLE='italic'TButtonGadgetEnabler is a derived class that's a command enabler for button gadgets, and ROLE='italic'TMenuItemEnabler is a derived class that's a command enabler for menu items. Although your derived classes are likely to use only the functions ROLE='italic'Enable, ROLE='italic'SetCheck, and ROLE='italic'GetHandled, all of ROLE='italic'TCommandEnabler's functions are described so that you can better understand how ObjectWindows uses command processing. The following paragraphs explain the dynamics of command processing.Handling command messagesREMAP='BodyNoLead'Commands are messages of the windows WM_COMMAND type that have associated command identifiers (for example, CM_FILEMENU). When the user selects an item from a menu or a toolbar, when a control sends a notification message to its parent window, or when an accelerator keystroke is translated, a WM_COMMAND message is sent to a window.Responding to command messagesREMAP='BodyNoLead'A command is handled differently depending on which type of command a window receives. Menu items and accelerator commands are handled by adding a command entry to a message response table using the EV_COMMAND macro. The entry requires two arguments:MARK='bullet'REMAP='Bullet1'A command identifier (for example, CM_LISTUNDO)REMAP='Bullet1'A member function (for example, ROLE='italic'CMEditUndo)REMAP='Body'Child ID notifications, messages that a child window sends to its parent window, are handling by using one of the notification macros defined in the header file windowev.h.REMAP='Body'It is also possible to handle a child ID notification at the child window by adding an entry to the child's message response table using the EV_NOTIFY_AT_CHILD macro. This entry requires the following arguments:MARK='bullet'REMAP='Bullet1'A notification message (for example, LBN_DBLCLK)REMAP='Bullet1'A member function (for example, ROLE='italic'CmEditItem)TWindow command processingREMAP='BodyNoLead'One of the classes designed to handle command processing, ROLE='italic'TWindow performs basic command processing according to these steps:NUMERATION='ARABIC' CONTINUATION="RESTARTS" INHERITNUM="IGNORE"REMAP='.NumList1'The member function ROLE='italic'WindowProc calls the virtual member function ROLE='italic'EvCommand. REMAP='.NumList1'ROLE='italic'EvCommand checks to see if the window has requested handling the command by looking up the command in the message response table. REMAP='.NumList1'If the window has requested handling the command identifier by using the EV_COMMAND macro, the command is dispatched. REMAP='Body'ROLE='italic'TWindow also handles Child ID notifications at the child window level.TFrameWindow command processingREMAP='BodyNoLead'ROLE='italic'TFrameWindow provides specialized command processing by overriding its member function ROLE='italic'EvCommand and sending the command down the command chain (that is, the chain of windows from the focus window back up to the frame itself, the original receiver of the command message).REMAP='Body'If no window in the command chain handles the command, ROLE='italic'TFrameWindow delegates the command to the application object . Although this last step is theoretically performed by the frame window, it is actually done by ROLE='italic'TWindow's member function, ROLE='italic'DefaultProcessing.Invoking EvCommandREMAP='BodyNoLead'When ROLE='italic'TFrameWindow sends a command down the command chain, it doesn't directly dispatch the command; instead, it invokes the window's ROLE='italic'EvCommand member function.This procedure gives the windows in the command chain the flexibility to handle a command by overriding the member function ROLE='italic'EvCommand instead of being limited to handling only the commands requested by the EV_COMMAND macro.Handling command enable messagesREMAP='BodyNoLead'Most applications expend considerable energy updating menu items and tool bar buttons to provide the necessary feedback indicating that a command has been enabled. In order to simplify this procedure, ObjectWindows lets the event handler that's going to handle the command make the decision about whether or not to enable or disable a command.REMAP='Body'Although the WM_COMMAND_ENABLE message is sent down the same command chain as the WM_COMMAND event; exactly when the WM_COMMAND_ENABLE message is sent depends on the type of command enabling that needs to be processed. Command enabling for menu itemsREMAP='BodyNoLead'ROLE='italic'TFrameWindow performs this type of command enabling when it receives a WM_INITMENUPOPUP message. It sends this message before a menu list appears. ObjectWindows then identifies the menu commands using the command IDs and sends requests for the commands to be enabled.REMAP='Body'Note that because Object Windows actively maintains toolbars and menu items, any changes made to the variables involved in the command enabling functions are implemented dynamically and not just when a window is activated. Command enabling for toolbar buttonsREMAP='BodyNoLead'The type of command enabling is performed during idle processing (in the ROLE='italic'IdleAction function). See the diagram following the description of ROLE='italic'TWindow::DefaultProcessing for a graphical illustration of this process.Creating specialized command enablersREMAP='BodyNoLead'Associated with the WM_COMMAND_ENABLE message is an object of the ROLE='italic'TCommandEnabler type. This family of command enablers includes specialized command enablers for menu items and toolbar buttons.REMAP='Body'As you can see from ROLE='italic'TCommandEnable's class declaration, you can do considerably more than simply enable or disable a command using the command enabler. For example, you have the ability to change the text associated with the command as well as the state of the command.Using the EV_COMMAND_ENABLE macroREMAP='BodyNoLead'You can use the EV_COMMAND_ENABLE macro to handle WM_COMMAND_ENABLE messages. Just as you do with the EV_COMMAND macro, you specify the command identifier that you want to handle and the member function you want to invoke to handle the message.Automatically enabling and disabling commandsREMAP='BodyNoLead'ObjectWindows simplifies enabling and disabling of commands by automatically disabling commands for which there are no associated handlers. ROLE='italic'TFrameWindow's member function ROLE='italic'EvCommandEnable performs this operation, which involves completing a two pass algorithm.NUMERATION='ARABIC' CONTINUATION="RESTARTS" INHERITNUM="IGNORE"REMAP='.NumList1'The first pass sends a WM_COMMAND_ENABLE message down the command chain giving each window an explicit opportunity to do the command enabling.REMAP='.NumList1'If no window handles the command enabling request, then ObjectWindows checks to see whether any windows in the command chain are going to handle the command through any associated EV_COMMAND entries in their response tables. If there is a command handler in one of the response tables, then the command is enabled; otherwise it is disabled.REMAP='Body'Because of this implicit command enabling or disabling, you do not need to (and actually should not) do explicit command enabling unless you want to change the command text, change the command state, or conditionally enable or disable the command.REMAP='Body'If you handle commands indirectly by overriding the member function ROLE='italic'EvCommand instead of using the EV_COMMAND macro to add a response table entry, then ObjectWindows will not be aware that you are handling the command. Consequently, the command may be automatically disabled. Should this occur, the appropriate action to take is to also override the member function ROLE='italic'EvCommandEnable and explicitly enable the command.Public constructorConstructorFORMAT="LINESPECIFIC"TCommandEnabler(uint id, HWND hWndReceiver = 0);REMAP='BodyNoLead'Constructs the ROLE='italic'TCommandEnable object with the specified command ID. Sets the message responder (ROLE='italic'hWndReceiver) to zero.Type definitionsCheckStateFORMAT="LINESPECIFIC"enum CheckState{Unchecked, Checked, Indeterminate};REMAP='BodyNoLead'Enumerates the values for the check state of the command sender. This state applies to buttons, such as those used for tool bars or to control bar gadgets.Public data membersIdFORMAT="LINESPECIFIC"const uint Id;REMAP='BodyNoLead'Command ID for the enabled command.Public member functionsEnableFORMAT="LINESPECIFIC"virtual void Enable(bool enable = true);REMAP='BodyNoLead'Enables or disables the command sender. When ROLE='italic'Enable is called, it sets the ROLE='italic'Handled flag.GetHandledFORMAT="LINESPECIFIC"bool GetHandled( );REMAP='BodyNoLead'Returns ROLE='italic'Handled, a flag value that shows if this command enabler has been handled, in which case ROLE='italic'Handled is ROLE='bold'true. IsReceiverFORMAT="LINESPECIFIC"bool IsReceiver(HWND hReceiver);REMAP='BodyNoLead'Returns ROLE='bold'true if ROLE='italic'receiver is the same as the message responder originally set up in the constructor.SetCheckFORMAT="LINESPECIFIC"virtual void SetCheck(int check) = 0;REMAP='BodyNoLead'Changes the ROLE='italic'check state of the command sender to either unchecked, checked, or indeterminate. This state applies to buttons, such as those used for toolbars or to control bar gadgets.SetTextFORMAT="LINESPECIFIC"virtual void SetText(const char far* text) = 0;REMAP='BodyNoLead'Changes the text associated with a command sender. This applies, for example, to text associated with a menu item or text on a button.Protected data membersHandledFORMAT="LINESPECIFIC"bool Handled;REMAP='BodyNoLead'Is ROLE='bold'true if the command enabler has been handled.HWndReceiverFORMAT="LINESPECIFIC"const HWND HWndReceiver;REMAP='BodyNoLead'The message responder (the window) that receives the command.TCommonDialog classMOREINFO="NONE"commdial.hREMAP='BodyNoLead'Derived from ROLE='italic'TDialog, TCommonDialog is the abstract base class for ROLE='italic'TCommonDialog objects. It provides the basic functionality for creating dialog boxes using the common dialog DLL. The ObjectWindows classes that inherit this common dialog functionality includeREMAP='Body'ROLE='italic'TChooseColorDialogname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'a modal dialog box that lets a user select colors for an applicationREMAP='Body'ROLE='italic'TChooseFontDialogname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'a modal dialog box that lets a user select fonts for an applicationREMAP='Body'ROLE='italic'TReplaceDialogname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'a modeless dialog box that lets a user specify a text selection to replaceREMAP='Body'ROLE='italic'TFindDialogname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'a modeless dialog box that lets a user specify a text selection to findREMAP='Body'ROLE='italic'TFileOpenDialogname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'a modal dialog box that lets a user specify a file to openREMAP='Body'ROLE='italic'TFileSaveDialogname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'a modal dialog box that lets a user specify a file to saveREMAP='Body'ROLE='italic'TPrintDialogname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'a modal dialog box that lets a user specify printer optionsREMAP='Body'Each common dialog class uses a nested class, ROLE='italic'TData, that stores the attributes and user-specified data. For example, the ROLE='italic'TChooseColorDialog::TData class stores the color attributes the user selects in response to a prompt in a common dialog box. In fact, to create a common dialog box, you construct a ROLE='italic'TData object first, then fill in the data members of the ROLE='italic'TData object before you even construct the common dialog box object. Finally, you either execute a modal dialog box or create a modeless dialog box.Public constructorConstructorFORMAT="LINESPECIFIC"TCommonDialog(TWindow* parent, const char far* title = 0, TModule* module = 0);REMAP='BodyNoLead'Invokes a ROLE='italic'TWindow constructor, passing the parent window ROLE='italic'parent and constructs a common dialog box which you can modify to suit your specifications. You can indicate the module ID (ROLE='italic'title) and window caption (ROLE='italic'title), which otherwise default to 0. Public member functionsDoCreateFORMAT="LINESPECIFIC"HWND DoCreate( );REMAP='BodyNoLead'Called by ROLE='italic'Create, ROLE='italic'DoCreate creates a modeless dialog box. It returns 0 if unsuccessful.See alsoREMAP='BodyNoLead'TDialog::CreateDoExecuteFORMAT="LINESPECIFIC"int DoExecute( );REMAP='BodyNoLead'Called by ROLE='italic'Execute, ROLE='italic'DoExecute executes a modal dialog box. If the dialog box execution is canceled or unsuccessful, ROLE='italic'DoExecute returns IDCANCEL.See alsoREMAP='BodyNoLead'TDialog::ExecuteProtected data memberCDTitleFORMAT="LINESPECIFIC"const char far* CDTitle;REMAP='BodyNoLead'ROLE='italic'CDTitle stores the optional caption displayed in the common dialog box.See alsoREMAP='BodyNoLead'TDialog::SetCaptionProtected member functionsCmHelpFORMAT="LINESPECIFIC"void CmHelp( );REMAP='BodyNoLead'Default handler for the ROLE='italic'pshHelp push button (the Help button in the dialog box).CmOkCancelFORMAT="LINESPECIFIC"void CmOkCancel( );REMAP='BodyNoLead'Responds to a click on the dialog box's OK or Cancel button by calling ROLE='italic'DefaultProcessing to let the common dialog DLL process the command.See alsoREMAP='BodyNoLead'TDialog::CmCancel, TDialog::CmOkEvCloseFORMAT="LINESPECIFIC"void EvClose( );REMAP='BodyNoLead'Responds to a WM_CLOSE message by calling ROLE='italic'DefaultProcessing to let the common dialog DLL process the command.See alsoREMAP='BodyNoLead'TDialog::EvCloseSetupWindowFORMAT="LINESPECIFIC"void SetupWindow( );REMAP='BodyNoLead'Assigns the caption of the dialog box to ROLE='italic'CDTitle if ROLE='italic'CDTitle is nonzero.See alsoREMAP='BodyNoLead'TDialog::SetupWindowResponse table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='174*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(IDCANCEL, CmOkCancel)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmOkCancelCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(IDOK, CmOkCancel)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmOkCancelCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CLOSECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvCloseCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CTLCOLORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvCtlColorTCondFunc typedefMOREINFO="NONE"window.hFORMAT="LINESPECIFIC"typedef bool (*TCondFunc) (TWindow *win, void *param);REMAP='BodyNoLead'Defines a member function type used by ROLE='italic'TWindow's function ROLE='italic'FirstThat.See alsoREMAP='BodyNoLead'TWindow::FirstThatTCondMemFunc typedefMOREINFO="NONE"window.hFORMAT="LINESPECIFIC"typedef bool (TWindow_TCondMemFunc) (*win, void *param);REMAP='BodyNoLead'Defines a member function type used by ROLE='italic'TWindow's function ROLE='italic'FirstThat.See alsoREMAP='BodyNoLead'TWindow::FirstThatTControlBar classMOREINFO="NONE"controlb.hREMAP='BodyNoLead'Derived from ROLE='italic'TGadgetWindow, ROLE='italic'TControlBar implements a control bar that provides mnemonic access for its button gadgets. The sample MDIFILE.CPP ObjectWindows program on your distribution disk displays an example of a control bar.REMAP='Body'To construct, build, and insert a control bar into a frame window, you can first define the following response table:FORMAT="LINESPECIFIC"DEFINE_RESPONSE_TABLE1(TMDIFileApp, TApplication
EV_COMMAND(CM_FILENEW, CmFileNew),
EV_COMMAND(CM_FILEOPEN, CmFileOpen),
EV_COMMAND(CM_SAVESTATE, CmSaveState),
EV_COMMAND(CM_RESTORESTATE, CmRestoreState),
END_RESPONSE_TABLE;REMAP='Body'Next, add statements that will construct a main window and load its menu, accelerator table, and icon. Then, to construct, build and insert a control bar into the frame window, insert these statements:FORMAT="LINESPECIFIC"TControlBar* cb = new TControlBar(frame);
cb->Insert(*new TButtonGadget(CM_FILENEW, CM_FILENEW));
cb->Insert(*new TButtonGadget(CM_FILEOPEN, CM_FILEOPEN));
cb->Insert(*new TButtonGadget(CM_FILESAVE, CM_FILESAVE));
cb->Insert(*new TSeparatorGadget(6));
cb->Insert(*new TButtonGadget(CM_EDITCUT, CM_EDITCUT));
cb->Insert(*new TButtonGadget(CM_EDITCOPY, CM_EDITCOPY));
cb->Insert(*new TButtonGadget(CM_EDITPASTE, CM_EDITPASTE));
cb->Insert(*new TSeparatorGadget(6));
cb->Insert(*new TButtonGadget(CM_EDITUNDO, CM_EDITUNDO));
frame->Insert(*cb, TDecoratedFrame::Top);Public constructorConstructorFORMAT="LINESPECIFIC"TControlBar(TWindow* parent = 0, TTileDirection direction = Horizontal, TFont* font = new TGadgetWindowFont, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TControlBar interface object with the specified direction (either horizontal or vertical) and window font.Public member functionPreProcessMsgFORMAT="LINESPECIFIC"bool PreProcessMsg(MSG& msg);REMAP='BodyNoLead'Preprocesses messages. Because ROLE='italic'PreProcessMsg does not translate any accelerator keys for ROLE='italic'TControlBar, it returns false.Protected member functionPositionGadgetFORMAT="LINESPECIFIC"void PositionGadget(TGadget* previous, TGadget* next, TPoint& p);REMAP='BodyNoLead'Gets the border style, determines the direction of the gadget, and positions the button gadget on either a horizontal or vertical border if any overlapping is required.TControlGadget classMOREINFO="NONE"controlg.hREMAP='BodyNoLead'ROLE='italic'TControlGadget serves as a surrogate for ROLE='italic'TControl so that you can place ROLE='italic'TControl objects such as edit controls, buttons, sliders, gauges, or third-party controls, into a gadget window. If necessary, ROLE='italic'TControlGadget sets a parent window and creates the control gadget. See ROLE='italic'TGadget for more information about gadget objects.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TControlGadget(TWindow& control, TBorderStyle = None);REMAP='BodyNoLead'Creates a ROLE='italic'TControlGadget object associated with the specified ROLE='italic'TControl window.DestructorFORMAT="LINESPECIFIC"~TControlGadget( );REMAP='BodyNoLead'Destroys a ROLE='italic'TControlGadget object and removes it from the associated window.Protected data memberControlFORMAT="LINESPECIFIC"TWindow* Control;REMAP='BodyNoLead'Points to the control window that is managed by this ROLE='italic'TControlGadget.Protected member functionsGetDesiredSizeFORMAT="LINESPECIFIC"void GetDesiredSize(TSize& size);REMAP='BodyNoLead'Calls ROLE='italic'TGadget::GetDesiredSize and passes the size of the control gadget. Use ROLE='italic'GetDesiredSize to find the size the control gadget needs to be in order to accommodate the borders and margins as well as the highest and widest control gadget.See alsoREMAP='BodyNoLead'TGadget::GetDesiredSizeGetInnerRectFORMAT="LINESPECIFIC"void GetInnerRect(TRect&);REMAP='BodyNoLead'Computes the area of the control gadget's rectangle excluding the borders and margins.InsertedFORMAT="LINESPECIFIC"void Inserted( );REMAP='BodyNoLead'Called when the control gadget is inserted in the parent window. Displays the window in its current size and position.InvalidateFORMAT="LINESPECIFIC"void Invalidate(bool erase = true);REMAP='BodyNoLead'Used to invalidate the active (usually nonborder) portion of the control gadget, ROLE='italic'Invalidate calls InvalidateRect and passes the boundary width and height of the area to erase.InvalidateRectFORMAT="LINESPECIFIC"void InvalidateRect(const TRect&, bool erase = true);REMAP='BodyNoLead'Invalidates the control gadget rectangle in the parent window.RemovedFORMAT="LINESPECIFIC"void Removed( );REMAP='BodyNoLead'Called when the control gadget is removed from the parent window.SetBoundsFORMAT="LINESPECIFIC"void SetBounds(TRect& rect);REMAP='BodyNoLead'Calls ROLE='italic'TGadget::ROLE='italic'SetBounds and passes the dimensions of the control gadget's rectangle. ROLE='italic'SetBounds informs the control gadget of a change in its bounding rectangle.See alsoREMAP='BodyNoLead'TGadget::SetBoundsUpdateFORMAT="LINESPECIFIC"void Update( );REMAP='BodyNoLead'Updates the client area of the specified window by immediately sending a WM_PAINT message.Response table entriesREMAP='Body'The ROLE='italic'TControlGadget class has no response table entries.TControl classMOREINFO="NONE"control.hREMAP='BodyNoLead'ROLE='italic'TControl unifies its derived control classes, such as ROLE='italic'TScrollBar, TControlGadget, and ROLE='italic'TButton. Control objects of derived classes are used to represent control interface elements. A control object must be used to create a control in a parent ROLE='italic'TWindow or a derived window. A control object can be used to facilitate communication between your application and the controls of a ROLE='italic'TDialog. TControl is a streamable class.Public constructorsConstructorsFORMAT="LINESPECIFIC"TControl(TWindow* parent, int id, const char far* title, int x, int y, int w, int h, TModule* module = 0);REMAP='BodyNoLead'Invokes ROLE='italic'TWindow's constructor, passing it parent (parent window), ROLE='italic'title (caption text), and module. Sets the control attributes using the supplied library ID (ROLE='italic'Id), position (ROLE='italic'x, ROLE='italic'y) relative to the origin of the parent window's client area, width (ROLE='italic'w), and height (ROLE='italic'h) parameters. It sets the control style to WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP.FORMAT="LINESPECIFIC"TControl(TWindow* parent, int resourceId, TModule* module = 0);REMAP='BodyNoLead'Constructs an object to be associated with an interface control of a ROLE='italic'TDialog. Invokes the ROLE='italic'TWindow constructor then enables the data transfer mechanism by calling ROLE='italic'EnableTransfer.REMAP='Body'The ROLE='italic'resourceId parameter must correspond to a control interface resource that you define.See alsoREMAP='BodyNoLead'TWindow::TWindow, TWindow::EnableTransferProtected member functionsCompareItemFORMAT="LINESPECIFIC"virtual int CompareItem (COMPAREITEMSTRUCT far& compareInfo);REMAP='BodyNoLead'Also used with owner-draw buttons and list boxes, ROLE='italic'CompareItem compares two items. The derived class supplies the compare logic.See alsoREMAP='BodyNoLead'COMPAREITEMSTRUCT structDeleteItemFORMAT="LINESPECIFIC"virtual void DeleteItem (DELETEITEMSTRUCT far& deleteInfo);REMAP='BodyNoLead'ROLE='italic'DeleteItem is used with owner-draw buttons and list boxes. In such cases, the derived class supplies the delete logic.See alsoREMAP='BodyNoLead'DELETEITEMSTRUCT structDrawItemFORMAT="LINESPECIFIC"virtual void DrawItem(DRAWITEMSTRUCT far& drawInfo);REMAP='BodyNoLead'ROLE='italic'DrawItem responds to a message forwarded to a drawable control by ROLE='italic'TWindow when the control needs to be drawn. ROLE='italic'TControl::DrawItem calls ROLE='italic'ODADrawEntire if the entire control needs to be drawn, calls ROLE='italic'ODASelect if the selection state of the control has changed, or calls ROLE='italic'ODAFocus if the focus has been shifted to or from the control.See alsoREMAP='BodyNoLead'TControl::ODADrawEntire, TControl::ODASelect, TControl::ODAFocus, DRAWITEMSTRUCT structEvCompareItemFORMAT="LINESPECIFIC"LRESULT EvCompareItem(uint ctrlId, COMPAREITEMSTRUCT far& comp);REMAP='BodyNoLead'Handles a WM_COMPAREITEM message for owner-draw controls.See alsoREMAP='BodyNoLead'COMPAREITEMSTRUCT structEvDeleteItemFORMAT="LINESPECIFIC"void EvDeleteItem(uint ctrlId, DELETEITEMSTRUCT far& del);REMAP='BodyNoLead'Handles a WM_DELETEITEM message for owner-draw controls.See alsoREMAP='BodyNoLead'DELETEITEMSTRUCT structEvDrawItemFORMAT="LINESPECIFIC"void EvDrawItem(uint ctrlId, DRAWITEMSTRUCT far& draw);REMAP='BodyNoLead'Handles a WM_DRAWITEM message.See alsoREMAP='BodyNoLead'DRAWITEMSTRUCT structEvMeasureItemFORMAT="LINESPECIFIC"void EvMeasureItem(uint ctrlId, MEASUREITEMSTRUCT far& meas);REMAP='BodyNoLead'Handles a WM_MEASUREITEM message.See alsoREMAP='BodyNoLead'MEASUREITEMSTRUCT structEvPaintFORMAT="LINESPECIFIC"void EvPaint( );REMAP='BodyNoLead'If the control has a predefined class, ROLE='italic'EvPaint calls ROLE='italic'TWindow::DefaultProcesing for painting. Otherwise, it calls ROLE='italic'TWindow::EvPaint.See alsoREMAP='BodyNoLead'TWindow::DefaultProcessingMeasureItemFORMAT="LINESPECIFIC"virtual void MeasureItem (MEASUREITEMSTRUCT far& measureInfo);REMAP='BodyNoLead'Used by owner-drawn controls to set the dimensions of the specified item. For list boxes and control boxes, this function applies to specific items; for other owner-drawn controls, this function is used to set the total size of the control.See alsoREMAP='BodyNoLead'MEASUREITEMSTRUCT structODADrawEntireFORMAT="LINESPECIFIC"virtual void ODADrawEntire(DRAWITEMSTRUCT far& drawInfo);REMAP='BodyNoLead'Responds to a notification message sent to a drawable control when the control needs to be drawn. ROLE='italic'ODADrawEntire can be redefined by a drawable control to specify the manner in which it is to be drawn.See alsoREMAP='BodyNoLead'TControl::DrawItem, DRAWITEMSTRUCT structODAFocusFORMAT="LINESPECIFIC"virtual void ODAFocus(DRAWITEMSTRUCT far& drawInfo);REMAP='BodyNoLead'Responds to a notification sent to a drawable control when the focus has shifted to or from the control. ROLE='italic'ODAFocus can be redefined by a drawable control to specify the manner in which it is to be drawn when losing or gaining the focus.See alsoREMAP='BodyNoLead'TControl::DrawItem, DRAWITEMSTRUCT structODASelectFORMAT="LINESPECIFIC"virtual void ODASelect(DRAWITEMSTRUCT far& drawInfo);REMAP='BodyNoLead'Responds to a notification sent to a drawable control when the selection state of the control changes. ROLE='italic'ODASelect can be redefined by a drawable control to specify the manner in which it is drawn when its selection state changes.See alsoREMAP='BodyNoLead'TControl::DrawItem, DRAWITEMSTRUCT structResponse table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='117*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_PAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvPaintCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_COMPAREITEMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvCompareItemCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_DELETEITEMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvDeleteItemCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_DRAWITEMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvDrawItemCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MEASUREITEMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvMeasureItemTCreatedDC classMOREINFO="NONE"dc.hREMAP='BodyNoLead'An abstract ROLE='italic'TDC class, TCreatedDC serves as the base for DCs that are created and deleted.REMAP='Body'See TDC for more information about DC objects.Public constructors and destructorConstructorsFORMAT="LINESPECIFIC"TCreatedDC(const char far* driver, const char far* device, const char far* output, const DEVMODE far* initData=0);REMAP='BodyNoLead'Creates a DC object for the device specified by ROLE='italic'driver (driver name), ROLE='italic'device (device name), and ROLE='italic'output (the name of the file or device [port] for the physical output medium). The optional ROLE='italic'initData argument provides a DEVMODE structure containing device-specific initialization data for this DC. ROLE='italic'initData must be 0 (the default) if the device is to use any default initializations specified by the user.FORMAT="LINESPECIFIC"TCreatedDC(HDC handle TAutoDelete autoDelete);REMAP='BodyNoLead'Creates a DC object using an existing DC.DestructorFORMAT="LINESPECIFIC"~TCreatedDC( );REMAP='BodyNoLead'Calls ROLE='italic'RestoreObjects clears any nonzero ROLE='italic'OrgXXX data members. If ShouldDelete is ROLE='bold'true the destructor deletes this DC.See alsoREMAP='BodyNoLead'enum TDC::TAutoDelete, TDC::RestoreObjects, TDC::ShouldDelete, DEVMODE structProtected constructor ConstructorFORMAT="LINESPECIFIC"TCreatedDC( );REMAP='BodyNoLead'Creates a device context for the given device. DC objects can be constructed either by borrowing an existing HDC handle or by supplying device and driver information.TCursor classMOREINFO="NONE"gdiobjec.hREMAP='BodyNoLead'ROLE='italic'TCursor, derived from ROLE='italic'TGdiBase, represents the GDI cursor object class. ROLE='italic'TCursor constructors can create cursors from a resource or from explicit information. Because cursors are not real GDI objects, the ROLE='italic'TCursor destructor overrides the base destructor, ~ROLE='italic'TGdiBase.Public constructors and destructorConstructorsFORMAT="LINESPECIFIC"TCursor(HCURSOR handle, TAutoDelete autoDelete = NoAutoDelete);REMAP='BodyNoLead'Creates a ROLE='italic'TCursor object and sets the ROLE='italic'Handle data member to the given borrowed handle. The ROLE='italic'ShouldDelete data member defaults to ROLE='bold'false, ensuring that the borrowed handle will not be deleted when the C++ object is destroyed.FORMAT="LINESPECIFIC"TCursor(HINSTANCE instance, const TCursor& cursor);REMAP='BodyNoLead'Creates a copy of the given ROLE='italic'cursor object. The 32-bit version (for compiling a Win32 application) uses ROLE='italic'CopyIcon( ) and does a cast to get to HICON.FORMAT="LINESPECIFIC"TCursor(HINSTANCE instance, ResId resId);REMAP='BodyNoLead'Constructs a ROLE='italic'cursor object from the specified resource ID.FORMAT="LINESPECIFIC"TCursor(HINSTANCE instance, const TPoint& hotSpot, const TSize& size, void far* andBits, void far* xorBits);REMAP='BodyNoLead'Constructs a ROLE='italic'TCursor object of the specified size at the specified point.FORMAT="LINESPECIFIC"TCursor(const void* resBits, uint32 resSize);REMAP='BodyNoLead'32 bit only. Constructs a ROLE='italic'TCursor object from the specified resource.FORMAT="LINESPECIFIC"TCursor(const ICONINFO* iconInfo);REMAP='BodyNoLead'32 bit only. Creates a ROLE='italic'TCursor object from the specified ICONINFO structure information.DestructorFORMAT="LINESPECIFIC"~TCursor( );REMAP='BodyNoLead'Destroys a ROLE='italic'TCursor object.See alsoREMAP='BodyNoLead'~TGdiObject, TGdiObject::Handle, TGdiObject::ShouldDelete, TPoint, TSize, ICONINFO structPublic member functionGetIconInfoFORMAT="LINESPECIFIC"bool GetIconInfo(ICONINFO* iconInfo) const;REMAP='BodyNoLead'32-bit only. Retrieves information about this icon and copies it in the givenROLE='italic' ICONINFO structure. Returns ROLE='bold'true if the call is successful; otherwise returns ROLE='bold'false.See alsoREMAP='BodyNoLead'ICONINFO structOperatorsoperator HCURSOR( )FORMAT="LINESPECIFIC"operator HCURSOR( ) const;REMAP='BodyNoLead'An inline typecasting operator. Converts this cursor's ROLE='italic'Handle to type HCURSOR (the data type representing the handle to a cursor resource).operator ==FORMAT="LINESPECIFIC"bool operator ==(const TCursor& other) const;REMAP='BodyNoLead'Returns ROLE='bold'true if this cursor equals ROLE='italic'other; otherwise returns ROLE='bold'false.TDC classMOREINFO="NONE"dc.hREMAP='BodyNoLead'ROLE='italic'TDC is the root class for GDI DC wrappers. Each ROLE='italic'TDC object inherits a Handle from ROLE='italic'TGdiBase and casts that Handle to an HDC using the HDC operator. Win API functions that take an HDC argument can therefore be called by a corresponding ROLE='italic'TDC member function without this explicit handle argument.REMAP='Body'DC objects can be created directly with ROLE='italic'TDC constructors, or via the constructors of specialized subclasses (such as ROLE='italic'TWindowDC, ROLE='italic'TMemoryDC, ROLE='italic'TMetaFileDC, ROLE='italic'TDibDC, and ROLE='italic'TPrintDC) to get specific behavior. DC objects can be constructed with an already existing and borrowed HDC handle or from scratch by supplying device driver information, as with ::ROLE='italic'CreateDC. The class ROLE='italic'TCreateDC takes over much of the creation and deletion work from ROLE='italic'TDC.REMAP='Body'ROLE='italic'TDC has four handles as protected data members: ROLE='italic'OrgBrush, ROLE='italic'OrgPen, ROLE='italic'OrgFont, and ROLE='italic'OrgPalette. These handles keep track of the stock GDI objects selected into each DC. As new GDI objects are selected with ROLE='italic'SelectObject or ROLE='italic'SelectPalette, these data members store the previous objects. The latter can be restored individually with ROLE='italic'RestoreBrush, ROLE='italic'RestorePen, and so on, or they can all be restored with ROLE='italic'RestoreObjects. When a ROLE='italic'TDC object is destroyed (via ~ROLE='italic'TDC::ROLE='italic'TDC), all the originally selected objects are restored. The data member ROLE='italic'TDC::ROLE='italic'ShouldDelete controls the deletion of the TDC object.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TDC(HDC handle);REMAP='BodyNoLead'Creates a DC object "borrowing" the handle of an existing DC. The ROLE='italic'Handle data member is set to the given ROLE='italic'handle argument.DestructorFORMAT="LINESPECIFIC"virtual ~TDC( );REMAP='BodyNoLead'Calls ROLE='italic'RestoreObjects.See alsoREMAP='BodyNoLead'TCreatedDC, TDC::RestoreObjects, TDC::ShouldDeletePublic member functionsAngleArcFORMAT="LINESPECIFIC"bool AngleArc(int x, int y, uint32 radius, float startAngle, float sweepAngle);FORMAT="LINESPECIFIC"bool AngleArc(const TPoint& center, uint32 radius, float startAngle, float sweepAngle);REMAP='BodyNoLead'32-bit only. Draws a line segment and an arc on this DC using the currently selected pen object. The line is drawn from the current position to the beginning of the arc. The arc is that part of the circle (with the center at logical coordinates (x, y) and positive radius, ROLE='italic'radius) starting at ROLE='italic'startAngle and ending at (ROLE='italic'startAngle + ROLE='italic'sweepAngle). Both angles are measured in degrees, counterclockwise from the x-axis (the default arc direction). The arc might appear to be elliptical, depending on the current transformation and mapping mode. ROLE='italic'AngleArc returns ROLE='bold'true if the figure is drawn successfully; otherwise, it returns ROLE='bold'false. If successful, the current position is moved to the end point of the arc.See alsoREMAP='BodyNoLead'TDC::Arc, TPoint classArcFORMAT="LINESPECIFIC"bool Arc(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);FORMAT="LINESPECIFIC"bool Arc(const TRect& r, const TPoint& start, const TPoint& end);REMAP='BodyNoLead'Draws an elliptical arc on this DC using the currently selected pen object. The center of the arc is the center of the bounding rectangle, specified either by (ROLE='italic'x1, y1)/(ROLE='italic'x2, y2) or by the rectangle r. The starting/ending points of the arc are specified either by (ROLE='italic'x3, y3)/(ROLE='italic'x4, y4) or by the points ROLE='italic'start and ROLE='italic'end. All points are specified in logical coordinates. ROLE='italic'Arc returns ROLE='bold'true if the arc is drawn successfully; otherwise, it returns ROLE='bold'false. The current position is neither used nor altered by this call. The drawing direction default is counterclockwise.See alsoREMAP='BodyNoLead'TDC::AngleArc, TPoint, TRectBeginPathFORMAT="LINESPECIFIC"bool BeginPath( );REMAP='BodyNoLead'32-bit only. Opens a new path bracket for this DC and discards any previous paths from this DC. Once a path bracket is open, an application can start calling draw functions on this DC to define the points that lie within that path. The draw functions that define points in a path are the following ROLE='italic'TDC members: ROLE='italic'AngleArc, Arc, Chord, CloseFigure, Ellipse, ExtTextOut, LineTo, MoveToEx, Pie, PolyBezier, PolyBezierTo, PolyDraw, Polygon, Polyline, PolylineTo, PolyPolygon, PolyPolyline, Rectangle, RoundRect, and ROLE='italic'TextOut.REMAP='Body'A path bracket can be closed by calling ROLE='italic'TDC::ROLE='italic'EndPath.REMAP='Body'ROLE='italic'BeginPath returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::FillPath, TDC::EndPath, TDC::PathToRegion, TDC::StrokePath, TDC::StrokeandFillPath, TDC::WidenPathBitBltFORMAT="LINESPECIFIC"bool BitBlt(int dstX, int dstY, int w, int h, const TDC& srcDC, int srcX, int srcY, uint32 rop=SRCCOPY);FORMAT="LINESPECIFIC"bool BitBlt(const TRect& dst, const TDC& srcDC, const TPoint& src, uint32 rop=SRCCOPY);REMAP='BodyNoLead'Performs a bit-block transfer from ROLE='italic'srcDc (the given source DC) to this DC (the destination DC). Color bits are copied from a source rectangle to a destination rectangle. The location of the source rectangle is specified either by its upper left-corner logical coordinates (ROLE='italic'srcX, ROLE='italic'srcY), or by the ROLE='italic'TPoint object, ROLE='italic'src. The destination rectangle can be specified either by its upper left-corner logical coordinates (ROLE='italic'dstX, ROLE='italic'dstY), width ROLE='italic'w, and height ROLE='italic'h, or by the ROLE='italic'TRect object, ROLE='italic'dst. The destination rectangle has the same width and height as the source. The rop argument specifies the raster operation used to combine the color data for each pixel. See ROLE='italic'TDC::ROLE='italic'MaskBlt for a detailed list of ROLE='italic'rop codes.REMAP='Body'When recording an enhanced metafile, an error occurs if the source DC identifies the enhanced metafile DC.See alsoREMAP='BodyNoLead'TPoint class, TRect classChordFORMAT="LINESPECIFIC"bool Chord(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);FORMAT="LINESPECIFIC"bool Chord(const TRect& r, const TPoint& start, const TPoint& end);REMAP='BodyNoLead'Draws and fills a chord (a region bounded by the intersection of an ellipse and a line segment) on this DC using the currently selected pen and brush objects. The ellipse is specified by a bounding rectangle given either by (ROLE='italic'x1, ROLE='italic'y1)/(ROLE='italic'x2, ROLE='italic'y2) or by the rectangle ROLE='italic'R. The starting/ending points of the chord are specified either by (ROLE='italic'x3, ROLE='italic'y3)/(ROLE='italic'x4, ROLE='italic'y4) or by the points ROLE='italic'Start and ROLE='italic'End. Chord returns ROLE='bold'true if the call is successful; otherwise, it returns false. The current position is neither used nor altered by this call.See alsoREMAP='BodyNoLead'TDC::Arc, TPoint class, TRect classCloseFigureFORMAT="LINESPECIFIC"bool CloseFigure( );REMAP='BodyNoLead'32-bit only. Closes an open figure in this DC's open path bracket by drawing a line from the current position to the first point of the figure (usually the point specified by the most recent ROLE='italic'TDC::ROLE='italic'MoveTo call), and connecting the lines using the current join style for this DC. If you close a figure with ROLE='italic'TDC::ROLE='italic'LineTo instead of with ROLE='italic'CloseFigure, end caps (instead of a join) are used to create the corner. The call fails if there is no open path bracket on this DC. Any line or curve added to the path after a ROLE='italic'CloseFigure call starts a new figure. A figure in a path remains open until it is explicitly closed with ROLE='italic'CloseFigure even if its current position and start point happen to coincide.REMAP='Body'ROLE='italic'CloseFigure returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::BeginPath, TDC::EndPathDPtoLPFORMAT="LINESPECIFIC"bool DPtoLP(TPoint* points, int count = 1) const;REMAP='BodyNoLead'Converts each of the ROLE='italic'count points in the ROLE='italic'points array from device points to logical points. The conversion depends on this DC's current mapping mode and the settings of its window and viewport origins and extents. ROLE='italic'DPtoLP returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::LPtoDP, TPoint classDrawFocusRectFORMAT="LINESPECIFIC"bool DrawFocusRect(int x1, int x2, int y1, int y2);FORMAT="LINESPECIFIC"bool DrawFocusRect(const TRect& rect);REMAP='BodyNoLead'Draws the given rectangle on this DC in the style used to indicate focus. Calling the function a second time with the same ROLE='italic'rect argument will remove the rectangle from the display. A rectangle drawn with ROLE='italic'DrawFocusRect cannot be scolled. ROLE='italic'DrawFocusRect returns true if the call is successful; otherwise, it returns false.See alsoREMAP='BodyNoLead'TRect classDrawIconFORMAT="LINESPECIFIC"bool DrawIcon(int x, int y, const TIcon& icon);FORMAT="LINESPECIFIC"bool DrawIcon(const TPoint& point, const TIcon& icon);REMAP='BodyNoLead'Draws the given ROLE='italic'icon on this DC. The upper left corner of the drawn icon can be specified by x- and y-coordinates or by the ROLE='italic'point argument. ROLE='italic'DrawIcon returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TIcon classDrawTextFORMAT="LINESPECIFIC"virtual bool DrawText(const char far* string, int count, const TRect& r, uint16 format = 0);REMAP='BodyNoLead'Formats and draws in the given rectangle, ROLE='italic'r, up to ROLE='italic'count characters of the null-terminated ROLE='italic'string using the current font for this DC. If ROLE='italic'count is -1, the whole string is written. The rectangle must be specified in logical units. Formatting is controlled with the ROLE='italic'format argument, which can be various combinations of the following values:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='104*'COLNAME='C2' COLWIDTH='270*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DT_BOTTOMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies bottom-justified text. This value must be combined (bitwise OR'd) with DT_SINGLELINE.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DT_CALCRECTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Determines the width and height of the rectangle. If there are multiple lines of text, ROLE='italic'DrawText uses the width of ROLE='italic'r (the rectangle argument) and extends the base of the rectangle to bound the last line of text. If there is only one line of text, ROLE='italic'DrawText uses a modified value for the right side of ROLE='italic'r so that it bounds the last character in the line. In both cases, ROLE='italic'DrawText returns the height of the formatted text but does not draw the text.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DT_CENTERCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Centers text horizontally.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DT_EXPANDTABSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Expands tab characters. The default number of characters per tab is eight.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DT_EXTERNALLEADINGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Includes the font external leading in line height. Normally, external leading is not included in the height of a line of text.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DT_LEFTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Aligns text flush-left.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DT_NOCLIPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Draws without clipping. ROLE='italic'DrawText is somewhat faster when DT_NOCLIP is used.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DT_NOPREFIXCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Turns off processing of prefix characters. Normally, ROLE='italic'DrawText interprets the prefix character ROLE='bold'& as a directive to underscore the character that follows, and the prefix charactersROLE='bold' && as a directive to print a single ROLE='bold'&. By specifying DT_NOPREFIX, this processing is turned off.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DT_RIGHTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Aligns text flush-right.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DT_SINGLELINECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies single line only. Carriage returns and linefeeds do not break the line.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DT_TABSTOPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Sets tab stops. Bits 15-8 (the high-order byte of the low-order word) of the ROLE='italic'format argument are the number of characters for each tab. The default number of characters per tab is eight.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DT_TOPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies top-justified text (single line only).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DT_VCENTERCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies vertically centered text (single line only).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DT_WORDBREAKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies word breaking. Lines are automatically broken between words if a word would extend past the edge of the rectangle specified by ROLE='italic'r. A carriage return/line sequence will also break the line.REMAP='Body'Note that the DT_CALCRECT, DT_EXTERNALLEADING, DT_INTERNAL, DT_NOCLIP, and DT_NOPREFIX values cannot be used with the DT_TABSTOP value.REMAP='Body'ROLE='italic'DrawText uses this DC's currently selected font, text color, and background color to draw the text. Unless the DT_NOCLIP format is used, ROLE='italic'DrawText clips the text so that it does not appear outside the given rectangle. All formatting is assumed to have multiple lines unless the DT_SINGLELINE format is given.REMAP='Body'If the selected font is too large for the specified rectangle, ROLE='italic'DrawText does not attempt to substitute a smaller font.REMAP='Body'If successful, ROLE='italic'DrawText returns ROLE='bold'true; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::GrayString, TDC::TabbedTextOut, TDC::TextOut, TRect classEllipseFORMAT="LINESPECIFIC"bool Ellipse(int x1, int y1, int x2, int y2);FORMAT="LINESPECIFIC"bool Ellipse(const TPoint& p1, const TPoint& p2);FORMAT="LINESPECIFIC"bool Ellipse(const TPoint& point, const TSize& size);FORMAT="LINESPECIFIC"bool Ellipse(const TRect& rect);REMAP='BodyNoLead'Draws and fills an ellipse on this DC using the currently selected pen and brush objects. The center of the ellipse is the center of the bounding rectangle specified either by (ROLE='italic'x1, y1)/(ROLE='italic'x2, y2) or by the ROLE='italic'rect argument. ROLE='italic'Ellipse returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false. The current position is neither used nor altered by this call.See alsoREMAP='BodyNoLead'TDC::Arc, TPoint class, TRect class, TSize classEndPathFORMAT="LINESPECIFIC"bool EndPath( );REMAP='BodyNoLead'32-bit only. Closes the path bracket and selects the path it defines into this DC. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::BeginPath, TDC::CloseFigureEnumFontFamiliesFORMAT="LINESPECIFIC"int EnumFontFamilies(const char far* family, FONTENUMPROC proc, void far* data) const;REMAP='BodyNoLead'Enumerates the fonts available to this DC in the font family specified by ROLE='italic'family. The given application-defined callback ROLE='italic'proc is called for each font in the family or until ROLE='italic'proc returns 0, and is defined asFORMAT="LINESPECIFIC"typedef int (CALLBACK* FONTENUMPROC)(CONST LOGFONT *, CONST TEXTMETRIC *, DWORD, LPARAM);REMAP='Body'ROLE='italic'data lets you pass both application-specific data and font data to ROLE='italic'proc. If successful, the call returns the last value returned by ROLE='italic'proc.See alsoREMAP='BodyNoLead'TDC::EnumFonts, LOGFONT struct, TEXTMETRIC structEnumFontsFORMAT="LINESPECIFIC"int EnumFonts(const char far* faceName, OLDFONTENUMPROC callback, void far* data) const;REMAP='BodyNoLead'Enumerates the fonts available on this DC for the given ROLE='italic'faceName. The font type, LOGFONT, and TEXTMETRIC data retrieved for each available font is passed to the user-defined ROLE='italic'callback function together with any optional, user-supplied data placed in the ROLE='italic'data buffer. The ROLE='italic'callback function can process this data in any way desired. Enumeration continues until there are no more fonts or until the ROLE='italic'callback function returns 0. If ROLE='italic'faceName is 0, ROLE='italic'EnumFonts randomly selects and enumerates one font of each available typeface. ROLE='italic'EnumFonts returns the last value returned by the ROLE='italic'callback function. Note that OLDFONTENUMPROC is defined as FONTENUMPROC for Win32 only. FONTENUMPROC is a pointer to a user-defined function and has the following prototype:FORMAT="LINESPECIFIC"int CALLBACK EnumFontsProc(LOGFONT *lplf, TEXTMETRIC *lptm, uint32 dwType, LPARAM lpData);REMAP='Body'where ROLE='italic'dwType specifies one of the following font types: DEVICE_FONTTYPE, RASTER_FONTTYPE, or TRUETYPE_FONTTYPE.See alsoREMAP='BodyNoLead'TDC::EnumFontFamilies, LOGFONT struct, TEXTMETRIC structEnumMetaFileFORMAT="LINESPECIFIC"int EnumMetaFile(const TMetaFilePict& metaFile, MFENUMPROC callback, void* data) const;REMAP='BodyNoLead'Enumerates the GDI calls within the given ROLE='italic'metaFile. Each such call is retrieved and passed to the given ROLE='italic'callback function, together with any client data from ROLE='italic'data, until all calls have been processed or a callback function returns 0. ROLE='italic'MFENUMPROC is defined asFORMAT="LINESPECIFIC"typedef int (CALLBACK* MFENUMPROC)(HDC, HANDLETABLE FAR*, METARECORD FAR*, int, LPARAM);See alsoREMAP='BodyNoLead'TDC::PlayMetaFile, METARECORD structEnumObjectsFORMAT="LINESPECIFIC"int EnumObjects(uint objectType, GOBJENUMPROC proc, void far* data) const;REMAP='BodyNoLead'Enumerates the pen or brush objects available for this DC. The parameter ROLE='italic'objectType can be either OBJ_BRUSH or OBJ_PEN. For each pen or brush found, ROLE='italic'proc, a user-defined ROLE='italic'callback function, is called until there are no more objects found or the callback function returns 0. ROLE='italic'proc is defined asFORMAT="LINESPECIFIC"typedef int (CALLBACK* GOBJENUMPROC)(LPVOID, LPARAM);REMAP='Body'Parameter ROLE='italic'data specifies an application-defined value that is passed to ROLE='italic'proc.ExcludeClipRectFORMAT="LINESPECIFIC"int ExcludeClipRect(const TRect& rect);REMAP='BodyNoLead'Creates a new clipping region for this DC. This new region consists of the current clipping region minus the given rectangle, ROLE='italic'rect. The return value indicates the new clipping region's type as follows:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='166*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'RegionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COMPLEXREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping Region has overlapping borders.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ERRORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Invalid DC.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'NULLREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping region is empty.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SIMPLEREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping region has no overlapping borders.See alsoREMAP='BodyNoLead'TDC::GetClipBox, TRect classExcludeUpdateRgnFORMAT="LINESPECIFIC"int ExcludeUpdateRgn(HWND wnd);REMAP='BodyNoLead'Prevents drawing within invalid areas of a window by excluding an updated region of this DC's window from its clipping region. The return value indicates the resulting clipping region's type as follows:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='166*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'RegionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COMPLEXREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping Region has overlapping borders.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ERRORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Invalid DC.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'NULLREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping region is empty.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SIMPLEREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping region has no overlapping borders.ExtFloodFillFORMAT="LINESPECIFIC"bool ExtFloodFill(const TPoint& point, TColor color, uint16 fillType);REMAP='BodyNoLead'Fills an area on this DC starting at ROLE='italic'point and using the currently selected brush object. The color argument specifies the color of the boundary or of the region to be filled. The fillType argument specifies the type of fill, as follows:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='94*'COLNAME='C2' COLWIDTH='281*'VALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FLOODFILLBORDERCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The fill region is bounded by the given ROLE='italic'color. This style coincides with the filling method used by ROLE='italic'FloodFill.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FLOODFILLSURFACECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The fill region is defined by the given ROLE='italic'color. Filling continues outward in all directions as long as this color is encountered. Use this style when filling regions with multicolored borders.REMAP='Body'Not every device supports ROLE='italic'ExtFloodFill, so applications should test first with ROLE='italic'TDC::ROLE='italic'GetDeviceCaps.REMAP='Body'ROLE='italic'ExtFloodFill returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::FloodFill, TDC::GetDeviceCaps, TColor class, TPoint classExtTextOutFORMAT="LINESPECIFIC"virtual bool ExtTextOut(int x, int y, uint16 options, const TRect* r, const char far* string, int count, const int far* dx = 0);FORMAT="LINESPECIFIC"bool ExtTextOut(const TPoint& p, uint16 options, const TRect* r, const char far* string, int count, const int far* dx = 0);REMAP='Body'Draws up to ROLE='italic'count characters of the given null-terminated ROLE='italic'string in the current font on this DC. If ROLE='italic'count is -1, the whole string is written.REMAP='Body'An optional rectangle ROLE='italic'r can be specified for clipping, opaquing, or both, as determined by the options value. If ROLE='italic'options is set to ETO_CLIPPED, the rectangle is used for clipping the drawn text. If ROLE='italic'options is set to ETO_OPAQUE, the current background color is used to fill the rectangle. Both options can be used if ETO_CLIPPED is OR'd with ETO_OPAQUE.REMAP='Body'The (ROLE='italic'x, ROLE='italic'y) o rROLE='italic'p arguments specify the logical coordinates of the reference point that is used to align the first character. The current text-alignment mode can be inspected with ROLE='italic'TDC::ROLE='italic'GetTextAlign and changed with ROLE='italic'TDC::ROLE='italic'SetTextAlign. By default, the current position is neither used nor altered by ROLE='italic'ExtTextOut. However, if the align mode is set to TA_UPDATECP, ROLE='italic'ExtTextOut ignores the reference point argument(s) and uses or updates the current position as the reference point.REMAP='Body'The ROLE='italic'dx argument is an optional array of values used to set the distances between the origins (upper left corners) of adjacent character cells. For example, ROLE='italic'dx[i] represents the number of logical units separating the origins of character cells ROLE='italic'i and ROLE='italic'i+ROLE='italic'1. If ROLE='italic'dx is 0, ROLE='italic'ExtTextOut uses the default inter-character spacings.REMAP='Body'ROLE='italic'ExtTextOut returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::TextOut, TDC::GetTextAlign, TDC::TabbedTextOut, TPoint, TRectFillPathFORMAT="LINESPECIFIC"bool FillPath( );REMAP='BodyNoLead'32-bit only. Closes any open figures in the current path of this DC and fills the path's interior using the current brush and polygon fill mode. After filling the interior, ROLE='italic'FillPath discards the path from this DC.REMAP='Body'ROLE='italic'FillPath returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::BeginPath, TDC::CloseFigure, TDC::StrokePath, TDC::StrokeAndFillPath, TDC::SetPolyFillModeFillRectFORMAT="LINESPECIFIC"bool FillRect(int x1, int y1, int x2, int y2, const TBrush& brush);FORMAT="LINESPECIFIC"bool FillRect(const TRect& rect, const TBrush& brush);REMAP='BodyNoLead'Fills the given rectangle on this DC using the specified brush. The fill covers the left and top borders but excludes the right and bottom borders. ROLE='italic'FillRect returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TBrush, TRectFillRgnFORMAT="LINESPECIFIC"bool FillRgn(const TRegion& region, const TBrush& brush);REMAP='BodyNoLead'Fills the given ROLE='italic'region on this DC using the specified ROLE='italic'brush. ROLE='italic'FillRgn returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::InvertRgn, TDC::PaintRgn, TBrush class, TRegion classFlattenPathFORMAT="LINESPECIFIC"bool FlattenPath( );REMAP='BodyNoLead'32-bit only. Transforms any curves in the currently selected path of this DC. All such curves are changed to sequences of linear segments. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::WidenPath, TDC::BeginPathFloodFillFORMAT="LINESPECIFIC"bool FloodFill(const TPoint& point, TColor color);REMAP='BodyNoLead'Fills an area on this DC starting at ROLE='italic'point and using the currently selected brush object. The ROLE='italic'color argument specifies the color of the boundary or of the area to be filled. Returns true if the call is successful; otherwise, returns false. ROLE='italic'FloodFill is maintained in the WIN32 API for compatibility with earlier APIs. New WIN32 applications should use ROLE='italic'TDC::ROLE='italic'ExtFloodFill.See alsoREMAP='BodyNoLead'TDC::ExtFloodFill, TColor, TPointFrameRectFORMAT="LINESPECIFIC"bool FrameRect(int x1, int x2, int y1, int y2, const TBrush& brush);FORMAT="LINESPECIFIC"bool FrameRect(const TRect& rect, const TBrush& brush);REMAP='BodyNoLead'Draws a border on this DC around the given rectangle, ROLE='italic'rect, using the given brush, ROLE='italic'brush. The height and width of the border is one logical unit. Returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TBrush class, TRect classFrameRgnFORMAT="LINESPECIFIC"bool FrameRgn(const TRegion& region, const TBrush& brush, const TPoint& p);REMAP='BodyNoLead'Draws a border on this DC around the given region, ROLE='italic'region, using the given ROLE='italic'brush, brush. The width and height of the border is specified by the ROLE='italic'p argument. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TBrush class, TRegion classGetAspectRatioFilterFORMAT="LINESPECIFIC"bool GetAspectRatioFilter(TSize& size) const;REMAP='BodyNoLead'Retrieves the setting of the current aspect-ratio filter for this DC.See alsoREMAP='BodyNoLead'TSizeGetBkColorFORMAT="LINESPECIFIC"TColor GetBkColor( ) const;REMAP='BodyNoLead'Returns the current background color of this DC.See alsoREMAP='BodyNoLead'TDC::SetBkColor, TColor classGetBkModeFORMAT="LINESPECIFIC"int GetBkMode( ) const;REMAP='BodyNoLead'Returns the background mode of this DC, either OPAQUE or TRANSPARENT.See alsoREMAP='BodyNoLead'TDC::SetBkModeGetBoundsRectFORMAT="LINESPECIFIC"bool GetBoundsRect(TRect& bounds, uint16 flags) const;REMAP='BodyNoLead'Reports in ROLE='italic'bounds the current accumulated bounding rectangle of this DC or of the Windows manager, depending on the value of ROLE='italic'flags. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.REMAP='Body'The ROLE='italic'flags argument can be DCB_RESET or DCB_WINDOWMGR or both. The ROLE='italic'flags value work as follows:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DCB_RESETCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Forces the bounding rectangle to be cleared after being set in bounds.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DCB_WINDOWMGRCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Reports the Windows current bounding rectangle rather than that of this DC.REMAP='Body'There are two bounding-rectangle accumulations, one for Windows and one for the application. ROLE='italic'GetBoundsRect returns screen coordinates for the Windows bounds, and logical units for the application bounds. The Windows accumulated bounds can be queried by an application but not altered. The application can both query and alter the DC's accumulated bounds.See alsoREMAP='BodyNoLead'TDC::SetBoundsRect, TRect classGetBrushOrgFORMAT="LINESPECIFIC"bool GetBrushOrg(TPoint& point) const;REMAP='BodyNoLead'Places in ROLE='italic'point the current brush origin of this DC. Returns ROLE='bold'true if successful; otherwise, returns false.See alsoREMAP='BodyNoLead'TPoint classGetCharABCWidthsFORMAT="LINESPECIFIC"bool GetCharABCWidths(uint firstChar, uint lastChar, ABC* abc);REMAP='BodyNoLead'Retrieves the widths of consecutive characters in the range ROLE='italic'firstChar to ROLE='italic'lastChar from the current TrueType font of this DC. The widths are reported in the array ROLE='italic'abc of ROLE='italic'ABC structures. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::GetCharWidth, ABC structGetCharWidthFORMAT="LINESPECIFIC"bool GetCharWidth(uint firstChar, uint lastChar, int* buffer);REMAP='BodyNoLead'Retrieves the widths in logical units for a consecutive sequence of characters in the current font for this DC. The sequence is specified by the inclusive range, ROLE='italic'firstChar to ROLE='italic'lastChar, and the widths are copied to the given ROLE='italic'buffer. If a character in the range is not represented in the current font, the width of the default character is assigned. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::GetCharABCWidthsGetClipBoxFORMAT="LINESPECIFIC"int GetClipBox(TRect& rect) const;FORMAT="LINESPECIFIC"TRect GetClipBox( ) const;REMAP='BodyNoLead'Places the current clip box size of this DC in ROLE='italic'rect. The clip box is defined as the smallest rectangle bounding the current clipping boundary. The return value indicates the clipping region's type as follows:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='170*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'RegionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COMPLEXREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping Region has overlapping borders.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ERRORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Invalid DC.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'NULLREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping region is empty.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SIMPLEREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping region has no overlapping borders.See alsoREMAP='BodyNoLead'TDC::ExcludeClipRect, TRect classGetClipRgnFORMAT="LINESPECIFIC"bool GetClipRgn(TRegion& region) const;REMAP='BodyNoLead'Retrieves this DC's current clip-region and, if successful, places a copy of it in the ROLE='italic'region argument. You can alter this copy without affecting the current clip-region. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TRegionGetCurrentObjectFORMAT="LINESPECIFIC"HANDLE GetCurrentObject(uint objectType) const;REMAP='BodyNoLead'Returns a handle to the currently selected object of the given ROLE='italic'objectType associated with this DC. Returns 0 if the call fails. ROLE='italic'objectType can be OBJ_PEN, OBJ_BRUSH, OBJ_PAL, OBJ_FONT, or OBJ_BITMAP.GetCurrentPositionFORMAT="LINESPECIFIC"bool GetCurrentPosition(TPoint& point) const;REMAP='BodyNoLead'Reports in ROLE='italic'point the logical coordinates of this DC's current position. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TPoint classGetDCOrgFORMAT="LINESPECIFIC"bool GetDCOrg(TPoint& point) const;REMAP='BodyNoLead'Obtains the final translation origin for this device context and places the value in ROLE='italic'point. This value specifies the offset used to translate device coordinates to client coordinates for points in an application window. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TPoint classGetDeviceCapsFORMAT="LINESPECIFIC"virtual int GetDeviceCaps(int index) const;REMAP='BodyNoLead'Used under WIN3.1 or later, ROLE='italic'GetDeviceCaps returns capability information about this DC. The ROLE='italic'index argument specifies the type of information required.GetDIBitsFORMAT="LINESPECIFIC"bool GetDIBits(const TBitmap& bitmap, uint16 startScan, uint16 numScans, void HUGE* bits, const BITMAPINFO far& info, uint16 usage);FORMAT="LINESPECIFIC"bool GetDIBits(const TBitmap& bitmap, TDib& dib);REMAP='BodyNoLead'The first version retrieves some or all of the bits from the given ROLE='italic'bitmap on this DC and copies them to the ROLE='italic'bits buffer using the DIB (device-independent bitmap) format specified by the BITMAPINFO argument, ROLE='italic'info. numScan scanlines of the bitmap are retrieved, starting at scan line ROLE='italic'startScan. The ROLE='italic'usage argument determines the format of the ROLE='italic'bmiColors member of the BITMAPINFO structure, according to the following table:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DIB_PAL_COLORSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The color table is an array of 16-bit indexes into the current logical palette.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DIB_RGB_COLORSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The color table contains literal RGB values.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DIB_PAL_INDICESCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'There is no color table for this bitmap. The DIB bits consist of indexes into the system palette. No color translation occurs. Only the BITMAPINFOHEADER portion of BITMAPINFO is filled in.REMAP='Body'In the second version of ROLE='italic'GetDIBits, the bits are retrieved from bitmap and placed in the ROLE='italic'dib.ROLE='italic'Bits data member of the given ROLE='italic'TDib argument. The ROLE='italic'BITMAPINFO argument is supplied from ROLE='italic'dib.ROLE='italic'info.REMAP='Body'ROLE='italic'GetDIBits returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::SetDIBits, TBitmap, TDib, BITMAPINFO structGetFontDataFORMAT="LINESPECIFIC"uint32 GetFontData(uint32 table, uint32 offset, void* buffer, long data);REMAP='BodyNoLead'Retrieves font-metric information from a scalable TrueType font file (specified by ROLE='italic'table and starting at ROLE='italic'offset into this table) and places it in the given ROLE='italic'buffer. data specifies the size in bytes of the data to be retrieved. If the call is successful, it returns the number of bytes set in ROLE='italic'buffer; otherwise, -1 is returned.GetGlyphOutlineFORMAT="LINESPECIFIC"uint32 GetGlyphOutline (uint chr, uint format, GLYPHMETRICS far& gm, uint32 buffSize, voidfar* buffer, const MAT2 far& mat2);REMAP='BodyNoLead'Retrieves TrueType metric and other data for the given character, ROLE='italic'chr, on this DC and places it in ROLE='italic'gm and ROLE='italic'buffer. The ROLE='italic'format argument specifies the format of the retrieved data as indicated in the following table. (A value of 0 simply fills in the ROLE='italic'GLYPHMETRICS structure but does not return glyph-outline data.)COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='38*'COLNAME='C2' COLWIDTH='336*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body.Center'1COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Retrieves the glyph bitmap.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body.Center'2COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Retrieves the curve data points in the rasterizer's native format and uses the font's design units. With this value of format, the ROLE='italic'mat2 transformation argument is ignored.REMAP='Body'The ROLE='italic'gm argument specifies the GLYPHMETRICS structure that describes the placement of the glyph in the character cell. ROLE='italic'buffSize specifies the size of buffer that receives data about the outline character. If either ROLE='italic'buffSize or ROLE='italic'buffer isROLE='italic' 0, GetGlyphOutline returns the required buffer size. Applications can rotate characters retrieved in bitmap format (format = 1) by specifying a 2 x 2 transformation matrix via the ROLE='italic'mat2 argument.REMAP='Body'ROLE='italic'GetGlyphOutline returns a positive number if the call is successful; otherwise, it returns GDI_ERROR.See alsoREMAP='BodyNoLead'TDC::GetOutlineTextMetrics, GLYPHMETRICS structGetKerningPairsFORMAT="LINESPECIFIC"int GetKerningPairs(int pairs, KERNINGPAIR far* krnPair);REMAP='BodyNoLead'Retrieves kerning pairs for the current font of this DC up to the number specified in ROLE='italic'pairs and copies them into the ROLE='italic'krnPair array of KERNINGPAIR structures. If successful, the function returns the actual number of pairs retrieved. If the font has more than ROLE='italic'pairs kerning pairs, the call fails and returns 0. The ROLE='italic'krnPair array must allow for at least ROLE='italic'pairs KERNINGPAIR structures. If ROLE='italic'krnPair is set to 0, ROLE='italic'GetKerningPairs returns the total number of kerning pairs for the current font.See alsoREMAP='BodyNoLead'KERNINGPAIR structGetMapModeFORMAT="LINESPECIFIC"int GetMapMode( ) const;REMAP='BodyNoLead'If successful, returns the current window mapping mode of this DC; otherwise, returns 0. The mapping mode defines how logical coordinates are mapped to device coordinates. It also controls the orientation of the device's x- and y-axes. The mode values are shown in the following table:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MM_ANISOTROPICCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Logical units are mapped to arbitrary units with arbitrarily scaled axes. ROLE='italic'SetWindowExtEx and ROLE='italic'SetViewportExtEx must be used to specify the desired units, orientation, and scaling.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MM_HIENGLISHCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Each logical unit is mapped to 0.001 inch. Positive x is to the right; positive y is at the top.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MM_HIMETRICCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Each logical unit is mapped to 0.01 millimeter. Positive x is to the right; positive y is at the top.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MM_ISOTROPICCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Logical units are mapped to arbitrary units with equally scaled axes; that is, one unit along the x-axis is equal to one unit along the y-axis. ROLE='italic'SetWindowExtEx and ROLE='italic'SetViewportExtEx must be used to specify the desired units and the orientation of the axes. GDI makes adjustments as necessary to ensure that the x and y units remain the same size (e.g., if you set the window extent, the viewport is adjusted to keep the units isotropic).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MM_LOENGLISHCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Each logical unit is mapped to 0.01 inch. Positive ROLE='italic'x is to the right; positive ROLE='italic'y is at the top.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MM_LOMETRICCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Each logical unit is mapped to 0.1 millimeter. Positive ROLE='italic'x is to the right; positive ROLE='italic'y is at the top.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MM_TEXTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Each logical unit is mapped to one device pixel. Positive ROLE='italic'x is to the right; positive ROLE='italic'y is at the bottom.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MM_TWIPSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Each logical unit is mapped to one twentieth of a printer's point (1/1440 inch). Positive ROLE='italic'x is to the right; positive ROLE='italic'y is at the top.See alsoREMAP='BodyNoLead'TDC::SetMapModeGetNearestColorFORMAT="LINESPECIFIC"TColor GetNearestColor(TColor Color) const;REMAP='BodyNoLead'Returns the color nearest to the given ROLE='italic'Color argument for the current palette of this DC.See alsoREMAP='BodyNoLead'TColorGetOutlineTextMetricsFORMAT="LINESPECIFIC"uint32 GetOutlineTextMetrics(uint data, OUTLINETEXTMETRIC far& otm);FORMAT="LINESPECIFIC"uint16 GetOutlineTextMetrics(uint data, OUTLINETEXTMETRIC far& otm);REMAP='BodyNoLead'Retrieves metric information for TrueType fonts on this DC and copies it to the given array of OUTLINETEXTMETRIC structures, ROLE='italic'otm. This structure contains a TEXTMETRIC and several other metric members, as well as four string-pointer members for holding family, face, style, and full font names. Since memory must be allocated for these variable-length strings in addition to the font metric data, you must pass (with the ROLE='italic'data argument) the total number of bytes required for the retrieved data. If ROLE='italic'GetOutlineTextMetrics is called with ROLE='italic'otm = 0, the function returns the total buffer size required. You can then assign this value to ROLE='italic'data in subsequent calls.REMAP='Body'Returns nonzero if the call is successful; otherwise, returns 0.See alsoREMAP='BodyNoLead'TDC::GetTextMetrics, OUTLINETEXTMETRIC struct, TEXTMETRIC structGetPixelFORMAT="LINESPECIFIC"TColor GetPixel(int x, int y) const;FORMAT="LINESPECIFIC"TColor GetPixel(const TPoint& point) const;REMAP='BodyNoLead'Returns the color of the pixel at the given location.See alsoREMAP='BodyNoLead'TDC::SetPixel, TPoint classGetPolyFillModeFORMAT="LINESPECIFIC"int GetPolyFillMode( ) const;REMAP='BodyNoLead'Returns the current polygon-filling mode for this DC, either ALTERNATE or WINDING.See alsoREMAP='BodyNoLead'TDC::SetPolyFillModeGetROP2( )FORMAT="LINESPECIFIC"int GetROP2( ) const;REMAP='BodyNoLead'Returns the current drawing (raster operation) mode of this DC.See alsoREMAP='BodyNoLead'TDC::SetROP2GetStretchBltModeFORMAT="LINESPECIFIC"int GetStretchBltMode( ) const;REMAP='BodyNoLead'Returns the current stretching mode for this DC: BLACKONWHITE, COLORONCOLOR, or WHITEONBLACK. The stretching mode determines how bitmaps are stretched or compressed by the ROLE='italic'StretchBlt function.See alsoREMAP='BodyNoLead'TDC::SetStretchBltMode, TDC::StretchBltGetSystemPaletteEntriesFORMAT="LINESPECIFIC"uint GetSystemPaletteEntries(int start, int num, PALETTEENTRY far* entries) const;REMAP='BodyNoLead'Retrieves a range of up to ROLE='italic'num palette entries, starting at ROLE='italic'start, from the system palette to the ROLE='italic'entries array of PALETTEENTRY structures. Returns the actual number of entries transferred.See alsoREMAP='BodyNoLead'PALETTEENTRY structGetSystemPaletteUseFORMAT="LINESPECIFIC"uint GetSystemPaletteUse( ) const;REMAP='BodyNoLead'Determines whether this DC has access to the full system palette. Returns SYSPAL_NOSTATIC or SYSPAL_STATIC.See alsoREMAP='BodyNoLead'TDC::SetSystemPaletteUseGetTabbedTextExtentFORMAT="LINESPECIFIC"bool GetTabbedTextExtent(const char far* string, int stringLen, int numPositions, const int far* positions, TSize& size) const;FORMAT="LINESPECIFIC"TSize GetTabbedTextExtent(const char far* string, int stringLen, int numPositions, const int far* positions) const;REMAP='BodyNoLead'Computes the extent (width and height) in logical units of the text line consisting of ROLE='italic'stringLen characters from the null-terminated ROLE='italic'string. The extent is calculated from the metrics of the current font or this DC, but ignores the current clipping region. In the first version of ROLE='italic'GetTabbedTextExtent, the extent is returned in ROLE='italic'size; in the second version, the extent is the returned ROLE='italic'TSize object. Width is ROLE='italic'size.x and width is ROLE='italic'size.ROLE='italic'y.REMAP='Body'The width calculation includes the spaces implied by any tab codes in the string. Such tab codes are interpreted using the ROLE='italic'numPositions and ROLE='italic'positions arguments. The ROLE='italic'positions array specifies ROLE='italic'numPositions tab stops given in device units. The tab stops must have strictly increasing values in the array. If ROLE='italic'numPositions and ROLE='italic'positions are both 0, tabs are expanded to eight times the average character width. If ROLE='italic'numPositions is 1, all tab stops are taken to be ROLE='italic'positions[0] apart.REMAP='Body'If kerning is being applied, the sum of the extents of the characters in a string might not equal the extent of the string.See alsoREMAP='BodyNoLead'TDC::TabbedTextOut, TDC::GetTextExtent, TSize classGetTextAlignFORMAT="LINESPECIFIC"uint GetTextAlign( ) const;REMAP='BodyNoLead'If successful, returns the current text-alignment flags for this DC; otherwise, returns the value GDI_ERROR. The text-alignment flags determine how ROLE='italic'TDC::TextOut and ROLE='italic'TDC::ExtTextOut align text strings in relation to the first character's screen position. ROLE='italic'GetTextAlign returns certain combinations of the flags listed in the following table:COLS='4' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='78*'COLNAME='C3' COLWIDTH='206*'COLNAME='C4' COLWIDTH='0*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'COLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Heading'VALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TA_BASELINECOLNAME='C2' MOREROWS='8' NAMEEND='C4' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The reference point will be on the baseline of the text.REMAP='Tbl.Body'The reference point will be on the bottom edge of the bounding rectangle.REMAP='Tbl.Body'The reference point will be on the top edge of the bounding rectangle.REMAP='Tbl.Body'The reference point will be aligned horizontally with the center of the bounding rectangle.REMAP='Tbl.Body'The reference point will be on the left edge of the bounding rectangle.REMAP='Tbl.Body'The reference point will be on the right edge of the bounding rectangle.REMAP='Tbl.Body'The current position is not updated after each text output call.REMAP='Tbl.Body'The current position is updated after each text output call.REMAP='Tbl.Body'When the current font has a vertical default baseline (as with Kanji) the following values replace TA_BASELINE and TA_CENTER:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TA_BOTTOMCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TA_TOPCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TA_CENTERCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TA_LEFTCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TA_RIGHTCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TA_NOUPDATECPCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TA_UPDATECPCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VTA_BASELINECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'The reference point will be on the baseline of the text.COLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VTA_CENTERCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'The reference point will be aligned vertically with the center of the bounding rectangle.COLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'REMAP='Body'The text-alignment flags are not necessarily single bit-flags and might be equal to 0. The flags must be examined in groups of the following related flags:MARK='bullet'REMAP='Bullet1'TA_LEFT, TA_RIGHT, and TA_CENTERREMAP='Bullet1'TA_BOTTOM, TA_TOP, and TA_BASELINEREMAP='Bullet1'TA_NOUPDATECP and TA_UPDATECPREMAP='Body'If the current font has a vertical default baseline (as with Kanji), these are groups of related flags:MARK='bullet'REMAP='Bullet1'TA_LEFT, TA_RIGHT, and VTA_BASELINEREMAP='Bullet1'TA_BOTTOM, TA_TOP, and VTA_CENTERREMAP='Bullet1'TA_NOUPDATECP and TA_UPDATECPREMAP='Body'To verify that a particular flag is set in the return value of this function, the application must perform the following steps:NUMERATION='ARABIC' CONTINUATION="RESTARTS" INHERITNUM="IGNORE"REMAP='.NumList1'Apply the bitwise OR operator to the flag and its related flags.REMAP='.NumList1'Apply the bitwise AND operator to the result and the return value.REMAP='.NumList1'Test for the equality of this result and the flag.REMAP='Body'The following example shows a method for determining which horizontal alignment flag is set:FORMAT="LINESPECIFIC"switch ((TA_LEFT | TA_RIGHT | TA_CENTER) & dc.GetTextAlign( )) {
case TA_LEFT:
...
case TA_RIGHT:
...
case TA_CENTER:
...
}See alsoREMAP='BodyNoLead'TDC::SetTextAlign, TDC::TextOut, TDC::ExtTextOutGetTextCharacterExtraFORMAT="LINESPECIFIC"int GetTextCharacterExtra( ) const;REMAP='BodyNoLead'If successful, returns the current intercharacter spacing, in logical units, for this DC; otherwise, returns INVALID_WIDTH.See alsoREMAP='BodyNoLead'TDC::SetTextCharacterExtraGetTextColorFORMAT="LINESPECIFIC"TColor GetTextColor( ) const;REMAP='BodyNoLead'Returns the current text color of this DC. The text color determines the color displayed by ROLE='italic'TDC::TextOut and ROLE='italic'TDC::ExtTextOut.See alsoREMAP='BodyNoLead'TDC::SetTextColor, TDC::TextOut, TDC::ExtTextOut, TColorGetTextExtentFORMAT="LINESPECIFIC"bool GetTextExtent(const char far* string, int stringLen, TSize& size);FORMAT="LINESPECIFIC"TSize GetTextExtent(const char far* string, int stringLen);REMAP='BodyNoLead'Computes the extent (width and height) in logical units of the text line consisting of ROLE='italic'stringLen characters from the null-terminated ROLE='italic'string. The extent is calculated from the metrics of the current font or this DC, but ignores the current clipping region. In the first version of ROLE='italic'GetTextExtent the extent is returned in ROLE='italic'size; in the second version, the extent is the returned ROLE='italic'TSize object. Width is ROLE='italic'size.x and height is ROLE='italic'size.y.REMAP='Body'If kerning is being applied, the sum of the extents of the characters in a string might not equal the extent of the string.See alsoREMAP='BodyNoLead'TSize classGetTextFaceFORMAT="LINESPECIFIC"int GetTextFace(int count, char far* facename) const;REMAP='BodyNoLead'Retrieves the typeface name for the current font on this DC. Up to ROLE='italic'count characters of this name are copied to ROLE='italic'facename. If successful, ROLE='italic'GetTextFace returns the number of characters actually copied; otherwise, it returns 0.See alsoREMAP='BodyNoLead'TDC::GetTextAlign, TDC::GetTextMetricsGetTextMetricsFORMAT="LINESPECIFIC"bool GetTextMetrics(TEXTMETRIC far& metrics) const;REMAP='BodyNoLead'Fills the ROLE='italic'metrics structure with metrics data for the current font on this DC. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TEXTMETRIC structGetViewportExtFORMAT="LINESPECIFIC"bool GetViewportExt(TSize& extent) const;FORMAT="LINESPECIFIC"TSize GetViewportExt( ) const;REMAP='BodyNoLead'The first version retrieves this DC's current viewport's x- and y-extents (in device units) and places the values in ROLE='italic'extent. This version returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false. The second version returns only these x- and y-extents.REMAP='Body'The ROLE='italic'extent value determines the amount of stretching or compression needed in the logical coordinate system to fit the device coordinate system. ROLE='italic'extent also determines the relative orientation of the two coordinate systems.See alsoREMAP='BodyNoLead'TDC::SetViewportExt, TSize classGetViewportOrgFORMAT="LINESPECIFIC"bool GetViewportOrg(TPoint& point) const;FORMAT="LINESPECIFIC"TPoint GetViewportOrg( ) const;REMAP='BodyNoLead'The first version sets in the ROLE='italic'point argument the x- and y-extents (in device-units) of this DC's viewport. It returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false. The second version returns the x- and y-extents (in device-units) of this DC's viewport.See alsoREMAP='BodyNoLead'TDC::SetViewportOrg, TDC::OffsetViewportOrg, TPoint classGetWindowExtFORMAT="LINESPECIFIC"bool GetWindowExt(TSize& extent) const;FORMAT="LINESPECIFIC"TSize GetWindowExt( ) const;REMAP='BodyNoLead'Retrieves this DC's window current x- and y-extents (in device units). The first version places the values in ROLE='italic'extent and returns true if the call is successful; otherwise, it returns false. The second version returns the current extent values. The ROLE='italic'extent value determines the amount of stretching or compression needed in the logical coordinate system to fit the device coordinate system. ROLE='italic'extent also determines the relative orientation of the two coordinate systems.See alsoREMAP='BodyNoLead'TDC::SetWindowExt, TSize classGetWindowOrgFORMAT="LINESPECIFIC"bool GetWindowOrg(TPoint& point) const;FORMAT="LINESPECIFIC"TPoint GetWindowOrg( ) const;REMAP='BodyNoLead'Places in ROLE='italic'point the x- and y-coordinates of the origin of the window associated with this DC. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::SetWindowOrg, TDC::OffsetWindowOrg, TPoint classGrayStringFORMAT="LINESPECIFIC"virtual bool GrayString(const TBrush& brush, GRAYSTRINGPROC outputFunc, const char far* string, int count, const TRect& r);REMAP='BodyNoLead'Draws in the given rectangle (ROLE='italic'r) up to ROLE='italic'count characters of gray text from string using the given brush, ROLE='italic'brush, and the current font for this DC. If ROLE='italic'count is -1 and ROLE='italic'string is null-terminated, the whole string is written. The rectangle must be specified in logical units. If ROLE='italic'brush is 0, the text is grayed with the same brush used to draw window text on this DC. Gray text is primarily used to indicate disabled commands and menu items.REMAP='Body'ROLE='italic'GrayString writes the selected text to a memory bitmap, grays the bitmap, then displays the result. The graying is performed regardless of the current brush and background color.REMAP='Body'The ROLE='italic'outputFunc pointer to a function can specify the procedure instance of an application-supplied drawing function and is defined asFORMAT="LINESPECIFIC"typedef BOOL (CALLBACK* GRAYSTRINGPROC)(HDC, LPARAM, int);REMAP='Body'If ROLE='italic'outputFunc is 0, ROLE='italic'GrayString uses ROLE='italic'TextOut and ROLE='italic'string is assumed to be a normal, null-terminated character string. If ROLE='italic'string cannot be handled by ROLE='italic'TextOut (for example, the string is stored as a bitmap), you must provide a suitable drawing function via ROLE='italic'outputFunc.REMAP='Body'If the device supports a solid gray color, it is possible to draw gray strings directly without using GraySring. Call ROLE='italic'GetSysColor to find the color value; for example, ROLE='italic'G of COLOR_GRAYTEXT. If ROLE='italic'G is nonzero (non-black), you can set the text color with ROLE='italic'SetTextColor(ROLE='italic'G) and then use any convenient text-drawing function.REMAP='Body'ROLE='italic'GrayString returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false. Failure can result if ROLE='italic'TextOut or ROLE='italic'outputFunc return false, or if there is insufficient memory to create the bitmap.See alsoREMAP='BodyNoLead'TDC::TextOut, TBrush class, TRect classoperator HDC( )FORMAT="LINESPECIFIC"operator HDC( ) const{return Handle;}REMAP='BodyNoLead'Typecasting operator. Converts a pointer to type HDC (the data type representing the handle to a DC).IntersectClipRectFORMAT="LINESPECIFIC"int IntersectClipRect(const TRect& rect);REMAP='BodyNoLead'Creates a new clipping region for this DC's window by forming the intersection of the current region with the rectangle specified by ROLE='italic'rect. The return value indicates the resulting clipping region's type as follows:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='168*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'RegionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COMPLEXREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping Region has overlapping borders.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ERRORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Invalid DC.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'NULLREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping region is empty.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SIMPLEREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping region has no overlapping borders.See alsoREMAP='BodyNoLead'TDC::GetClipBox, TRect classInvertRectFORMAT="LINESPECIFIC"bool InvertRect(int x1, int x2, int y1, int y2);FORMAT="LINESPECIFIC"bool InvertRect(const TRect& rect);REMAP='BodyNoLead'Inverts the given rectangle, ROLE='italic'rect, on this DC. On monochrome displays, black and white pixels are interchanged. On color displays, inversion depends on how the colors are generated for particular displays. Calling ROLE='italic'InvertRect an even number of times restores the original colors. ROLE='italic'InvertRect returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TRect classInvertRgnFORMAT="LINESPECIFIC"bool InvertRgn(const TRegion& region);REMAP='BodyNoLead'Inverts the given ROLE='italic'region, on this DC. On monochrome displays, black and white pixels are interchanged. On color displays, inversion depends on how the colors are generated for particular displays. Calling ROLE='italic'InvertRegion an even number (n>=2 ) of times restores the original colors. Returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::PaintRgn, TDC::FillRgn, TRegion classLineToFORMAT="LINESPECIFIC"bool LineTo(int x, int y);FORMAT="LINESPECIFIC"bool LineTo(const TPoint& point);REMAP='BodyNoLead'Draws a line on this DC using the current pen object. The line is drawn from the current position up to, but not including, the given end point, which is specified by (ROLE='italic'x, y) or by ROLE='italic'point. If the call is successful, ROLE='italic'LineTo returns ROLE='bold'true and the current point is reset to ROLE='italic'point; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TPointLPtoDPFORMAT="LINESPECIFIC"bool LPtoDP(TPoint* points, int count = 1) const;REMAP='BodyNoLead'Converts each of the ROLE='italic'count points in the ROLE='italic'points array from logical points to device points. The conversion depends on this DC's current mapping mode and the settings of its window and viewport origins and extents. Returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::DPtoLP, TPointMaskBltFORMAT="LINESPECIFIC"bool MaskBlt(const TRect& dst, const TDC& srcDC, const TPoint& src, const TBitmap& maskBm, const TPoint& maskPos, uint32 rop=SRCCOPY);REMAP='BodyNoLead'Copies a bitmap from the given source DC to this DC. ROLE='italic'MaskBlt combines the color data from source and destination bitmaps using the given mask and raster operation. The srcDC argument specifies the DC from which the source bitmap will be copied. The destination bitmap is given by the rectangle, ROLE='italic'dst. The source bitmap has the same width and height as ROLE='italic'dst. The ROLE='italic'src argument specifies the logical coordinates of the upper left corner of the source bitmap. The ROLE='italic'maskBm argument specifies a monochrome mask bitmap. An error will occur if ROLE='italic'maskBm is not monochrome. The ROLE='italic'maskPos argument gives the upper left corner coordinates of the mask. The raster-operation code, ROLE='italic'rop, specifies how the source, mask, and destination bitmaps combine to produce the new destination bitmap. The raster-operation codes are as follows:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Value of ropCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BLACKNESSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Fill ROLE='italic'dst with index-0 color of physical palette (default is black).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DSTINVERTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Invert ROLE='italic'dst.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MERGECOPYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Merge the colors of source with mask with Boolean AND.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MERGEPAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Merge the colors of inverted-source with the colors of ROLE='italic'dst using Boolean OR.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'NOTSRCCOPYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Copy inverted-source to ROLE='italic'dst.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'NOTSRCERASECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Combine the colors of source and ROLE='italic'dst using Boolean OR, then invert result.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PATCOPYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Copy mask to ROLE='italic'dst.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PATINVERTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Combine the colors of mask with the colors of ROLE='italic'dst using Boolean XOR.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PATPAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Combine the colors of mask with the colors of inverted-source using Boolean OR, then combine the result with the colors of ROLE='italic'dst using Boolean OR.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SRCANDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Combine the colors of source and ROLE='italic'dst using the Boolean AND.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SRCCOPYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Copy source directly to ROLE='italic'dst.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SRCERASECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Combine the inverted colors of ROLE='italic'dst with the colors of source using Boolean AND.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SRCPAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Combine the colors of source and ROLE='italic'dst using Boolean OR.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WHITENESSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Fill ROLE='italic'dst with index-1 color of physical palette (default is white).REMAP='Body'If ROLE='italic'rop indicates an operation that excludes the source bitmap, the ROLE='italic'srcDC argument must be 0. A value of 1 in the mask indicates that the destination and source pixel colors should be combined using the high-order word of ROLE='italic'rop. A value of 0 in the mask indicates that the destination and source pixel colors should be combined using the low-order word of ROLE='italic'rop. If the mask rectangle is smaller than ROLE='italic'dst, the mask pattern will be suitably duplicated.REMAP='Body'When recording an enhanced metafile, an error occurs if the source DC identifies the enhanced metafile DC.REMAP='Body'If a rotation or shear transformation is in effect for the source DC when ROLE='italic'MaskBlt is called, an error occurs. Other transformations are allowed. If necessary, ROLE='italic'MaskBlt will adjust the destination and mask color formats to match that of the source bitmaps. Before using ROLE='italic'MaskBlt, an application should call ROLE='italic'GetDeviceCaps to determine if the source and destination DCs support ROLE='italic'MaskBlt.REMAP='Body'ROLE='italic'MaskBlt returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::BitBlt, TDC::PlgBlt, TDC::GetDeviceCaps, TBitmap class, TPoint class, TRect classModifyWorldTransformFORMAT="LINESPECIFIC"bool ModifyWorldTransform(XFORM far& xform, uint32 mode);REMAP='BodyNoLead'Changes the current world transformation for this DC using the given ROLE='italic'xform and ROLE='italic'mode arguments. ROLE='italic'mode determines how the given XFORM structure is applied, as listed below.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='108*'COLNAME='C2' COLWIDTH='266*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MWT_IDENTITYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Resets the current world transformation using the identity matrix. If this mode is specified, the XFORM structure pointed to by ROLE='italic'lpXform is ignored.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MWT_LEFTMULTIPLYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Multiplies the current transformation by the data in the XFORM structure. (The data in the XFORM structure becomes the left multiplicand, and the data for the current transformation becomes the right multiplicand.)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MWT_RIGHTMULTIPLYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Multiplies the current transformation by the data in the XFORM structure. (The data in the XFORM structure becomes the right multiplicand, and the data for the current transformation becomes the left multiplicand.) ROLE='italic'ModifyWorldTransform returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::SetWorldTransform, XFORM structMoveToFORMAT="LINESPECIFIC"bool MoveTo(int x, int y);FORMAT="LINESPECIFIC"bool MoveTo(const TPoint& point);FORMAT="LINESPECIFIC"bool MoveTo(const TPoint& point, TPoint& oldPoint);REMAP='BodyNoLead'Moves the current position of this DC to the given x- and y-coordinates or to the given ROLE='italic'point. The third version sets the previous current position in ROLE='italic'oldPoint. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TPoint classOffsetClipRgnFORMAT="LINESPECIFIC"int OffsetClipRgn(const TPoint& delta);REMAP='BodyNoLead'Moves the clipping region of this DC by the x- and y-offsets specified in ROLE='italic'delta. The return value indicates the resulting clipping region's type as follows:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='167*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'RegionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COMPLEXREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping region has overlapping borders.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ERRORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Invalid DC.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'NULLREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping region is empty.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SIMPLEREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping region has no overlapping borders.See alsoREMAP='BodyNoLead'TDC::GetClipBox, TPoint classOffsetViewportOrgFORMAT="LINESPECIFIC"virtual bool OffsetViewportOrg(const TPoint& delta, TPoint* oldOrg = 0);REMAP='BodyNoLead'Modifies this DC's viewport origin relative to the current values. The ROLE='italic'delta x- and y-components are added to the previous origin and the resulting point becomes the new viewport origin. The previous origin is saved in ROLE='italic'oldOrg. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::SetViewportOrg, TDC::GetViewportOrg, TPoint classOffsetWindowOrgFORMAT="LINESPECIFIC"bool OffsetWindowOrg(const TPoint& delta, TPoint* oldOrg = 0);REMAP='BodyNoLead'Modifies this DC's window origin relative to the current values. The ROLE='italic'deltaROLE='italic' x- and ROLE='italic'y-components are added to the previous origin and the resulting point becomes the new window origin. The previous origin is saved in ROLE='italic'oldOrg. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::GetWindowOrg, TDC::SetWindowOrg, TPoint classOWLFastWindowFrameFORMAT="LINESPECIFIC"void OWLFastWindowFrame(TBrush& brush, TRect& rect, int xWidth, int yWidth)REMAP='BodyNoLead'Draws a frame of the specified size and thickness with the given brush. The old brush is restored after completion.See alsoREMAP='BodyNoLead'TBrush, TRectPaintRgnFORMAT="LINESPECIFIC"bool PaintRgn(const TRegion& region);REMAP='BodyNoLead'Paints (fills) the given ROLE='italic'region on this DC using the currently selected brush. Returns ROLE='bold'true if the call is successful; otherwise, returns, ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::FillRgn, TDC::SelectObject, TRegion classPatBltFORMAT="LINESPECIFIC"bool PatBlt(int x, int y, int w, int h, uint32 rop=PATCOPY);FORMAT="LINESPECIFIC"bool PatBlt(const TRect& dst, uint32 rop=PATCOPY);REMAP='BodyNoLead'Paints the given rectangle using the currently selected brush for this DC. The rectangle can be specified by its upper left coordinates (ROLE='italic'x, y), width ROLE='italic'w, and height ROLE='italic'h, or by a single ROLE='italic'TRect argument. The raster-operation code, ROLE='italic'rop, determines how the brush and surface color(s) are combined, as explained in the following table:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='74*'COLNAME='C2' COLWIDTH='276*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PATCOPYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Copies pattern to destination bitmap.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PATINVERTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Combines destination bitmap with pattern using the Boolean OR operator.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DSTINVERTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Inverts the destination bitmap.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BLACKNESSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Turns all output to binary 0s.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WHITENESSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Turns all output to binary 1s.REMAP='Body'The allowed values of ROLE='italic'rop for this function are a limited subset of the full 256 ternary raster-operation codes; in particular, an operation code that refers to a source cannot be used with ROLE='italic'PatBlt.REMAP='Body'Not all devices support the ROLE='italic'PatBlt function, so applications should call ROLE='italic'TDC::GetDeviceCaps to check the features supported by this DC.REMAP='Body'ROLE='italic'PatBlt returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::GetDeviceCaps, TRect classPathToRegionFORMAT="LINESPECIFIC"HRGN PathToRegion( );REMAP='BodyNoLead'If successful, returns a region created from the closed path in this DC; otherwise, returns 0.PieFORMAT="LINESPECIFIC"bool Pie(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);FORMAT="LINESPECIFIC"bool Pie(const TRect& rect, const TPoint& start, const TPoint& end);REMAP='BodyNoLead'Using the currently selected pen and brush objects, draws and fills a pie-shaped wedge by drawing an elliptical arc whose center and end points are joined by lines. The center of the ellipse is the center of the rectangle specified either by (ROLE='italic'x1, ROLE='italic'y1)/(ROLE='italic'x2, ROLE='italic'y2) or by the rect argument. The starting/ending points of pie are specified either by (ROLE='italic'x3, ROLE='italic'y3)/(ROLE='italic'x4, ROLE='italic'y4) or by the points ROLE='italic'Start and ROLE='italic'End. Returns true if the call is successful; otherwise, returns false. The current position is neither used nor altered by this call.See alsoREMAP='BodyNoLead'TDC::Chord, TDC::Arc, TPoint class, TRegion class, TRect classPlayMetaFileFORMAT="LINESPECIFIC"bool PlayMetaFile(const TMetaFilePict& metaFile);REMAP='BodyNoLead'Plays the contents of the given ROLE='italic'metaFile on this DC. The metafile can be played any number of times. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See also classREMAP='BodyNoLead'TDC::EnumMetaFile, TDC::PlayMetaFileRecord, TMetaFilePictPlayMetaFileRecordFORMAT="LINESPECIFIC"void PlayMetaFileRecord(HANDLETABLE far& Handletable, METARECORD far& metaRecord, int count);REMAP='BodyNoLead'Plays the metafile record given in ROLE='italic'metaRecord to this DC by executing the GDI function call contained in that record. ROLE='italic'Handletable specifies the object handle table to be used. ROLE='italic'count specifies the number of handles in the table.See alsoREMAP='Body'TDC::PlayMetaFile, TDC::EnumMetaFile, HANDLETABLE struct, METARECORD structPlgBltFORMAT="LINESPECIFIC"bool PlgBlt(const TPoint& dst, const TDC& srcDC, const TRect& src, const TBitmap& maskBm, const TPoint& maskPos, uint32 rop=SRCCOPY);REMAP='BodyNoLead'32-bit only. Performs a bit-block transfer from the given source DC to this DC. Color bits are copied from the ROLE='italic'src rectangle on ROLE='italic'srcDC, the source DC, to the parallelogram ROLE='italic'dst on this DC. The ROLE='italic'dst array specifies three points A,B, and C as the corners of the destination parallelogram. The fourth point D is generated internally from the vector equation D = B + C - A. The upper left corner of ROLE='italic'src is mapped to A, the upper right corner to B, the lower left corner to C, and the lower right corner to D. An optional monochrome bitmap can be specified by the ROLE='italic'maskBm argument. (If ROLE='italic'maskBm specifies a valid monochrome bitmap, ROLE='italic'PlgBlt uses it to mask the colorbits in the source rectangle. An error occurs if ROLE='italic'maskBm is not a monochrome bitmap.) ROLE='italic'maskPos specifies the upper left corner coordinates of the mask bitmap. With a valid ROLE='italic'maskBm, a value of 1 in the mask causes the source color pixel to be copied to ROLE='italic'dst; a value of 0 in the mask indicates that the corresponding color pixel in ROLE='italic'dst will not be changed. If the mask rectangle is smaller than ROLE='italic'dst, the mask pattern will be suitably duplicated.REMAP='Body'The destination coordinates are transformed according to this DC (the destination DC). The source coordinates are transformed according to the source DC. If a rotation or shear transformation is in effect for the source DC when ROLE='italic'PlgBlt is called, an error occurs. Other transformations, such as scaling, translation, and reflection are allowed. The stretching mode of this DC (the destination DC) determines how ROLE='italic'PlgBlt will stretch or compress the pixels if necessary. When recording an enhanced metafile, an error occurs if the source DC identifies the enhanced metafile DC.REMAP='Body'If necessary, ROLE='italic'PlgBlt adjusts the source color formats to match that of the destination. An error occurs if the source and destination DCs are incompatible. Before using ROLE='italic'PlgBlt, an application should call ROLE='italic'GetDeviceCaps to determine if the source and destination DCs are compatible.REMAP='Body'ROLE='italic'PlgBlt returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::GetDeviceCaps, TDC::MaskBlt, TDC::SetStretchBltMode, TDC::StretchBlt, TBitmap class, TPoint class, TRect classPolyBezierFORMAT="LINESPECIFIC"bool PolyBezier(const TPoint* points, int count);REMAP='BodyNoLead'Draws one or more connected cubic Bezier splines through the points specified in the ROLE='italic'points array using the currently selected pen object. The first spline is drawn from the first to the fourth point of the array using the second and third points as controls. Subsequent splines, if any, each require three additional points in the array, since the previous end point is taken as the next spline's start point. The ROLE='italic'count argument ( >= 4 ) specifies the total number of points needed to specify the complete drawing. To draw n splines, ROLE='italic'count must be set to (3n + 1). Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false. The current position is neither used nor altered by this call. The resulting figure is not filled.See alsoREMAP='BodyNoLead'TDC::PolyBezierTo, TPointPolyBezierToFORMAT="LINESPECIFIC"bool PolyBezierTo(const TPoint* points, int count);REMAP='BodyNoLead'Draws one or more connected cubic Beziers plines through the points specified in the ROLE='italic'points array using the currently selected pen object. The first spline is drawn from the current position to the third point of the array using the first and second points as controls. Subsequent splines, if any, each require three additional points in the array, since the previous end point is taken as the next spline's start point. The ROLE='italic'count argument ( >= 4 ) specifies the total number of points needed to specify the complete drawing. To draw ROLE='italic'n splines, ROLE='italic'count must be set to ROLE='italic'3n. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false. The current position is moved to the end point of the final Bezier curve. The resulting figure is not filled.See alsoREMAP='BodyNoLead'TDC::PolyBezier, TPoint classPolyDrawFORMAT="LINESPECIFIC"bool PolyDraw(const TPoint* points, uint8* types, int count);REMAP='BodyNoLead'Using the currently selected pen object, draws one or more possibly disjoint sets of line segments or Bezier splines or both on this DC. The ROLE='italic'count points in the ROLE='italic'points array provide the end points for each line segment or the end points and control points for each Bezier spline or both. The ROLE='italic'count BYTEs in the ROLE='italic'types array determine as follows how the corresponding point in ROLE='italic'points is to be interpreted:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ByteCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PT_BEZIERTOCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'This point is a control or end point for a Bezier spline. PT_BEZIERTO types must appear in sets of three: the current position is the Bezier start point; the first two PT_BEZIERTO points are the Bezier control points; and the third PT_BEZIERTO point is the Bezier end point, which becomes the new current point. An error occurs if the PT_BEZIERTO types do not appear in sets of three. An end-point PT_BEZIERTO can be bit-wise OR'd with PT_CLOSEFIGURE to indicate that the current figure is to be closed by drawing a spline from this end point to the start point of the most recent disjoint figure.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PT_CLOSEFIGURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Optional flag that can be bit-wise OR'd with PT_LINETO or PT_BEZIERTO, as explained above. Closure updates the current point to the new end point.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PT_LINETOCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A line is drawn from the current position to this point, which then becomes the new current point. PT_LINETO can be bit-wise OR'd with PT_CLOSEFIGURE to indicate that the current figure is to be closed by drawing a line segment from this point to the start point of the most recent disjoint figure.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PT_MOVETOCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'This point starts a new (disjoint) figure and becomes the new current point.REMAP='Body'ROLE='italic'PolyDraw is an alternative to consecutive calls toROLE='italic' MoveTo, LineTo, Polyline, PolyBezier, and ROLE='italic'PolyBezierTo. If there is an active path invoked via ROLE='italic'BeginPath, PolyDraw will add to this path.REMAP='Body'Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::MoveTo, TDC::LineTo, TDC::PolyBezier, TDC::PolyBezierTo, TDC::Polyline, TDC::BeginPath, TPoint classPolygonFORMAT="LINESPECIFIC"bool Polygon(const TPoint* points, int count);REMAP='BodyNoLead'Using the current pen and polygon-filling mode, draws and fills on this DC a closed polygon with a number of line segments equal to ROLE='italic'count (which must be >= 2). The ROLE='italic'points array specifies the vertices of the polygon to be drawn. The polygon is automatically closed, if necessary, by drawing a line from the last to the first vertex. The current position is neither used nor altered by ROLE='italic'Polygon. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::Polyline, TDC::SetPolyFillMode, TDC::GetPolyFillMode, TPoint classPolylineFORMAT="LINESPECIFIC"bool Polyline(const TPoint* points, int count);REMAP='BodyNoLead'Using the current pen object, draws on this DC a ROLE='italic'count of line segments (there must be at least 2). The ROLE='italic'points array specifies the sequence of points to be connected. The current position is neither used nor altered by ROLE='italic'Polyline. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::Polygon, TDC::PolyPolyline, TPointPolylineToFORMAT="LINESPECIFIC"bool PolylineTo(const TPoint* points, int count);REMAP='BodyNoLead'Draws one or more connected line segments on this DC using the currently selected pen object. The first line is drawn from the current position to the first of the ROLE='italic'count points in the ROLE='italic'points array. Subsequent lines, if any, connect the remaining points in the array, with each end point providing the start point of the next segment. The final end point becomes the new current point. No filling occurs even if a closed figure is drawn. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::PolyDraw, TDC::LineTo, TPoint classPolyPolygonFORMAT="LINESPECIFIC"bool PolyPolygon(const TPoint* points, const int* PolyCounts, int count);REMAP='BodyNoLead'Using the current pen and polygon-filling mode, draws and fills on this DC the number of closed polygons indicated in ROLE='italic'count (which must be >= 2). The polygons can overlap. The points array specifies the vertices of the polygons to be drawn. ROLE='italic'PolyCounts is an array of ROLE='italic'count integers specifying the number of vertices in each polygon. Each polygon must be a closed polygon. The current position is neither used nor altered by ROLE='italic'Polygon. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::PolyPolyline, TDC::SetPolyFillMode, TDC::GetPolyFillMode, TPoint classPolyPolylineFORMAT="LINESPECIFIC"bool PolyPolyline(const TPoint* points, const int* PolyCounts, int count);REMAP='BodyNoLead'Using the currently selected pen object, draws on this DC the number of polylines (connected line segments) indicated in ROLE='italic'count. The resulting figures are not filled. The ROLE='italic'PolyCounts array provides ROLE='italic'count integers specifying the number of points (>= 2) in each polyline. The ROLE='italic'points array provides, consecutively, each of the points to be connected. Returns true if the call is successful; otherwise, returns false. The current position is neither used nor altered by this call.See alsoREMAP='BodyNoLead'TDC::Polyline, TDC::PolyPolygon, TPoint classPtVisibleFORMAT="LINESPECIFIC"bool PtVisible(const TPoint& point) const;REMAP='BodyNoLead'Returns ROLE='bold'true if the given ROLE='italic'point lies within the clipping region of this DC; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::RectVisible, TPoint classRealizePaletteFORMAT="LINESPECIFIC"int RealizePalette( );REMAP='BodyNoLead'Maps to the system palette the logical palette entries selected into this DC. Returns the number of entries in the logical palette that were mapped to the system palette.See alsoREMAP='BodyNoLead'TPalette classRectangleFORMAT="LINESPECIFIC"bool Rectangle(int x1, int y1, int x2, int y2);FORMAT="LINESPECIFIC"bool Rectangle(const TPoint& p1, const TPoint& p2);FORMAT="LINESPECIFIC"bool Rectangle(const TPoint& point, const TSize& s);FORMAT="LINESPECIFIC"bool Rectangle(const TRect& rect);REMAP='BodyNoLead'Draws and fills a rectangle of the given size on this DC with the current pen and brush objects. The current position is neither used nor altered by this call. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::RoundRect, TPoint class, TRect class, TSize classRectVisibleFORMAT="LINESPECIFIC"bool RectVisible(const TRect& rect) const;REMAP='BodyNoLead'Returns ROLE='bold'true if any part of the given rectangle, ROLE='italic'rect, lies within the clipping region of this DC; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::PtVisible, TRect classResetDCFORMAT="LINESPECIFIC"virtual bool ResetDC(DEVMODE far& devMode);REMAP='BodyNoLead'Updates this DC using data in the given ROLE='italic'devMode structure. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'DEVMODE structRestoreBrushFORMAT="LINESPECIFIC"void RestoreBrush( );REMAP='BodyNoLead'Restores the original GDI brush object to this DC.See alsoREMAP='BodyNoLead'TDC::OrgBrush, TBrush classRestoreDCFORMAT="LINESPECIFIC"virtual bool RestoreDC(int savedDC = -1);REMAP='BodyNoLead'Restores the given ROLE='italic'savedDC. Returns ROLE='bold'true if the context is successfully restored; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::SaveDCRestoreFontFORMAT="LINESPECIFIC"virtual void RestoreFont( );REMAP='BodyNoLead'Restores the original GDI font object to this DC.See alsoREMAP='BodyNoLead'TDC::OrgFont, TFont classRestoreObjectsFORMAT="LINESPECIFIC"void RestoreObjects( );REMAP='BodyNoLead'Restores all the original GDI objects to this DC.See alsoREMAP='BodyNoLead'TGdiObject classRestorePaletteFORMAT="LINESPECIFIC"void RestorePalette( );REMAP='BodyNoLead'Restores the original GDI palette object to this DC.See alsoREMAP='BodyNoLead'TDC::OrgPalette, TPalette classRestorePenFORMAT="LINESPECIFIC"void RestorePen( );REMAP='BodyNoLead'Restores the original GDI pen object to this DC.See alsoREMAP='BodyNoLead'TDC::OrgPen, TPen classRestoreTextBrushFORMAT="LINESPECIFIC"void RestoreTextBrush( );REMAP='BodyNoLead'Restores the original GDI text brush object to this DC.See alsoREMAP='BodyNoLead'TBrush classRoundRectFORMAT="LINESPECIFIC"bool RoundRect(int x1, int y1, int x2, int y2, int x3, int y3);FORMAT="LINESPECIFIC"bool RoundRect(const TPoint& p1, const TPoint& p2, const TPoint& rad);FORMAT="LINESPECIFIC"bool RoundRect(const TPoint& p, const TSize& s, const TPoint& rad);FORMAT="LINESPECIFIC"bool RoundRect(const TRect& rect, const TPoint& rad);REMAP='BodyNoLead'Draws and fills a rounded rectangle of the given size on this DC with the current pen and brush objects. The current position is neither used nor altered by this call. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::Rectangle, TPoint class, TRect class, TSize classSaveDCFORMAT="LINESPECIFIC"virtual int SaveDC( ) const;REMAP='BodyNoLead'Saves the current state of this DC on a context stack. The saved state can be restored later with ROLE='italic'RestoreDC. Returns a value specifying the saved DC or 0 if the call fails.See alsoREMAP='BodyNoLead'TDC::RestoreDCScaleViewportExtFORMAT="LINESPECIFIC"virtual bool ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom, TSize* oldExtent = 0);REMAP='BodyNoLead'Modifies this DC's viewport extents relative to the current values. The new extents are derived as follows:REMAP='Body'xNewVE = (xOldVE * xNum)/ xDenomREMAP='Body'yNewVE = (I * yNum)/ yDenomREMAP='Body'The previous extents are saved in ROLE='italic'oldExtent. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::SetViewportExt, TSize cassScaleWindowExtFORMAT="LINESPECIFIC"virtual bool ScaleWindowExt(int xNum, int xDenom, int yNum, int yDenom, TSize* oldExtent = 0);REMAP='BodyNoLead'Modifies this DC's window extents relative to the current values. The new extents are derived as follows:FORMAT="LINESPECIFIC"MOREINFO="NONE"xNewWE = (xOldWE * xNum)/ xDenom
yNewWE = (yOldWE * yNum)/ yDenomREMAP='Body'The previous extents are saved in ROLE='italic'oldExtent. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::SetWindowExt, TSizeScrollDCFORMAT="LINESPECIFIC"bool ScrollDC(int x, int y, const TRect& scroll, const TRect& clip, TRegion& updateRgn, TRect& updateRect);FORMAT="LINESPECIFIC"bool ScrollDC(const TPoint& delta, const TRect& scroll, const TRect& clip, TRegion& updateRgn, TRect& updateRect);REMAP='BodyNoLead'Scrolls a rectangle of bits horizontally by ROLE='italic'x (or ROLE='italic'delta.ROLE='italic'x in the second version) device-units, and vertically by ROLE='italic'y (or ROLE='italic'delta.ROLE='italic'y) device-units on this DC. The scrolling and clipping rectangles are specified by ROLE='italic'scroll and ROLE='italic'clip. ROLE='italic'ScrollDC provides data in the ROLE='italic'updateRgn argument telling you the region (not necessarily rectangular) that was uncovered by the scroll. Similarly, ROLE='italic'ScrollDC reports in ROLE='italic'updateRect the rectangle (in client coordinates) that bounds the scrolling update region. This is the largest area that requires repainting.REMAP='Body'Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TPoint class, TRect class, TRegion classSelectClipPathFORMAT="LINESPECIFIC"bool SelectClipPath(int mode);REMAP='BodyNoLead'Selects the current path on this DC as a clipping region, combining any existing clipping region using the specified ROLE='italic'mode as shown in the following table:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='67*'COLNAME='C2' COLWIDTH='307*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ModeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RGN_ANDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The new clipping region includes the overlapping areas of the current clipping region and the current path (intersection).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RGN_COPYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The new clipping region is the current path.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RGN_DIFFCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The new clipping region includes the areas of the current clipping region with those of the current path excluded.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RGN_ORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The new clipping region includes the combined areas of the current clipping region and the current path (union).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RGN_XORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The new clipping region includes the combined areas of the current clipping region and the current path but without the overlapping areas.REMAP='Body'Returns true if the call is successful; otherwise, returns false.SelectClipRgnFORMAT="LINESPECIFIC"int SelectClipRgn(const TRegion& region);REMAP='BodyNoLead'Selects the given ROLE='italic'region as the current clipping region for this DC. A copy of the given region is used, letting you select the same ROLE='italic'region for other DC objects. The return value indicates the new clipping region's type as follows:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='186*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'RegionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COMPLEXREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping Region has overlapping borders.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ERRORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Invalid DC.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'NULLREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping region is empty.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SIMPLEREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipping region has no overlapping borders.See alsoREMAP='BodyNoLead'TDC::OffsetClipRgn, TDC::GetClipBox, TRegion classSelectObjectFORMAT="LINESPECIFIC"void SelectObject(const TBrush& brush);FORMAT="LINESPECIFIC"void SelectObject(const TPen& pen);FORMAT="LINESPECIFIC"virtual void SelectObject(const TFont& font);FORMAT="LINESPECIFIC"void SelectObject(const TPalette& palette, bool forceBackground = false);REMAP='BodyNoLead'Selects the given GDI object into this DC. The previously selected object is saved in the appropriate ROLE='italic'OrgXXX protected data member. For a palette argument, if ROLE='italic'forceBackgound is set ROLE='bold'false (the default), the selected logical palette is a foreground palette when the window has input focus. If ROLE='italic'forceBackground is true, the selected palette is always a background palette whether the window has focus or not.See alsoREMAP='BodyNoLead'TDC::OrgBrush, TDC::OrgFont, TDC::OrgPalette, TDC::OrgPen, TDC::OrgTextBrush, TBrush class, TFont class, TPalette class, TPen class, TMemoryDC::SelectObjectSelectStockObjectFORMAT="LINESPECIFIC"virtual void SelectStockObject(int index);REMAP='BodyNoLead'Selects into the DC a predefined stock pen, brush, font, or palette.See alsoREMAP='BodyNoLead'TPrintPreviewDC::SelectStockObjectSetBkColorFORMAT="LINESPECIFIC"virtual TColor SetBkColor(TColor color);REMAP='BodyNoLead'Sets the current background color of this DC to the given ROLE='italic'color value or the nearest available. Returns 0x80000000 if the call fails.See alsoREMAP='BodyNoLead'TDC::GetBkColor, TColor classSetBkModeFORMAT="LINESPECIFIC"int SetBkMode(int mode);REMAP='BodyNoLead'Sets the background mode to the given ROLE='italic'mode argument, which can be either OPAQUE or TRANSPARENT. Returns the previous background mode.See alsoREMAP='BodyNoLead'TDC::GetBkModeSetBoundsRectFORMAT="LINESPECIFIC"uint SetBoundsRect(TRect& bounds, uint flags);REMAP='BodyNoLead'Controls the accumulation of bounding rectangle information for this DC. Depending on the value of ROLE='italic'flags, the given ROLE='italic'bounds rectangle (possibly NULL) can combine with or replace the existing accumulated rectangle. ROLE='italic'flags can be any appropriate combination of the following values:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DCB_ACCUMULATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Add ROLE='italic'bounds (rectangular union) to the current accumulated rectangle.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DCB_DISABLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Turn off bounds accumulation.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DCB_ENABLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Turn on bounds accumulation (the default setting for bounds accumulation is disabled).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DCB_RESETCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Set the bounding rectangle to empty.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DCB_SETCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Set the bounding rectangle to ROLE='italic'bounds.REMAP='Body'There are two bounding-rectangle accumulations, one for Windows and one for the application. The Windows-accumulated bounds can be queried by an application but not altered. The application can both query and alter the DC's accumulated bounds.See alsoREMAP='BodyNoLead'TDC::GetBoundsRect, TRect classSetBrushOrgFORMAT="LINESPECIFIC"bool SetBrushOrg(const TPoint& origin, TPoint* oldOrg = 0);REMAP='BodyNoLead'Sets the origin of the currently selected brush of this DC with the given ROLE='italic'origin value. The previous origin is passed to ROLE='italic'oldOrg. Returns ROLE='bold'true if successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::GetBrushOrg, TPoint classSetDIBitsFORMAT="LINESPECIFIC"bool SetDIBits(TBitmap& bitmap, uint16 startScan, uint16 numScans, const void HUGE* bits, const BITMAPINFO far& Info, uint16 usage);FORMAT="LINESPECIFIC"bool SetDIBits(TBitmap& Bitmap, const TDib& dib);REMAP='BodyNoLead'The first version sets the pixels in ROLE='italic'bitmap (the given destination bitmap on this DC) from the source DIB (device-independent bitmap) color data found in the byte array ROLE='italic'bits and the BITMAPINFO structure, ROLE='italic'Info.ROLE='italic'numScan scanlines are taken from the DIB, starting at scanline ROLE='italic'startScan. The ROLE='italic'usage argument specifies how the ROLE='italic'bmiColors member of BITMAPINFO is interpreted, as explained in ROLE='italic'TDC::ROLE='italic'GetDIBits.REMAP='Body'In the second version of ROLE='italic'SetDIBits, the pixels are set in ROLE='italic'bitmap from the given source ROLE='italic'TDib argument.REMAP='Body'ROLE='italic'SetDIBits returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::GetDIBits, TDC::SetDIBitsToDevice, TBitmap class, BITMAPINFO struct, TDib classSetDIBitsToDeviceFORMAT="LINESPECIFIC"bool SetDIBitsToDevice(const TRect& dst, const TPoint& src, uint16 startScan, uint16 numScans, const void HUGE* bits, const BITMAPINFO far& bitsInfo, uint16 usage);FORMAT="LINESPECIFIC"bool SetDIBitsToDevice(const TRect& dst, const TPoint& src, const TDib& dib);REMAP='BodyNoLead'The first version sets the pixels in ROLE='italic'dst (the given destination rectangle on this DC) from the source DIB (device-independent bitmap) color data found in the byte array ROLE='italic'bits and the BITMAPINFO structure, ROLE='italic'bitsInfo. The DIB origin is specified by the point ROLE='italic'src. numScan scanlines are taken from the DIB, starting at scanline ROLE='italic'startScan. The ROLE='italic'usage argument determines how the ROLE='italic'bmiColors member of BITMAPINFO is interpreted, as explained in ROLE='italic'TDC::GetDIBits.REMAP='Body'In the second version of ROLE='italic'SetDIBitsToDevice, the pixels are set in ROLE='italic'dst from ROLE='italic'dib, the given source ROLE='italic'TDib argument.REMAP='Body'ROLE='italic'SetDIBitsToDevice returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::GetDIBits, TDib class, TPoint class, TRect class, BITMAPINFO structSetMapModeFORMAT="LINESPECIFIC"virtual int SetMapMode(int mode);REMAP='BodyNoLead'Sets the current window mapping ROLE='italic'mode of this DC to mode. Returns the previous mapping mode value. The mapping mode defines how logical coordinates are mapped to device coordinates. It also controls the orientation of the device's x- and y-axes. See ROLE='italic'TDC::ROLE='italic'GetMapMode for a complete list of mapping modes.See alsoREMAP='BodyNoLead'TDC::GetMapModeSetMapperFlagsFORMAT="LINESPECIFIC"uint32 SetMapperFlags(uint32 flag);REMAP='BodyNoLead'Alters the algorithm used by the font mapper when mapping logical fonts to physical fonts on this DC. If successful, the function sets the current font-mapping flag to ROLE='italic'flag and returns the previous mapping flag; otherwise GDI_ERROR is returned. The mapping flag determines whether the font mapper will attempt to match a font's aspect ratio to this DC's aspect ratio. If bit 0 of ROLE='italic'flag is set to 1, the mapper selects only matching fonts. If no matching fonts exist, a new aspect ratio is chosen and a font is retrieved to match this ratio.SetMiterLimitFORMAT="LINESPECIFIC"bool SetMiterLimit(float newLimit, float* oldLimit = 0);REMAP='BodyNoLead'Sets the limit of miter joins to ROLE='italic'newLimit and puts the previous value in ROLE='italic'oldLimit. Returns ROLE='bold'true if successful; otherwise, returns ROLE='bold'false.SetPixelFORMAT="LINESPECIFIC"TColor SetPixel(int x, int y, TColor color);FORMAT="LINESPECIFIC"TColor SetPixel(const TPoint& p, TColor color);REMAP='BodyNoLead'Sets the color of the pixel at the given location to the given ROLE='italic'color and returns the pixel's previous color.See alsoREMAP='BodyNoLead'TDC::GetPixel, TColor, TPointSetPolyFillModeFORMAT="LINESPECIFIC"int SetPolyFillMode(int mode);REMAP='BodyNoLead'Sets the polygon-filling mode for this DC to the given ROLE='italic'mode value, either ALTERNATE or WINDING. Returns the previous fill mode.See alsoREMAP='BodyNoLead'TDC::GetPolyFillMode, TDC::PolygonSetROP2FORMAT="LINESPECIFIC"int SetROP2(int mode);REMAP='BodyNoLead'Sets the current foreground mix mode mode of this DC to the given ROLE='italic'mode value and returns the previous mode. The ROLE='italic'mode argument determines how the brush, pen, and existing screen image combine when filling and drawing. ROLE='italic'mode can be one of the following values:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'R2_BLACKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Pixel is always binary 0.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'R2_COPYPENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Pixel is the pen color.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'R2_MASKNOTPENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Pixel is a combination of the colors common to both the display and the inverse of the pen.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'R2_MASKPENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Pixel is a combination of the colors common to both the pen and the display.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'R2_MASKPENNOTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Pixel is a combination of the colors common to both the pen and the inverse of the display.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'R2_MERGEPENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Pixel is a combination of the pen color and the display color.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'R2_MERGENOTPENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Pixel is a combination of the display color and the inverse of the pen color.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'R2_MERGEPENNOTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Pixel is a combination of the pen color and the inverse of the display color.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'R2_NOPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Pixel remains unchanged.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'R2_NOTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Pixel is the inverse of the display color.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'R2_NOTCOPYPENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Pixel is the inverse of the pen color.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'R2_NOTMASKPENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Pixel is the inverse of the R2_MASKPEN color.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'R2_NOTMERGEPENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Pixel is the inverse of the R2_MERGEPEN color.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'R2_NOTXORPENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Pixel is the inverse of the R2_XORPEN color.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'R2_WHITECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Pixel is always binary 1.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'R2_XORPENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Pixel is a combination of the colors in the pen and in the display, but not in both.See alsoREMAP='BodyNoLead'TDC::GetROP2, TDC::GetDeviceCapsSetStretchBltModeFORMAT="LINESPECIFIC"int SetStretchBltMode(int mode);REMAP='BodyNoLead'Sets the stretching mode of this DC to the given ROLE='italic'mode value and returns the previous mode. The ROLE='italic'mode argument (BLACKONWHITE, COLORONCOLOR, or WHITEONBLACK) defines which scan lines or columns or both are eliminated by ROLE='italic'TDC::StretchBlt.See alsoREMAP='BodyNoLead'TDC::GetStretchBltMode, TDC::StretchBltSetSystemPaletteUseFORMAT="LINESPECIFIC"int SetSystemPaletteUse(int usage);REMAP='BodyNoLead'Changes the usage of this DC's system palette. The ROLE='italic'usage argument can be SYSPAL_NOSTATIC or SYSPAL_STATIC. Returns the previous usage value.See alsoREMAP='BodyNoLead'TDC::GetSystemPaletteUseSetTextAlignFORMAT="LINESPECIFIC"uint SetTextAlign(uint flags);REMAP='BodyNoLead'Sets the text-alignment flags for this DC. If successful, ROLE='italic'SetTextAlign returns the previous text-alignment flags; otherwise, it returns GDI_ERROR. The flag values are as listed for the ROLE='italic'TDC::GetTextAlign function. The text-alignment flags determine how ROLE='italic'TDC::TextOut and ROLE='italic'TDC::ExtTextOut align text strings in relation to the first character's screen position.See alsoREMAP='BodyNoLead'TDC::GetTextAlign, TDC::TextOut, TDC::ExtTextOutSetTextCharacterExtraFORMAT="LINESPECIFIC"int SetTextCharacterExtra(int extra);REMAP='BodyNoLead'If successful, sets the current intercharacter spacing to ROLE='italic'extra, in logical units, for this DC, and returns the previous intercharacter spacing. Otherwise, returns 0. If the current mapping mode is not MM_TEXT, the ROLE='italic'extra value is transformed and rounded to the nearest pixel.See alsoREMAP='BodyNoLead'TDC::GetTextCharacterExtraSetTextColorFORMAT="LINESPECIFIC"virtual TColor SetTextColor(TColor color);REMAP='BodyNoLead'Sets the current text color of this DC to the given ROLE='italic'color value. The text color determines the color displayed by ROLE='italic'TDC::TextOut and ROLE='italic'TDC::ExtTextOut.See alsoREMAP='BodyNoLead'TDC::GetTextColor, TColorSetTextJustificationFORMAT="LINESPECIFIC"bool SetTextJustification(int breakExtra, int breakCount);REMAP='BodyNoLead'When text strings are displayed using ROLE='italic'TDC::TextOut and ROLE='italic'TDC::ExtTextOut, sets the number of logical units specified in ROLE='italic'breakExtra as the total extra space to be added to the number of break characters specified in ROLE='italic'breakCount. The extra space is distributed evenly between the break characters. The break character is usually ASCII 32 (space), but some fonts define other characters. ROLE='italic'TDC::GetTextMetrics can be used to retrieve the value of the break character. REMAP='Body'If the current mapping mode is not MM_TEXT, the extra value is transformed and rounded to the nearest pixel.REMAP='Body'ROLE='italic'SetTextJustification returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.SetViewportExtFORMAT="LINESPECIFIC"virtual bool SetViewportExt(const TSize& extent, TSize* oldExtent = 0);REMAP='BodyNoLead'Sets this DC's viewport x- and y-extents to the given ROLE='italic'extent values. The previous extents are saved in ROLE='italic'oldExtent. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false. The ROLE='italic'extent value determines the amount of stretching or compression needed in the logical coordinate system to fit the device coordinate system. ROLE='italic'extent also determines the relative orientation of the two coordinate systems.See alsoREMAP='BodyNoLead'TDC::GetViewportExt, TSize classSetViewportOrgFORMAT="LINESPECIFIC"virtual bool SetViewportOrg(const TPoint& origin, TPoint* oldOrg = 0);REMAP='BodyNoLead'Sets this DC's viewport origin to the given ROLE='italic'origin value, and saves the previous origin in ROLE='italic'oldOrg. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::GetViewportOrg, TDC::OffsetViewportOrg, TPoint classSetWindowExtFORMAT="LINESPECIFIC"virtual bool SetWindowExt(const TSize& extent, TSize* oldExtent = 0);REMAP='BodyNoLead'Sets this DC's window x- and y-extents to the given ROLE='italic'extent values. The previous extents are saved in ROLE='italic'oldExtent. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false. The extent value determines the amount of stretching or compression needed in the logical coordinate system to fit the device coordinate system. extent also determines the relative orientation of the two coordinate systems.See alsoREMAP='BodyNoLead'TDC::GetWindowExt, TDC::ScaleWindowExt, TSize classSetWindowOrgFORMAT="LINESPECIFIC"bool SetWindowOrg(const TPoint& origin, TPoint* oldOrg = 0);REMAP='BodyNoLead'Sets the origin of the window associated with this DC to the given ROLE='italic'origin value, and saves the previous origin in ROLE='italic'oldOrg. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::GetWindowOrg, TDC::OffsetWindowOrg, TPoint classSetWorldTransformFORMAT="LINESPECIFIC"bool SetWorldTransform(XFORM far& xform);REMAP='BodyNoLead'32-bit only. Sets a two-dimensional linear transformation, given by the ROLE='italic'xform structure, between world space and page space for this DC. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::ModifyWorldTransform, XFORM structStretchBltFORMAT="LINESPECIFIC"bool StretchDIBits(const TRect& dst, const TRect& src, const void HUGE* bits, const BITMAPINFO far& bitsInfo, uint16 usage, uint32 rop=SRCCOPY);FORMAT="LINESPECIFIC"bool StretchDIBits(const TRect& dst, const TRect& src, const TDib& dib, uint32 rop=SRCCOPY);REMAP='BodyNoLead'Copies the color data from ROLE='italic'src, the source rectangle of pixels in the given DIB (device-independent bitmap) on this DC, to dst, the destination rectangle. The DIB bits and color data are specified in either the byte array bits and the BITMAPINFO structure ROLE='italic'bitsInfo or in the ROLE='italic'TDib object, ROLE='italic'dib. The rows and columns of color data are stretched or compressed to match the size of the destination rectangle. The ROLE='italic'usage argument specifies how the bmiColors member of BITMAPINFO is interpreted, as explained in ROLE='italic'TDC::ROLE='italic'GetDIBits The raster operation code, ROLE='italic'rop, specifies how the source pixels, the current brush for this DC, and the destination pixels are combined to produce the new image. See ROLE='italic'TDC::ROLE='italic'MaskBlt for a detailed list of ROLE='italic'rop codes.See alsoREMAP='BodyNoLead'TDC::GetDIBits, TDC::MaskBlt, TDib class, TRect class, BITMAPINFO structStretchDIBitsFORMAT="LINESPECIFIC"bool StretchDIBits(const TRect& dst, const TRect& src, const void HUGE* bits, const BITMAPINFO far& bitsInfo, uint16 usage, uint32 rop=SRCCOPY);FORMAT="LINESPECIFIC"bool StretchDIBits(const TRect& dst, const TRect& src, const TDib& dib, uint32 rop=SRCCOPY);REMAP='BodyNoLead'Copies the color data from ROLE='italic'src, the source rectangle of pixels in the given DIB (device-independent bitmap) on this DC, to ROLE='italic'dst, the destination rectangle. The DIB bits and color data are specified in either the byte array ROLE='italic'bits and the BITMAPINFO structure ROLE='italic'bitsInfo or in the ROLE='italic'TDib object, ROLE='italic'dib. The rows and columns of color data are stretched or compressed to match the size of the destination rectangle. The ROLE='italic'usage argument specifies how the ROLE='italic'bmiColors member of BITMAPINFO is interpreted, as explained in ROLE='italic'TDC::ROLE='italic'GetDIBits The raster operation code, ROLE='italic'rop, specifies how the source pixels, the current brush for this DC, and the destination pixels are combined to produce the new image. See ROLE='italic'TDC::ROLE='italic'MaskBlt for a detailed list of rop codes.See alsoREMAP='BodyNoLead'TDC::GetDIBits, TDC::MaskBlt, TDib class, TRect class, BITMAPINFO structStrokeAndFillPathFORMAT="LINESPECIFIC"bool StrokeAndFillPath( );REMAP='BodyNoLead'32-bit only. Closes any open figures in the current path of this DC, strokes the outline of the path using the current pen, and fills its interior using the current brush and polygon fill mode. Returns ROLE='bold'true if the call is successful; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::StrokePath, TDC::BeginPath, TDC::FillPath, TDC::EndPath, TDC::SetPolyFillMode, TBrush class, TPen classStrokePathFORMAT="LINESPECIFIC"bool StrokePath( );REMAP='BodyNoLead'32-bit only. Renders the current, closed path on this DC and uses the DC's current pen.See alsoREMAP='BodyNoLead'TDC::StrokeAndFillPath, TDC::BeginPathTabbedTextOutFORMAT="LINESPECIFIC"bool TabbedTextOut(const TPoint& p, const char far* string, int count, int numPositions, const int far* positions, int tabOrigin);FORMAT="LINESPECIFIC"virtual bool TabbedTextOut(const TPoint& p, const char far* string, int count, int numPositions, const int far* positions, int tabOrigin, TSize& size);REMAP='BodyNoLead'Draws up to ROLE='italic'count characters of the given null-terminated ROLE='italic'string in the current font on this DC. If ROLE='italic'count is -1, the whole string is written.REMAP='Body'Tabs are expanded according to the given arguments. The ROLE='italic'positions array specifies ROLE='italic'numPositions tab stops given in device units. The tab stops must have strictly increasing values in the array. If ROLE='italic'numPositions and ROLE='italic'positions are both 0, tabs are expanded to eight times the average character width. If ROLE='italic'numPositions is 1, all tab stops are taken to be ROLE='italic'positions[0] apart. ROLE='italic'tabOrigin specifies the x-coordinate in logical units from which tab expansion will start.REMAP='Body'The ROLE='italic'p argument specifies the logical coordinates of the reference point that is used to align the first character depending on the current text-alignment mode. This mode can be inspected with ROLE='italic'TDC::GetTextAlign and changed with ROLE='italic'TDC::SetTextAlign. By default, the current position is neither used nor altered by ROLE='italic'TabbedTextOut. However, if the align mode is set to TA_UPDATECP, ROLE='italic'TabbedTextOut ignores the reference point argument(s) and uses/updates the current position as the reference point.REMAP='Body'The ROLE='italic'size argument in the second version of ROLE='italic'TabbedTextOut reports the dimensions (ROLE='italic'size.ROLE='italic'y = height and ROLE='italic'size.ROLE='italic'x = width) of the string in logical units.REMAP='Body'ROLE='italic'TabbedTextOut returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::TextOut, TDC::GetTextAlign, TDC::SetTextAlign, TPoint class, TSize classTextOutFORMAT="LINESPECIFIC"virtual bool TextOut(int x, int y, const char far* string, int count = -1);FORMAT="LINESPECIFIC"bool TextOut(const TPoint& p, const char far* string, int count = -1);REMAP='BodyNoLead'Draws up to ROLE='italic'count characters of the given null-terminated ROLE='italic'string in the current font on this DC. If ROLE='italic'count is -1 (the default), the entire string is written.REMAP='Body'The (ROLE='italic'x, y) or ROLE='italic'p arguments specify the logical coordinates of the reference point that is used to align the first character, depending on the current text-alignment mode. This mode can be inspected with ROLE='italic'TDC::GetTextAlign and changed with ROLE='italic'TDC::SetTextAlign. By default, the current position is neither used nor altered by ROLE='italic'TextOut. However, the align mode can be set to TA_UPDATECP, which makes Windows use and update the current position. In this mode, ROLE='italic'TextOut ignores the reference point argument(s).REMAP='Body'ROLE='italic'TextOut returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::ExtTextOut, TDC::GetTextAlign, TDC::SetTextAlign, TPoint classTextRectFORMAT="LINESPECIFIC"bool TextRect(int x1, int y1, int x2, int y2);FORMAT="LINESPECIFIC"bool TextRect(const TRect& rect);FORMAT="LINESPECIFIC"bool TextRect(int x1, int y1, int x2, int y2, TColor color);FORMAT="LINESPECIFIC"bool TextRect(const TRect rect, TColor color);REMAP='BodyNoLead'Fills the given rectangle, clipping any text to the rectangle. If no ROLE='italic'color argument is supplied, the current backgound color is used. If a ROLE='italic'color argument is supplied, that color is set to the current background color which is then used for filling. ROLE='italic'TextRect returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::SetBkColor, TColor class, TRect classUpdateColorsFORMAT="LINESPECIFIC"void UpdateColors( );REMAP='BodyNoLead'Updates the client area of this DC by matching the current colors in the client area to the system palette on a pixel-by-pixel basis.WidenPathFORMAT="LINESPECIFIC"bool WidenPath( );REMAP='BodyNoLead'32-bit only. Redefines the current, closed path on this DC as the area that would be painted if the path were stroked with this DC's current pen. The current pen must have been created under the following conditions:REMAP='Body'If the ROLE='italic'TPen(ROLE='bold'intROLE='italic' Style, ROLE='bold'intROLE='italic' Width, ROLE='italic'TColorROLE='italic' Color) constructor, or the ROLE='italic'TPen(ROLE='italic'constROLE='italic' LOGPEN* ROLE='italic'LogPen) constructor is used, the width of the pen in device units must be greater than 1.REMAP='Body'If the ROLE='italic'TPen(ROLE='bold'uint32ROLE='italic' PenStyle, ROLE='bold'uint32ROLE='italic' Width, const ROLE='italic'TBrush& ROLE='italic'Brush, ROLE='bold'uint32ROLE='italic' StyleCount, ROLE='italic'LPDWORDROLE='italic' pSTyle) constructor, or the ROLE='italic'TPen(ROLE='bold'uint32ROLE='italic' PenStyle, ROLE='bold'uint32ROLE='italic' Width, ROLE='italic'constROLE='italic' LOGBRUSH& ROLE='italic'logBrush, ROLE='bold'uint32ROLE='italic' StyleCount, ROLE='italic'LPDWORDROLE='italic' pSTyle) constructor is used, the pen must be a geometric pen.REMAP='Body'Any Bezier curves in the path are converted to sequences of linear segments approximating the widened curves, so no Bezier curves remain in the path after a ROLE='italic'WidenPath call.REMAP='Body'ROLE='italic'WidenPath returns ROLE='bold'true if the call is successful; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDC::FlattenPath, TDC::BeginPath, TPen classProtected constructorsConstructorsFORMAT="LINESPECIFIC"TDC( );REMAP='BodyNoLead'For use by derived classes only. Calls ROLE='italic'Init to clear the ROLE='italic'OrgXXX data members and sets ROLE='italic'ShouldDelete to ROLE='bold'true.FORMAT="LINESPECIFIC"TDC(HDC handle, TAutoDelete AutoDelete);REMAP='BodyNoLead'For use by derived classes only. Constructs a TDC object using an existing DC handle. Calls ROLE='italic'Init to clear the ROLE='italic'OrgXXX data members.See alsoREMAP='BodyNoLead'TDC::InitProtected data membersHandleFORMAT="LINESPECIFIC"TGdiBase::Handle;REMAP='BodyNoLead'The handle of this DC. Uses the base class's handle (ROLE='italic'TGdiBase::Handle.)See alsoREMAP='BodyNoLead'TDCOrgBrushFORMAT="LINESPECIFIC"HBRUSH OrgBrush;REMAP='BodyNoLead'Handle to the original GDI brush object for this DC. Holds the previous brush object whenever a new brush is selected with ROLE='italic'SelectObject(brush).See alsoREMAP='BodyNoLead'TDC::SelectObject, TBrush classOrgFontFORMAT="LINESPECIFIC"HFONT OrgFont;REMAP='BodyNoLead'Handle to the original GDI font object for this DC. Holds the previous font object whenever a new font is selected with ROLE='italic'SelectObject(font).See alsoREMAP='BodyNoLead'TDC::SelectObject, TFont classOrgPaletteFORMAT="LINESPECIFIC"HPALETTE OrgPalette;REMAP='BodyNoLead'Handle to the original GDI palette object for this DC. Holds the previous palette object whenever a new palette is selected with ROLE='italic'SelectObject(palette).See alsoREMAP='BodyNoLead'TDC::SelectObject, TPalette classOrgPenFORMAT="LINESPECIFIC"HPEN OrgPen;REMAP='BodyNoLead'Handle to the original GDI pen object for this DC. Holds the previous pen object whenever a new pen is selected with ROLE='italic'SelectObject(pen).See alsoREMAP='BodyNoLead'TDC::SelectObject, TPen classOrgTextBrushFORMAT="LINESPECIFIC"HBRUSH OrgTextBrushREMAP='BodyNoLead'32-bit only. The handle to the original GDI text brush object for this DC. Stores the previous text brush handle whenever a new brush is selected with ROLE='italic'SelectObject(text_brush).See alsoREMAP='BodyNoLead'TDC::SelectObject, TBrush classShouldDeleteFORMAT="LINESPECIFIC"TGdiBase::ShouldDelete;REMAP='BodyNoLead'Set to ROLE='bold'true if the handle for this object should be deleted by the destructor; otherwise, set to ROLE='bold'false. Protected member functionsCheckValidFORMAT="LINESPECIFIC"TGdiBase::CheckValid( uint resId=IDS_GDIFAILURE)FORMAT="LINESPECIFIC"static void CheckValid( HANDLE handle, uint resId=IDS_GDIFAILURE)REMAP='BodyNoLead'Both versions of ROLE='italic'CheckValid check for a valid GDI object handle. If one is not found a GDI exception is thrown for the given resource id. Both versions use ROLE='italic'TGdiBase::CheckValid.GetAttributeHDCFORMAT="LINESPECIFIC"virtual HDC GetAttributeHDC( ) const;REMAP='BodyNoLead'Returns the attributes of the DC object.See alsoREMAP='BodyNoLead'TPrintPreviewDC::GetAttributeHDCGetHDCFORMAT="LINESPECIFIC"HDC GetHDC( ) const;REMAP='BodyNoLead'Returns a handle to the DC. InitFORMAT="LINESPECIFIC"void Init( );REMAP='BodyNoLead'Sets ROLE='italic'OrgBrush, OrgPen, OrgFont, OrgBitmap, and ROLE='italic'OrgPalette to 0, and sets ROLE='italic'ShouldDelete to ROLE='bold'true. This function is for internal use by the ROLE='italic'TDC constructors.See alsoREMAP='BodyNoLead'TDC constructors, TDC::SelectObjectTDecoratedFrame classMOREINFO="NONE"decframe.hREMAP='BodyNoLead'ROLE='italic'TDecoratedFrame automatically positions its client window (you must supply a client window) so that it is the same size as the client rectangle. You can add additional decorations like toolbars and status lines to a window.You can create a ROLE='italic'TDecoratedFrame without a caption bar by clearing all of the bits in the style data member of the ROLE='italic'TWindowAttr structure. ROLE='italic'TDecoratedFrame is a streamable class.REMAP='Body'For OLE-enabled applications, use ROLE='italic'TOleFrame, which creates a decorated frame and manages decorations such as toolbars for the main window of an SDI (Single Document Interface) OLE application.See also REMAP='Body'TOleFrameType definitionsTLocationFORMAT="LINESPECIFIC"enum TLocation (Top, Bottom, Left, Right);REMAP='BodyNoLead'ROLE='italic'TLocation enum describes ROLE='italic'Top, Left, Bottom, and ROLE='italic'Right positions where the decoration can be placed. ROLE='italic'Insert uses this enum to position the decoration.Public constructorConstructorFORMAT="LINESPECIFIC"TDecoratedFrame(TWindow* parent, const char far *title, TWindow* clientWnd, bool trackMenuSelection = false, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TDecoratedFrame object with the specified parent window (ROLE='italic'parent), window caption (ROLE='italic'title), and module ID. Sets ROLE='italic'TWindow::Attr.Title to the new title. Passes a pointer to the client window if one is specified. By default set to ROLE='bold'false, ROLE='italic'trackMenuSelection controls whether hint text appears at the bottom of the window when a menu item is highlighted.Public member functionsInsertFORMAT="LINESPECIFIC"void Insert (TWindow& decoration, TLocation = Top);REMAP='BodyNoLead'After you specify where the decoration should be placed, ROLE='italic'Insert adds it just above, below, left, or right of the client window. This process is especially important when there are multiple decorations. ROLE='italic'Insert looks at the decoration's ROLE='italic'Attr.Style member and checks the WS_VISIBLE flag to tell whether the decoration should initially be visible or hidden. REMAP='Body'To position the decoration, ROLE='italic'Insert uses ROLE='italic'TLocation enum, which describes ROLE='italic'Top, Left, Bottom, and ROLE='italic'Right positions where the decoration can be placed.PreProcessMsgFORMAT="LINESPECIFIC"bool PreProcessMsg (MSG& msg);REMAP='BodyNoLead'Overrides the virtual function defined in ROLE='italic'TFrameWindow to give decorations an opportunity to perform mnemonic access preprocessing.See alsoREMAP='BodyNoLead'TFrameWindow::PreProcessMsg, TWindow::PreProcessMsgSetClientWindowFORMAT="LINESPECIFIC"TWindow* SetClientWindow(TWindow* clientWnd);REMAP='BodyNoLead'Overrides ROLE='italic'TFrameWindow's virtual function. Sets the client window to the specified window. Users are responsible for destroying the old client window if they want to remove it.Protected data membersMenuItemIDFORMAT="LINESPECIFIC"uint MenuItemID;REMAP='BodyNoLead'Specifies the menu item ID.TrackMenuSelectionFORMAT="LINESPECIFIC"bool TrackMenuSelection;REMAP='BodyNoLead'Specifies whether you want menu selection and help status information visible.Protected member functionsEvCommandFORMAT="LINESPECIFIC"LRESULT EvCommand(uint Id, HWND hWndCtl, uint notifyCode);REMAP='BodyNoLead'Automates hiding and showing of decorations.EvCommandEnableFORMAT="LINESPECIFIC"void EvCommandEnable(TCommandEnabler& ce);REMAP='BodyNoLead'Handles checking and unchecking of menu items that are associated with decorations.EvEnterIdleFORMAT="LINESPECIFIC"void EvEnterIdle(uint source, HWND hWndDlg);REMAP='BodyNoLead'Responds to a window message that tells an application's main window that a dialog box or a menu is entering an idle state. ROLE='italic'EvEnterIdle also handles updating the status bar with the appropriate help message.EvMenuSelectFORMAT="LINESPECIFIC"void EvMenuSelect(uint MenuItemId, uint flags, HMENU hMenu);REMAP='BodyNoLead'Responds to user menu selection. If ROLE='italic'MenuItemId is blank, displays an empty help message; otherwise, it displays a help message with the specified string ID. See ROLE='italic'EvEnterIdle for a description of how the help message is loaded.EvSizeFORMAT="LINESPECIFIC"void EvSize(uint sizeType, TSize& size);REMAP='BodyNoLead'Passes a WM_SIZE message to ROLE='italic'TLayoutWindow.SetupWindowFORMAT="LINESPECIFIC"void SetupWindow( );REMAP='BodyNoLead'Calls ROLE='italic'TLayoutWindow::Layout to size and position the decoration.See alsoREMAP='BodyNoLead'TFrameWindow::SetUpWindow, TWindow::SetUpWindow, TLayoutWindow::LayoutResponse table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='117*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_ENTERIDLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvEnterIdleCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MENUSELECTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvMenuSelectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvSizeTDecoratedMDIFrame classMOREINFO="NONE"decmdifr.hREMAP='BodyNoLead'Derived from both ROLE='italic'TMDIFrame and ROLE='italic'TDecoratedFrame, TDecoratedMDIFrame is an MDI frame that supports decorated child windows. REMAP='Body'ROLE='italic'TDecorated MDIFrame supports custom toolbars. You can insert one set of decorations (for example, toolbars and rulers) into a decorated frame. When a different set of tools is needed, you can remove the previous set and reinsert another set of decorations. However, be sure to remove all of the unwanted decorations from the adjusted sides (that is, the top, left, bottom, and right) before reinserting a new set. REMAP='Body'ROLE='italic'TDecoratedMDIFrame is a streamable class.Public constructorConstructorFORMAT="LINESPECIFIC"TDecoratedMDIFrame(const char far *title, TResId menuResId, TMDIClient &clientWnd = *new TMDIClient, bool trackMenuSelection = false, TModule* module = 0);REMAP='BodyNoLead'Constructs a decorated MDI frame of the specified client window with the indicated menu resource ID. By default, menu hint text is not displayed.Protected member functionDefWindowProcFORMAT="LINESPECIFIC"LRESULT DefWindowProc(uint message, WPARAM wParam, LPARAM lParam);REMAP='BodyNoLead'Overrides ROLE='italic'TWindow::DefWindowProc. If the message parameter is WM_SIZE, ROLE='italic'DefWindowProc returns 0; otherwise, ROLE='italic'DefWindowProc returns the result of calling ROLE='italic'TMDIFRame::DefWindowProc.See alsoREMAP='BodyNoLead'TMDIFrame::DefWindowProcResponse table entriesREMAP='Body'The ROLE='italic'TDecoratedMDIFrame response table has no entries.TDesktopDC classMOREINFO="NONE"dc.hREMAP='BodyNoLead'A DC class derived from ROLE='italic'TWindowDC, TDesktopDC provides access to the desktop window's client area, which is the screen behind all other windows.Public constructorConstructorFORMAT="LINESPECIFIC"TDesktopDC( );REMAP='BodyNoLead'Default constructor for ROLE='italic'TDesktopDC objects.TDialog classMOREINFO="NONE"dialog.hREMAP='BodyNoLead' Typically used to obtain information from a user, a dialog box is a window inside of which other controls such as buttons and scroll bars can appear. Unlike actual child windows which can only be displayed in the parent window's client area, dialog boxes can be moved anywhere on the screen. ROLE='italic'TDialog objects represent both modal and modeless dialog box interface elements. (A modal dialog box disables operations in its parent window while it is open, and, thus, lets you function in only one window "mode.") REMAP='Body'A ROLE='italic'TDialog object has a corresponding resource definition that describes the placement and appearance of its controls. The identifier of this resource definition is supplied to the constructor of the ROLE='italic'TDialog object. A ROLE='italic'TDialog object is associated with a modal or modeless interface element by calling its ROLE='italic'Execute or ROLE='italic'Create member function, respectively. REMAP='Body'You can use ROLE='italic'TDialog to build an application that uses a dialog as its main window by constructing your dialog as a ROLE='italic'TDialog and passing it as the client of a ROLE='italic'TFrameWindow. Your code might look something like this:FORMAT="LINESPECIFIC"SetMainWindow(new TFrameWindow(0, "title" new TDialog(0, IDD_MYDIALOG)));REMAP='Body'ObjectWindows provides three-dimensional (3-D) support for dialog boxes. If your application expects to use Microsoft's CTL3D DLL, you need to register your application by calling ROLE='italic'TApplication::EnableCtl3d. ObjectWindows will then automatically forward the WM_CTLCOLOR message to the CTL3D DLL.REMAP='Body'ObjectWindows also provides BWCC support for dialog boxes. Unless a custom template is specified, TDialog uses the BWCC templates. (By default, ROLE='italic'TApplication's member function ROLE='italic'EnableBWCC enables BWCC support.)REMAP='Body'ROLE='italic'TDialog is a streamable class.REMAP='Body'ObjectWindows also encapsulates common dialog boxes that let the user select font, file name, color, print options, and so on. ROLE='italic'TCommonDialog is the parent class for this group of common dialog box classes.Public data membersAttrFORMAT="LINESPECIFIC"TDialogAttr Attr;REMAP='BodyNoLead'ROLE='italic'Attr holds the creation attributes of the dialog box (for example, size and style).See alsoREMAP='BodyNoLead'TDialogAttrIsModalFORMAT="LINESPECIFIC"bool IsModal;REMAP='BodyNoLead'ROLE='italic'IsModal is ROLE='bold'true if the dialog box is modal and ROLE='bold'false if it is modeless.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TDialog(TWindow* parent, TResId resId, TModule* module = 0);REMAP='BodyNoLead'Invokes a ROLE='italic'TWindow constructor, passing ROLE='italic'parent and ROLE='italic'module, and calls ROLE='italic'DisableAutoCreate to prevent ROLE='italic'TDialog from being automatically created and displayed along with its parent. ROLE='italic'TDialog then initializes ROLE='italic'Title to -1 and sets MOREINFO="NONE"TDialogAttr.Name using the dialog box's integer or string resource identifier, which must correspond to a dialog resource definition in the resource file. Finally, it initializes ROLE='italic'TDialogAttr.Param to 0 and sets ROLE='italic'IsModal to ROLE='bold'false.DestructorFORMAT="LINESPECIFIC"~TDialog( );REMAP='BodyNoLead'If ROLE='italic'Attr.Name is a string and not an integer resource identifier, this destructor frees memory allocated to ROLE='italic'Attr.Name, which holds the name of the dialog box.See alsoREMAP='BodyNoLead'TApplication::EnableBWCC, TWindow::~TWindow, TWindow::DisableAutoCreate, TWindow::TWindow, TDialog::AttrPublic member functionsCloseWindowFORMAT="LINESPECIFIC"void CloseWindow(int retValue = IDCANCEL);REMAP='BodyNoLead'Overrides the virtual function defined by ROLE='italic'TWindow and conditionally shuts down the dialog box. If the dialog box is modeless, it calls ROLE='italic'TWindow::CloseWindow. If the dialog box is modal, it calls ROLE='italic'CanClose. If ROLE='italic'CanClose returns ROLE='bold'true, ROLE='italic'CloseWindow calls ROLE='italic'TransferData to transfer dialog box data, passing it ROLE='italic'retValue. The default value of ROLE='italic'retValue is IDCANCEL.See alsoREMAP='BodyNoLead'TWindow::CloseWindowCmCancelFORMAT="LINESPECIFIC"void CmCancel( );REMAP='BodyNoLead'Automatic response to a click on the Cancel button of the dialog box. Calls ROLE='italic'Destroy, passing IDCANCEL.See alsoREMAP='BodyNoLead'TDialog::CloseWindowCmOkFORMAT="LINESPECIFIC"void CmOk( );REMAP='BodyNoLead'Responds to a click on the dialog box's OK button with the identifier IDOK. Calls ROLE='italic'CloseWindow, passing IDOK.See alsoREMAP='BodyNoLead'TDialog::CloseWindowCreateFORMAT="LINESPECIFIC"virtual bool Create( );REMAP='BodyNoLead'Creates a modeless dialog box interface element associated with the ROLE='italic'TDialog object. Registers all the dialog's child windows for custom control support. Calls ROLE='italic'DoCreate to perform the actual creation of the dialog box.REMAP='Body'ROLE='italic'Create returns ROLE='bold'true if successful. If unsuccessful, ROLE='italic'Create throws a ROLE='italic'TXInvalidWindow exception.See alsoREMAP='BodyNoLead'TDialog::Execute, TModule::MakeWindow, TWindow::DisableAutoCreateDestroyFORMAT="LINESPECIFIC"virtual void Destroy(int retValue = IDCANCEL);REMAP='BodyNoLead'Destroys the interface element associated with the ROLE='italic'TDialog object. If the element is a modeless dialog box, ROLE='italic'Destroy calls ROLE='italic'TWindow::ROLE='italic'Destroy. If the element is a modal dialog box, ROLE='italic'Destroy calls ROLE='italic'EnableAutoCreate on all child windows. Then ROLE='italic'Destroy calls the Windows function ::ROLE='italic'EndDialog, passing ROLE='italic'retValue as the value returned to indicate the result of the dialog's execution. The default ROLE='italic'retValue is IDCANCEL.See alsoREMAP='BodyNoLead'TWindow::Destroy, TWindow::EnableAutoCreateDialogFunctionFORMAT="LINESPECIFIC"virtual bool DialogFunction(uint message, WPARAM wParam, LPARAM lParam);REMAP='BodyNoLead'To process messages within the dialog function, your application must override this function. ROLE='italic'DialogFunction returns ROLE='bold'true if the message is handled and ROLE='bold'false if the message is not handled.DoCreateFORMAT="LINESPECIFIC"virtual HWND DoCreate( );REMAP='BodyNoLead'ROLE='italic'DoCreate is called by ROLE='italic'Create to performs the actual creation of a modeless dialog box. DoExecuteFORMAT="LINESPECIFIC"virtual int DoExecute( );REMAP='BodyNoLead'ROLE='italic'DoExecute is called by ROLE='italic'Execute to perform the actual execution of a modal dialog box. See alsoREMAP='BodyNoLead'TDialog::ExecuteEvCloseFORMAT="LINESPECIFIC"void EvClose( );REMAP='BodyNoLead'Responds to an incoming ROLE='italic'EvClose message by shutting down the window.EvCtlColorFORMAT="LINESPECIFIC"HBRUSH EvCtlColor(HDC hDC, HWND hWndChild, uint ctlType);REMAP='BodyNoLead'Passes the handle to the display context for the child window, the handle to the child window, and the default system colors to the parent window. The parent window then uses the display-context handle given in ROLE='italic'hDC to set the text and background colors of the child window.REMAP='Body'If three-dimensional (3-D) support is enabled, ROLE='italic'EvCtlColor handles the EV_WM_CTLCOLOR message by allowing the CTL3D DLL to process the WM_CTLCOLOR message in order to set the background color and provide a background brush for the window.See alsoREMAP='BodyNoLead'TApplication::EnableCtl3dEvInitDialogFORMAT="LINESPECIFIC"virtual bool EvInitDialog(HWND hWndFocus);REMAP='BodyNoLead'ROLE='italic'EvInitDialog is automatically called just before the dialog box is displayed. It calls ROLE='italic'SetupWindow to perform any setup required for the dialog box or its controls.See alsoREMAP='BodyNoLead'TWindow::SetupWindowEvPaintFORMAT="LINESPECIFIC"void EvPaint( );REMAP='BodyNoLead'EvPaint calls ROLE='italic'TWindow's general-purpose default processing function, ROLE='italic'DefaultProcessing, for Windows-supplied painting.See alsoREMAP='BodyNoLead'TWindow::DefaultProcessingEvSetFontFORMAT="LINESPECIFIC"virtual void EvSetFont(HFONT hfont, bool redraw);REMAP='BodyNoLead'Responds to a request to change a dialog's font.ExecuteFORMAT="LINESPECIFIC"virtual int Execute( );REMAP='BodyNoLead'Creates and executes a modal dialog box interface element associated with the ROLE='italic'TDialog object. If the element is successfully associated, ROLE='italic'Execute does not return until the ROLE='italic'TDialog is closed.REMAP='Body'ROLE='italic'Execute performs the following tasks:NUMERATION='ARABIC' CONTINUATION="RESTARTS" INHERITNUM="IGNORE"REMAP='.NumList1'Registers this dialog's window class and all of the dialog's child windows.REMAP='.NumList1'Calls ROLE='italic'DoExecute to execute the dialog box.REMAP='.NumList1'Checks for exceptions and throws a ROLE='italic'TXWindow exception if an error occurs.REMAP='Body'ROLE='italic'Execute returns an integer value that indicates how the user closed the modal dialog box. If the dialog box cannot be created, ROLE='italic'Execute returns -1.See alsoREMAP='BodyNoLead'TModule::ExecDialog, TWindow::DisableAutoCreate, TXWindowGetDefaultIdFORMAT="LINESPECIFIC"uint GetDefaultId( ) const;REMAP='BodyNoLead'Gets the default resource ID.GetItemHandleFORMAT="LINESPECIFIC"HWND GetItemHandle(int childId);REMAP='BodyNoLead'Returns the dialog box control's window handle identified by the supplied ID. Because ROLE='italic'GetItemHandle is now obsolete, new applications should use ROLE='italic'TWindow::GetDlgItem.PerformDlgInitFORMAT="LINESPECIFIC"bool PerformDlgInit( );REMAP='BodyNoLead'Initializes the dialog box controls with the contents of RT_DLGINIT, the dialog box resource identifier, which describes the appearance and location of the controls (buttons, group boxes, and so on). Returns ROLE='bold'true if successful; otherwise, returns ROLE='bold'false.PreProcessMsgFORMAT="LINESPECIFIC"bool PreProcessMsg(MSG& msg);REMAP='BodyNoLead' Overrides the virtual function defined by ROLE='italic'TWindow in order to perform preprocessing of window messages. If the child window has requested keyboard navigation, ROLE='italic'PreProcessMsg handles any accelerator key messages and then processes any other keyboard messages.See alsoREMAP='BodyNoLead'TWindow::PreProcessMsg, MSG structSendDlgItemMsgFORMAT="LINESPECIFIC"uint32 SendDlgItemMsg(int ChildId, uint16 Msg, uint16 WParam, uint32 LParam);REMAP='BodyNoLead'Sends a window control message, identified by ROLE='italic'Msg, to the dialog box's control identified by its supplied ID, ROLE='italic'ChildID. ROLE='italic'WParam and ROLE='italic'LParam become parameters in the control message. ROLE='italic'SendDlgItemMsg returns the value returned by the control, or 0 if the control ID is invalid. This function is obsolete.SetCaptionFORMAT="LINESPECIFIC"void SetCaption(const char far* title);REMAP='BodyNoLead' Sets the caption of the dialog box. to the value of the ROLE='italic'title parameter.See alsoREMAP='BodyNoLead'TWindow::SetCaptionSetDefaultIdFORMAT="LINESPECIFIC"void SetDefaultId(uint Id);REMAP='BodyNoLead'Sets the default resource ID.Protected member functionsGetClassNameFORMAT="LINESPECIFIC"char far* GetClassName( );REMAP='BodyNoLead'Overrides the virtual function defined in ROLE='italic'TWindow and returns the name of the dialog box's default Windows class, which must be used for a modal dialog box. For a modeless dialog box, ROLE='italic'GetClassName returns the name of the default ROLE='italic'TWindow. If BWCC is enabled, ROLE='italic'GetClassName returns BORDLGCLASS.See alsoREMAP='BodyNoLead'TWindow::GetClassNameGetWindowClassFORMAT="LINESPECIFIC"void GetWindowClass(WNDCLASS& wndClass);REMAP='BodyNoLead'Overrides the virtual function defined in ROLE='italic'TWindow. Fills ROLE='italic'WndClass with a ROLE='italic'TDialog registration attributes obtained from an existing ROLE='italic'TDialog window or from BWCC if it is enabled.REMAP='Body'If the class style is registered with CS_GLOBALCLASS, you must unregister the class style. You can do this by turning off the style bit. For example,FORMAT="LINESPECIFIC"{
baseclass::GetWindowClass(wndClass);
....
WndClass.style &= ~CS_GLOBALCLASS:
...
}See alsoREMAP='BodyNoLead'TWindow::GetWindowClass, TWindow, WNDCLASS structSetupWindowFORMAT="LINESPECIFIC"void SetupWindow( );REMAP='BodyNoLead'Overrides the virtual function defined in ROLE='italic'TWindow. Sets up the dialog box by calling ROLE='italic'SetCaption (sets ROLE='italic'Title) and ROLE='italic'TWindow::SetupWindow.REMAP='Body'If three-dimensional (3-D) support is enabled, ROLE='italic'SetupWindow calls the CTL3D DLL to register the dialog box.See alsoREMAP='BodyNoLead'TCommonDialog::SetupWindow, TDialog::SetCaption, TWindow::SetupWindowResponse table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='164*'COLNAME='C2' COLWIDTH='83*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND (IDCANCEL, CmCancel)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmCancelCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND (IDOK, CmOk)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmOkCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CTLCOLORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvCtlColorCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CLOSECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvCloseCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_PAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvPaintSee alsoREMAP='BodyNoLead'TCommonDialogTDialog class::TDialogAttr structMOREINFO="NONE"dialog.hREMAP='Body'A ROLE='italic'TDialogAttr is used to hold a ROLE='italic'TDialog's creation attributes, which include the style, appearance, size, and types of controls associated with the dialog box. ROLE='italic'TDialogAttr contains two data members: ROLE='italic'Name (the resource id) and ROLE='italic'Param. These members contain user-defined data used for dialog box creation.Public data membersNameFORMAT="LINESPECIFIC"char far* Name;REMAP='BodyNoLead'ROLE='italic'Name holds the identifier, which can be either a string or an integer resource identifier, of the dialog resource.ParamFORMAT="LINESPECIFIC"uint32 Param;REMAP='BodyNoLead'ROLE='italic'Param is used to pass initialization data to the dialog box when it is constructed. You can assign a value to this field in a derived class's constructor. Although any ROLE='italic'Param-type information passed to the dialog box can be saved as a data member, ROLE='italic'Param is especially useful if you want to create a dialog box that's implemented by non-ObjectWindows code.REMAP='Body'After ROLE='italic'Param is accepted it is then available in the message response functions (for example, ROLE='italic'EvInitDialog), associated with WM_INITDIALOG. See alsoREMAP='BodyNoLead'TDialog::AttrTDib classMOREINFO="NONE"gdiobjec.hREMAP='BodyNoLead'The class ROLE='italic'TDib, derived from ROLE='italic'TGdiObject, represents GDI Device Independent Bitmap (DIB) objects. ROLE='italic'TDibDCs encapsulate the creation of DCs using DIB.DRV (a GDI driver provided with Windows MME and 3.1). DIBs have no Windows handle; they are just structures containing format and palette information and a collection of bits or pixels. ROLE='italic'TDib provides a convenient way to work with DIBs like any other GDI object. The memory for the DIB is in one ROLE='italic'GlobalAlloc'd unit so it can be passed to the Clipboard, OLE 2, and so on.REMAP='Body'The ROLE='italic'TDib Destructor overloads the base destructor because DIBs are not real GDI objects.Type definitionsMapFORMAT="LINESPECIFIC"enum Map{MapFace, MapText, MapShadow, MapHighlight, MapFrame};REMAP='BodyNoLead' Enumerates the values for the part of the window whose color is to be set. You can OR these together to control the colors used for face shading on push buttons, the color of a selected control button, the edge shading on push buttons, text on push buttons, the color of the window frame, and the background color of the various parts of a window. The function ROLE='italic'MapUIColors uses one of these values to map the colors of various parts of a window to a specified color.See alsoREMAP='BodyNoLead'TDib::MapUIColorsPublic constructors and destructorConstructorsFORMAT="LINESPECIFIC"TDib(HGLOBAL handle, TAutoDelete autoDelete = NoAutoDelete);REMAP='BodyNoLead'Creates a ROLE='italic'TDib object and sets the ROLE='italic'Handle data member to the given borrowed handle. The ROLE='italic'ShouldDelete data member defaults to false, ensuring that the borrowed handle will not be deleted when the C++ object is destroyed.FORMAT="LINESPECIFIC"TDib(const TClipboard& clipboard);REMAP='BodyNoLead'Constructs a ROLE='italic'TDib object with a handle borrowed from the given Clipboard.FORMAT="LINESPECIFIC"TDib(const TDib& dib);REMAP='BodyNoLead'This public copy constructor creates a complete copy of the given ROLE='italic'dib object as inFORMAT="LINESPECIFIC"TDib myDib = yourDib;FORMAT="LINESPECIFIC"TDib(int width, int height, int nColors, uint16 mode = DIB_RGB_COLORS);REMAP='BodyNoLead'Creates a DIB object with the given width, height, number of colors, mode values.FORMAT="LINESPECIFIC"TDib(HINSTANCE instance, TResID resID);REMAP='BodyNoLead'Creates a DIB object from the resource with the given ID.FORMAT="LINESPECIFIC"TDib(const char* name);REMAP='BodyNoLead'Creates a DIB object from the given resource file.FORMAT="LINESPECIFIC"TDib(const TBitmap& bitmap, const TPalette* pal = 0);REMAP='BodyNoLead'Creates a DIB object from the given resource bitmap and palette. If ROLE='italic'pal is 0 (the default), the default palette is used.DestructorFORMAT="LINESPECIFIC"~TDib( );REMAP='BodyNoLead'Overrides the base destructor.See alsoREMAP='BodyNoLead'::GetClipboardData, ~TGdiObject, TDib::InfoFromHandle, TDib::LoadFile, TDib::LoadResource, TGdiObject::Handle, TGdiObject::ShouldDeletePublic member functionsoperator BITMAPINFO( )FORMAT="LINESPECIFIC"operator const BITMAPINFO far*( ) const;FORMAT="LINESPECIFIC"operator BITMAPINFO far*( );REMAP='Body'Typecasts this DIB by returning a pointer to its bitmap information structure (BITMAPINFO) which contains information about this DIB's color format and dimensions (size, width, height, resolution, and so on).See alsoREMAP='BodyNoLead'TDib::GetInfo, BITMAPINFO structoperator BITMAPINFOHEADER( )FORMAT="LINESPECIFIC"operator const BITMAPINFOHEADER far*( ) const;FORMAT="LINESPECIFIC"operator BITMAPINFOHEADER far*( );REMAP='BodyNoLead'Typecasts this DIB by returning a pointer to its bitmap info header.See alsoREMAP='BodyNoLead'TDib::GetInfoHeader, BITMAPINFOHEADER structChangeModeToPalFORMAT="LINESPECIFIC"bool ChangeModeToPal(const TPalette& pal);REMAP='BodyNoLead'Converts the existing color table in place to use palette relative values. The palette that is passed is used as a reference. Returns ROLE='bold'true if the call is successful; otherwise returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDib::ChangeModeToRGB, TPalette::GetPaletteEntryChangeModeToRGBFORMAT="LINESPECIFIC"bool ChangeModeToRGB(const TPalette& pal);REMAP='BodyNoLead'Converts the existing color table in place to use absolute RGB values. The palette that is passed is used as a reference. Returns ROLE='bold'true if the call is successful; otherwise returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDib::ChangeModetoPal, TPalette::GetPaletteEntryFindColorFORMAT="LINESPECIFIC"int FindColor(TColor color);REMAP='BodyNoLead'Returns the palette entry for the given color.See alsoREMAP='BodyNoLead'TDib::GetColor, TColor, TDib::SetColor, TDib::MapColorFindIndexFORMAT="LINESPECIFIC"int FindIndex(uint16 index);REMAP='BodyNoLead'Returns the palette entry corresponding to the given index.See alsoREMAP='BodyNoLead'TDib::GetIndex, TDib::SetIndex, TDib::MapIndexGetBitsFORMAT="LINESPECIFIC"const void HUGE* GetBits( ) const;FORMAT="LINESPECIFIC"void HUGE* GetBits( );REMAP='BodyNoLead'Returns the ROLE='italic'Bits data member for this DIB.See alsoREMAP='BodyNoLead'TDib::BitsGetColorFORMAT="LINESPECIFIC"TColor GetColor(int entry) const;REMAP='BodyNoLead'Returns the color for the given palette entry.See alsoREMAP='BodyNoLead'TDib::SetColor, TColor, TDib::FindColor, TDib::MapColorGetColorsFORMAT="LINESPECIFIC"const TRgbQuad far* GetColors( ) const;FORMAT="LINESPECIFIC"TRgbQuad far* GetColors( );REMAP='BodyNoLead'Returns the ROLE='italic'bmiColors value of this DIB.See alsoREMAP='BodyNoLead'TRgbQuadGetIndexFORMAT="LINESPECIFIC"uint16 GetIndex(int entry) const;REMAP='BodyNoLead'Returns the color index for the given palette entry.See alsoREMAP='BodyNoLead'TDib::SetIndex, TDib::FindIndex,, TDib::MapIndexGetIndicesFORMAT="LINESPECIFIC"const uint16 far* GetIndices( ) const;FORMAT="LINESPECIFIC"uint16 far* GetIndices( );REMAP='BodyNoLead'Returns the ROLE='italic'bmiColors indexes of this DIB.See alsoREMAP='BodyNoLead'TDib::GetColorsGetInfoFORMAT="LINESPECIFIC"const BITMAPINFO far* GetInfo( ) const;FORMAT="LINESPECIFIC"BITMAPINFO far* GetInfo( );REMAP='BodyNoLead'Returns this DIB's ROLE='italic'Info field. A DIB's ROLE='italic'BITMAPINFO structure contains information about the dimensions and color of the DIB and specifies an array of data types that define the colors in the bitmap.See alsoREMAP='BodyNoLead'TDib::Info, TDib::GetInfoHeaderGetInfoHeaderFORMAT="LINESPECIFIC"const BITMAPINFOHEADER far* GetInfoHeader( ) const;FORMAT="LINESPECIFIC"BITMAPINFOHEADER far* GetInfoHeader( );REMAP='BodyNoLead'Returns this DIB's ROLE='italic'bmiHeader field of the ROLE='italic'BITMAPINFO structure contains information about the color and dimensions of this DIB.See alsoREMAP='BodyNoLead'TDib::Info, TDib::GetInfo, BITMAPINFOHEADER structoperator HANDLE( )FORMAT="LINESPECIFIC"operator HANDLE( ) const;REMAP='BodyNoLead'Typecasts this DIB by returning its ROLE='italic'Handle.See alsoREMAP='BodyNoLead'TGdiObject::HandleHeightFORMAT="LINESPECIFIC"int Height( ) const;REMAP='BodyNoLead'Returns ROLE='italic'H, this DIB's height.See alsoREMAP='BodyNoLead'TDib::InfoIsOKFORMAT="LINESPECIFIC"bool IsOK( ) const;REMAP='BodyNoLead'Returns ROLE='bold'false if ROLE='italic'Info is 0, otherwise returns ROLE='bold'true. If there is a problem with the construction of the DIB, memory is freed and ROLE='italic'Info is set to 0. Therefore, using ROLE='italic'Info is a reliable way to determine if the DIB is constructed correctly.See alsoREMAP='BodyNoLead'TDib constructors, TDib::InfoIsPMFORMAT="LINESPECIFIC"bool IsPM( ) const;REMAP='BodyNoLead'Returns ROLE='bold'true if ROLE='italic'IsCore is ROLE='bold'true; that is, if the DIB is an old-style PM DIB using core headers. Otherwise returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDib::IsCoreMapColorFORMAT="LINESPECIFIC"int MapColor(TColor fromColor, TColor toColor, bool doAll = false);REMAP='BodyNoLead'Maps the ROLE='italic'fromColor to the ROLE='italic'toColor in the current palette of this DIB.REMAP='Body'Returns the palette entry for the given color. Returns the palette entry for the ROLE='italic'toColor argument.See alsoREMAP='BodyNoLead'TDib::GetColor, TColor, TDib::SetColor, TDib::FindColorMapIndexFORMAT="LINESPECIFIC"int MapIndex(uint16 fromIndex, Word toIndex, bool doAll = false);REMAP='BodyNoLead'Maps the ROLE='italic'fromIndex to the ROLE='italic'toIndex in the current palette of this DIB.REMAP='Body'Returns the palette entry for the ROLE='italic'toIndex argument.See alsoREMAP='BodyNoLead'TDib::FindIndex, TDib::SetIndex, TDib::GetIndexMapUIColorsFORMAT="LINESPECIFIC"void MapUIColors(uint mapColors, TColor* bkColor = 0 )REMAP='BodyNoLead'Maps the UI colors to the value specified in the parameter, ROLE='italic'mapColors, which is one of the values of the ROLE='italic'Map enum. Use this function to get the colors for the face shading on pushbuttons, the highlighting for a selected control button, the text on pushbuttons, the shade of the window frame and the background color.See alsoREMAP='BodyNoLead'TDib::Map enumNumColorsFORMAT="LINESPECIFIC"long NumColors( ) const;REMAP='BodyNoLead'Returns ROLE='italic'NumClrs, the number of colors in this DIB's palette.See alsoREMAP='BodyNoLead'TDib::InfoNumScansFORMAT="LINESPECIFIC"uint16 NumScans( ) const;REMAP='BodyNoLead'Returns the number of scans in this DIB.See alsoREMAP='BodyNoLead'TDib::StartScanoperator <<FORMAT="LINESPECIFIC"TClipboard& operator <<(TClipboard& clipboard, TDib& dib);REMAP='BodyNoLead'Writes the given ROLE='italic'dib to the given ROLE='italic'clipboard. Returns a reference to the resulting Clipboard, allowing the normal chaining of <<.See alsoREMAP='BodyNoLead'TClipboardoperator ==FORMAT="LINESPECIFIC"bool operator ==(const TDib& other) const;REMAP='BodyNoLead' Compares two handles and returns ROLE='bold'true if this DIB's handle equals the other (ROLE='italic'other) DIB's handle.See alsoREMAP='BodyNoLead'Tdib::HandleSetColorFORMAT="LINESPECIFIC"void SetColor(int entry, TColor color);REMAP='BodyNoLead'Sets the given color for the given palette entry.See alsoREMAP='BodyNoLead'TDib::GetColor, TColor, TDib::MapColor, TDib::FindColorSetIndexFORMAT="LINESPECIFIC"void SetIndex(int entry, uint16 index);REMAP='BodyNoLead'Sets the given index for the given entry.See alsoREMAP='BodyNoLead'TDib::GetIndex, TDib::FindIndex, TDib::MapIndexSizeFORMAT="LINESPECIFIC"TSize Size( ) const;REMAP='BodyNoLead'Returns ROLE='italic'TSize(W,H), the size of this DIB.See alsoREMAP='BodyNoLead'TDib::Info, TSizeStartScanFORMAT="LINESPECIFIC"uint16 StartScan( ) const;REMAP='BodyNoLead'Returns the DIB's starting scan line.See alsoREMAP='BodyNoLead'TDib::numScansToClipboardFORMAT="LINESPECIFIC"void ToClipboard(TClipboard& clipboard);REMAP='BodyNoLead'Puts this DIB onto the specified Clipboard.See alsoREMAP='BodyNoLead'TClipboardoperator TRgbQuad( )FORMAT="LINESPECIFIC"operator const TRgbQuad far*( ) const;FORMAT="LINESPECIFIC"operator TRgbQuad far*( ) const;REMAP='BodyNoLead'Typecasts this DIB by returning a pointer to its colors structure.See alsoREMAP='BodyNoLead'TDib::GetColors, TRgbQuadUsageFORMAT="LINESPECIFIC"uint16 Usage( ) const;REMAP='BodyNoLead'Returns the ROLE='italic'Mode for this DIB. This value tells ROLE='italic'GDI how to treat the color table.See alsoREMAP='BodyNoLead'TDib::ModeWidthFORMAT="LINESPECIFIC"int Width( ) const;REMAP='BodyNoLead'Returns ROLE='italic'W, the DIB width.See alsoREMAP='BodyNoLead'TDib::InfoWriteFileFORMAT="LINESPECIFIC"bool WriteFile(const char* filename);REMAP='BodyNoLead'Returns ROLE='bold'true if the call is successful; otherwise returns ROLE='bold'false.Protected data membersBitsFORMAT="LINESPECIFIC"void HUGE* Bits;REMAP='BodyNoLead'ROLE='italic'Bits points into the block of memory pointed to by ROLE='italic'Info.See alsoREMAP='BodyNoLead'TDib::GetBitsHFORMAT="LINESPECIFIC"int H;REMAP='BodyNoLead'The height of this DIB in pixels.See alsoREMAP='BodyNoLead'TDib::Height, TDib::Size, TDib::NumScansInfoFORMAT="LINESPECIFIC"BITMAPINFO far* Info;REMAP='BodyNoLead'Locked global allocated block.See alsoREMAP='BodyNoLead'TDib::GetInfoIsCoreFORMAT="LINESPECIFIC"bool IsCore;REMAP='BodyNoLead'Set ROLE='bold'true if this DIB is an old-style PM DIB using core headers; otherwise, set ROLE='bold'false.See alsoREMAP='BodyNoLead'TDib::isPMIsResHandleFORMAT="LINESPECIFIC"bool IsResHandle;REMAP='BodyNoLead'Set ROLE='bold'true if this DIB is using a resource handle; otherwise, set ROLE='bold'false.ModeFORMAT="LINESPECIFIC"uint16 Mode;REMAP='BodyNoLead'If ROLE='italic'Mode is DIB_RGB_ROLE='italic'Colors, the color table contains 4-byte RGB entries. If ROLE='italic'Mode is ROLE='italic'DIB_PAL_COLORS, the color table contains 2-byte indexes into some other palette (such as the system palette). Because either of these two cases might exist, two versions of certain functions (such as ROLE='italic'GetColors and ROLE='italic'GetIndices) are required.See alsoREMAP='BodyNoLead'TDib::GetColors, TDib::GetIndices, TDib::UsageNumClrsFORMAT="LINESPECIFIC"long NumClrs;REMAP='BodyNoLead'The number of colors associated with this DIB.See alsoREMAP='BodyNoLead'TDib::NumColorsWFORMAT="LINESPECIFIC"int W;REMAP='BodyNoLead'The width of this DIB in pixels.See alsoREMAP='BodyNoLead'TDib::Width, TDib::SizeProtected member functionsInfoFromHandleFORMAT="LINESPECIFIC"void InfoFromHandle( );REMAP='BodyNoLead'Locks this DIB's handle and extracts the remaining data member values from the DIB header.See alsoREMAP='BodyNoLead'TDib::GetInfoHeaderLoadFileFORMAT="LINESPECIFIC"bool LoadFile(const char* name);REMAP='BodyNoLead'Loads this DIB from the given file name. Returns ROLE='bold'true if the call is successful; otherwise returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDib::LoadResource, TDib constructorsLoadResourceFORMAT="LINESPECIFIC"bool LoadResource(HINSTANCE instance, TResID resID);REMAP='BodyNoLead'Loads this DIB from the given resource and returns true if successful.See alsoREMAP='BodyNoLead'TDib::LoadFile, TDib constructorsReadFORMAT="LINESPECIFIC"bool Read(TFile& file, long offBits = 0);REMAP='BodyNoLead'Reads data to this DIB, starting at offset ROLE='italic'offBits, from any file, BMP, or resource. Returns ROLE='bold'true if the call is successful; otherwise returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TDib::LoadFileTDibDC ClassMOREINFO="NONE"dc.hREMAP='BodyNoLead'A DC class derived from ROLE='italic'TDC, TDibDC provides access to device-independent bitmaps (DIBs).Public constructorsConstructorFORMAT="LINESPECIFIC"TDibDC(const TDib& dib);REMAP='BodyNoLead'Creates a ROLE='italic'TDibDC object with the data provided by the given ROLE='italic'TDib object.See alsoREMAP='BodyNoLead'classTDib, TDC::TDCTDocManager classMOREINFO="NONE"docmanag.hREMAP='BodyNoLead'ROLE='italic'TDocManager creates a document manager object that manages the list of current documents and registered templates, handles standard file menu commands, and displays the user-interface for file and view selection boxes. To provide support for documents and views, an instance of ROLE='italic'TDocManager must be created by the application and attached to the application.REMAP='Body'The document manager normally handles events on behalf of the documents by using a response table to process the standard CM_FILENEW, CM_FILEOPEN, CM_FILECLOSE, CM_FILESAVE, CM_FILESAVEAS, CM_FILEREVERT, CM_FILEPRINT, CM_FILEPRINTERSETUP, and CM_VIEWCREATE. and CM_VIEWCREATE File menu commands. In response to a CM_FILENEW or a CM_FILEOPEN command, the document manager creates the appropriate document based on the user's selections. In response to the other commands, the document manager determines which of the open documents contains the view associated with the window that has focus. The menu commands are first sent to the window that is in focus and then through the parent window chain to the main window and finally to the application, which forwards the commands to the document manager.REMAP='Body'When you create a ROLE='italic'TDocManager or a derived class, you must specify that it has either a multi-document (ROLE='italic'dmMDI) or single-document (ROLE='italic'dmSDI) interface. In addition, if you want the document manager to handle the standard file commands, you must OR ROLE='italic'dmMDI or ROLE='italic'dmSDI with ROLE='italic'dmMenu.REMAP='Body'You can also enable or disable the document manager menu options by passing ROLE='italic'dmSaveEnable or ROLE='italic'dmNoRevert in the constructor. If you want to enable the File|Save menu option if the document is unmodified, pass the ROLE='italic'dmSaveEnable flag in the constructor. To disable the "Revert to Saved" menu option, pass ROLE='italic'dmNoRevert in the constructor.REMAP='Body'When the application directly creates a new document and view, it can attach the view to its frame window, create MDI children, float the window, or create a splitter. However, when the document manager creates a new document and view from the File|Open or File|New menu selection, the application doesn't control the process. To give the application control, the document manager sends messages after the new document and view are successfully created. Then, the application can use the information contained in the template to determine how to install the new document or view object.Public constructor and destructorConstructorsFORMAT="LINESPECIFIC"TDocManager(int mode, TDocTemplate*& templateHead = DocTemplateStaticHead);REMAP='BodyNoLead'Constructs a ROLE='italic'TDocManager object that supports either single (SDI) or multiple (MDI) open documents depending on the application. mode is set to either ROLE='italic'dmMenu, ROLE='italic'dmMDI, ROLE='italic'dmSDI, ROLE='italic'dmSaveEnable, or ROLE='italic'dmNoRevert. To install the standard ROLE='italic'TDocManager File menu commands, you must OR ROLE='italic'dmMDI or ROLE='italic'dmSDI with ROLE='italic'dmMenu. For example,FORMAT="LINESPECIFIC"DocManager = new TDocManager(DocMode | dmMenu);REMAP='Body'The document manager can then use its menu and response table to handle these events. If you do not specify the ROLE='italic'dmMenu parameter, you must provide the menu and functions to handle these commands. However, you can still use your application object's ROLE='italic'DocManager data member to access the document manager's functions.FORMAT="LINESPECIFIC"TDocManager(int mode, TApplication* app, TDocTemplate*& templateHead = DocTemplateStaticHead);REMAP='BodyNoLead'The constructor performs the same operations as the first constructor. The additional ROLE='italic'app parameter, however, points to the application associated with this document.DestructorFORMAT="LINESPECIFIC"virtual ~TDocManager( );REMAP='BodyNoLead'Destroys a ROLE='italic'TDocManager object removes attached documents templates. The constructor resets ROLE='italic'TDocTemplate::DocTemplateStaticHead so that it points to the head of the static template list.See alsoREMAP='BodyNoLead'dmxxxx document manager mode constantsPublic data membersDocListFORMAT="LINESPECIFIC"TDocument::List DocList;REMAP='BodyNoLead'Holds the list of attached documents or 0 if no documents exist.Public member functionsAttachTemplateFORMAT="LINESPECIFIC"void AttachTemplate(TDocTemplate& );REMAP='BodyNoLead'Inserts a template into the chain of templates.CmFileCloseFORMAT="LINESPECIFIC"virtual void CmFileClose( );REMAP='BodyNoLead'Responds to a file close message. Tests to see if the document has been changed since it was last saved, and if not, prompts the user to confirm the save operation.CmFileNewFORMAT="LINESPECIFIC"virtual void CmFileNew( );REMAP='BodyNoLead'Calls ROLE='italic'CreateAnyDoc with no path specified.See alsoREMAP='BodyNoLead'TDocManager::CreateAnyDoc, dtxxxx document template constantsCmFileOpenFORMAT="LINESPECIFIC"virtual void CmFileOpen( );REMAP='BodyNoLead'Lets the user select a registered template from the list displayed in the dialog box. Calls ROLE='italic'CreateAnyDoc.See alsoREMAP='BodyNoLead'TDocManager::CreateAnyDocCmFileRevertFORMAT="LINESPECIFIC"virtual void CmFileRevert( );REMAP='BodyNoLead'Reverts to the previously saved document. Does not revert if the document has not been changed since last save; that is, if the document's ROLE='italic'IsDirty function returns ROLE='bold'false.CmFileSaveFORMAT="LINESPECIFIC"virtual void CmFileSave( );REMAP='BodyNoLead'Responds to a file save message. Sets ROLE='italic'doc to the current document. ROLE='italic'CmFileSave checks ROLE='italic'IsDirty only if the ROLE='italic'dmSaveEnable flag was not specified. Calls ROLE='italic'PostDocError with IDS_NOTCHANGED if ROLE='italic'dmSaveEnable was NOT specified and ROLE='italic'IsDirty returns ROLE='bold'false.See alsoREMAP='BodyNoLead'IDS_xxxx Document String ID constantsCmFileSaveAsFORMAT="LINESPECIFIC"virtual void CmFileSaveAs( );REMAP='BodyNoLead'Prompts the user to enter a new name for the document and saves the document to that file.CmViewCreateFORMAT="LINESPECIFIC"virtual void CmViewCreate( );REMAP='BodyNoLead'Creates a document view based on the view name of the current document. If more than one template exists for the document, ROLE='italic'CmViewCreateallows the user to select the type of view from the template list. CreateAnyDocFORMAT="LINESPECIFIC"virtaul TDocument* CreateAnyDoc(const char far* path, long flags= 0);REMAP='BodyNoLead'Creates a document based on the directory path and the specified template. ROLE='italic'flags, one of the document template constants, determines how the document template is created. If ROLE='italic'path is 0 and this is not a new document (the flag ROLE='italic'dtNewDoc is not set), it displays a dialog box. If ROLE='italic'path is 0, ROLE='italic'dtNewDoc is not set, and more than one template exists, it displays a dialog box and a list of templates.See alsoREMAP='BodyNoLead'TDocTemplate::CreateDoc, dtxxxx document template constantsCreateAnyViewFORMAT="LINESPECIFIC"virtual TView* CreateAnyView(TDocument& doc, long flags= 0);REMAP='BodyNoLead'Creates a document view based on the directory path and specified template. ROLE='italic'flags, one of the document template constants, determines how the document template is created.See alsoREMAP='BodyNoLead'TDocument, TDocTemplate::CreateView, dtxxxx document templateconstantsCreateDocFORMAT="LINESPECIFIC"TDocument* CreateDoc(TDocTemplate* tpl, const char far *, TDocument* parent, long flags = 0);REMAP='BodyNoLead'CreateDoc creates a document based on the directory path and the specified template. ROLE='italic'flags contains one of the document template constants that determines how the documentis created.See alsoREMAP='BodyNoLead'TDocument, TDocTemplate::CreateView, dtxxxx document template constantsCreateViewFORMAT="LINESPECIFIC"TView* CreateView(TDocument* doc);REMAP='BodyNoLead'CreateView creates a view of the specified document.See alsoREMAP='BodyNoLead'TDocTemplate::CreateView, dtxxxx document template constantsDeleteTemplateFORMAT="LINESPECIFIC"void DeleteTemplate(TDocTemplate&);REMAP='BodyNoLead'Removes a template from the list of templates attached to the document.See alsoREMAP='BodyNoLead'TDocManager::RefTemplateEvCanCloseFORMAT="LINESPECIFIC"bool EvCanClose( );REMAP='BodyNoLead'Checks to see if all child documents can be closed before closing the current document. If any child returns ROLE='bold'false, returns ROLE='bold'false and aborts the process. If all children return ROLE='bold'true, ROLE='italic'EvCanClose calls ROLE='italic'TDocManager::FlushDoc for each document. If ROLE='italic'FlushDoc finds that the document is dirty, it displays a message asking the user to save the document, discard any changes, or cancel the operation. If the document is not dirty and ROLE='italic'EvCanClose returns true, ROLE='italic'EvCanClose returns ROLE='bold'true.See alsoREMAP='BodyNoLead'TApplication::CanClose, TDocManager::FlushDocEvPreProcessMenuFORMAT="LINESPECIFIC"void EvPreProcessMenu(HMENU hmenu);REMAP='BodyNoLead'Called from ROLE='italic'MainWindow, ROLE='italic'EvPreProcessMenu loads and deletes a menu at the position specified by MF_POSITION or MF_POPUP. Your application can call ROLE='italic'EvPreProcessMenu to process the main window's menu before it is displayed.See alsoREMAP='BodyNoLead'TApplication::PreProcessMenuEvWakeUpFORMAT="LINESPECIFIC"void EvWakeUp( );REMAP='BodyNoLead'Used only after streaming in the doc manager, ROLE='italic'EvWakeUp allows for the windows to be created after the streaming has occurred.FindDocumentFORMAT="LINESPECIFIC"TDocTemplate* FindDocument(const char far* path);REMAP='BodyNoLead'ROLE='italic'MatchDocument returns the first document whose pattern matches the given file name. If no document is compatible with the supplied file name, or if the document is open already, it returns 0.See alsoREMAP='BodyNoLead'TDocTemplateFlushDocFORMAT="LINESPECIFIC"virtual bool FlushDoc(TDocument& doc);REMAP='BodyNoLead'Updates the document with any changes and prompts the user for confirmation of updates.See alsoREMAP='BodyNoLead'TDocumentGetApplicationFORMAT="LINESPECIFIC"TApplication* GetApplication( );REMAP='BodyNoLead'Returns the current application.See alsoREMAP='BodyNoLead'TApplicationGetCurrentDocFORMAT="LINESPECIFIC"virtual TDocument* GetCurrentDoc( );REMAP='BodyNoLead'Calls ROLE='italic'TWindow::GetFocus to determine the window with the focus. Searches the list of documents and returns the document that contains the view with the focus. Returns 0 if no document has a view with focus.See alsoREMAP='BodyNoLead'TDocumentGetNextTemplateFORMAT="LINESPECIFIC"TDocTemplate* GetNextTemplate(TDocTemplate* tpl);REMAP='BodyNoLead'Returns the next document template.See alsoREMAP='BodyNoLead'TDocTemplateInitDocFORMAT="LINESPECIFIC"TDocument* InitDoc(TDocument* doc, const char far* path, long flags)REMAP='BodyNoLead'Initializes the documents, directory path for the document, and ROLE='italic'dtXXXX document flag values (such as ROLE='italic'dtNewDoc ) used to create document templates. See alsoREMAP='BodyNoLead'TDocTemplate, dt Documentview ConstantsIsFlagSetFORMAT="LINESPECIFIC"bool IsFlagSet(int Flag);REMAP='BodyNoLead'Returns true if the ROLE='italic'dtXXXX document template constant specified in ROLE='italic'Flag is set.See alsoREMAP='BodyNoLead'dt Documentview ConstantsMatchTemplateFORMAT="LINESPECIFIC"TDocTemplate* MatchTemplate(const char far* path);REMAP='BodyNoLead'ROLE='italic'MatchTemplate returns the first registered template whose pattern matches the given file name. If no template is compatible with the supplied file name, or if the template is open already, it returns 0.See alsoREMAP='BodyNoLead'TDocTemplatePostDocErrorFORMAT="LINESPECIFIC"virtual uint PostDocError(TDocument& doc, uint sid, uint choice = MB_OK);REMAP='BodyNoLead'Displays a message box with the error message passed as a string resource ID in ROLE='italic'sid. By default, the message box contains either an OK pushbutton or a question mark icon. If an error message can't be found, ROLE='italic'PostDocError displays a "Message not found" message. choice can be one or more of the ROLE='italic'MB_Xxxx message style constants. This function can be overridden.See alsoREMAP='BodyNoLead'TDocument::PostError, MB_Xxxx Message ConstantsPostEventFORMAT="LINESPECIFIC"virtual void PostEvent(int id, TDocument& doc);REMAP='BodyNoLead'If the current document changes, posts a WM_OWLDOCUMENT message to indicate a change in the status of the document.FORMAT="LINESPECIFIC"virtual void PostEvent(int id, TView& view);REMAP='BodyNoLead'If the current view changes, posts a WM_OWLVIEW message to indicate a change in the status of the view.See alsoREMAP='BodyNoLead'TDocument, TViewRefTemplateFORMAT="LINESPECIFIC"void RefTemplate(TDocTemplate&);REMAP='BodyNoLead'Adds a template to the list of templates attached to the document.See alsoREMAP='BodyNoLead'TDocManager::UnRefTemplate, TDocTemplateSelectAnySaveFORMAT="LINESPECIFIC"virtual TDocTemplate* SelectAnySave(TDocument& doc, bool samedoc = true);REMAP='BodyNoLead'Selects a registered template to save with this document.See alsoREMAP='BodyNoLead'TDocTemplate, TDocumentSelectSaveFORMAT="LINESPECIFIC"bool SelectSave(TDocument& doc);REMAP='BodyNoLead'Prompts the user to select a file name for the document. Filters out read-only files.See alsoREMAP='BodyNoLead'TDocTemplate::SelectSaveUnRefTemplateFORMAT="LINESPECIFIC"void UnRefTemplate(TDocTemplate&);REMAP='BodyNoLead'Removes a template to the list of templates attached to the document.See alsoREMAP='BodyNoLead'TDocManager::RefTemplate, TDocTemplateProtected member functionsSelectDocPathFORMAT="LINESPECIFIC"virtual int SelectDocPath(TDocTemplate** tpllist, int tplcount, char far* path, int buflen, long flags, bool save=false);REMAP='BodyNoLead'Prompts the user to select one of the templates to use for the file to be opened. Returns the template index used for the selection or 0 if unsuccessful. For a file open operation, ROLE='italic'save is ROLE='bold'false. For a file save operation, ROLE='italic'save is ROLE='bold'true. This function can be overridden to provide a customized user-interface.See alsoREMAP='BodyNoLead'TDocTemplateSelectDocTypeFORMAT="LINESPECIFIC"virtual int SelectDocType(TDocTemplate** tpllist, int tplcount);REMAP='BodyNoLead'ROLE='italic'SelectDocType, which can be overridden, lets the user select a document type from a list of document templates. Returns the template index used for the selection or 0 if unsuccessful.See alsoREMAP='BodyNoLead'TDocTemplateSelectViewTypeFORMAT="LINESPECIFIC"virtual int SelectViewType(TDocTemplate** tpllist, int tplcount);REMAP='BodyNoLead'ROLE='italic'SelectViewType, which can be overridden, lets the user select a view name for a new view from a list of view names. Returns the template index used for the selection or 0 if unsuccessful.See alsoREMAP='BodyNoLead'TDocTemplateCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='252*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_FILECLOSE, CmFileClose)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmFileCloseCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_FILENEW, CmFileNew)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmFileNewCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_FILEOPEN, CmFileOpen)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmFileOpenCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_FILEREVERT, CmFileRevert)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmFileRevertCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_FILESAVE, CmFileSave)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmFileSaveCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_FILESAVEAS, CmFileSaveAs)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmFileSaveAsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_VIEWCREATE, CmViewCreate)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmViewCreateCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_FILECLOSE, CmEnableClose)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmEnableCloseCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_FILENEW, CmEnableNew)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmEnableNewCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_FILEOPEN, CmEnableOpen)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmEnableOpenCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_FILEREVERT, CmEnableRevert)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EmEnableRevertCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_FILESAVE, CmEnableSave)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmEnableSaveCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_FILESAVEAS, CmEnableSaveAs)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmEnableSaveAsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_VIEWCREATE, CmEnableCreate)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmEnableCreateCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CANCLOSECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvCanCloseCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_PREPROCMENUCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvPreProcessMenuCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_WAKEUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvWakeUpResponse table entriesTDocument classMOREINFO="NONE"docview.hREMAP='BodyNoLead'An abstract base class, ROLE='italic'TDocument is the base class for all document objects and serves as an interface between the document, its views, and the document manager (ROLE='italic'TDocManager class). ROLE='italic'TDocument creates, destroys, and sends messages about the view. For example, if the user changes a document, ROLE='italic'TDocument tells the view that the document has been updated. The DEFINE_DOC_TEMPLATE_CLASS macro associates a document with its views.REMAP='Body'In order to send messages to its associated views, the document maintains a list of all the views existing for that document and communicates with the views using ObjectWindows event-handling mechanism. Rather than using the function ROLE='italic'SendMessage, the document accesses the view's event table. The views can update the document's data by calling the member functions of the particular document. Views can also request streams, which are constructed by the document.REMAP='Body'Both documents and views have lists of properties for their applications to use. When documents and views are created or destroyed, messages are sent to the application, which can then query the properties to determine how to process the document or view. It is the document manager's responsibility to determine if a particular view is appropriate for the given document.REMAP='Body'Because the property attribute functions are virtual, a derived class (which is called first) might override the properties defined in a base class. Each derived class must implement its own property attribute types of either string or binary data. If the derived class duplicates the property names of the parent class, it should provide the same behavior and data type as the parent.REMAP='Body'In order to add persistence to documents, ROLE='italic'TDocument contains several virtual functions (for example, ROLE='italic'InStream and ROLE='italic'OutStream) that support streaming. Your derived classes need to override these functions in order to read and write data.REMAP='Body'Although documents are usually associated with files, they do not necessarily have to be files; they can also consist of database tables, mail systems, fax or modem transmissions, disk directories, and so on.Public data membersChildDocFORMAT="LINESPECIFIC"List ChildDoc;REMAP='BodyNoLead'The list of child documents associated with this document.TagFORMAT="LINESPECIFIC"void far* Tag;REMAP='BodyNoLead'ROLE='italic'Tag holds a pointer to the application-defined data. Typically, you can use ROLE='italic'Tag to install a pointer to your own application's associated data structure. ROLE='italic'Tag, which is initialized to 0 at the time a ROLE='italic'TDocument is constructed, is not used otherwise by the document view classes.Type definitionTDocPropFORMAT="LINESPECIFIC"enum TDocProp{ PrevProperty = 0, DocumentClass, TemplateName, ViewCount, StoragePath, DocTitle, NextProperty, };REMAP='BodyNoLead'These property values, defined for ROLE='italic'TDocument, are available in classes derived from ROLE='italic'TDocument. PrevProperty and NextProperty are delimiters for every document's property list. Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TDocument(TDocument* parent = 0);REMAP='BodyNoLead'Although you don't create a ROLE='italic'TDocument object directly, you must call the constructor when you create a derived class. parent points to the parent of the new document. If no parent exists, parent is 0.DestructorFORMAT="LINESPECIFIC"virtual ~TDocument( );REMAP='BodyNoLead'Deletes a ROLE='italic'TDocument object. Normally, ROLE='italic'Close is called first. ROLE='italic'TDocument's destructor destroys all children and closes all open streams. If this is the last document that used the template, it closes the object's template and any associated views, deletes the object's stream, and removes itself from the parent's list of children if a parent exists. If there is no parent, it removes itself from the document manager's document list.See alsoREMAP='BodyNoLead'TDocument::ClosePublic member functionsCanCloseFORMAT="LINESPECIFIC"virtual bool CanClose( );REMAP='BodyNoLead'Checks to see if all child documents can be closed before closing the current document. If any child returns false, ROLE='italic'CanClose returns false and aborts the process. If all children return true, calls ROLE='italic'TDocManager::ROLE='italic'FlushDoc. If ROLE='italic'FlushDoc finds that the document has been changed but not saved, it displays a message asking the user to either save the document, discard any changes, or cancel the operation. If the document has not been changed and all children's ROLE='italic'CanClose functions return ROLE='bold'true, this ROLE='italic'CanClose function returns true.See alsoREMAP='BodyNoLead'TDocManager::FlushDocCloseFORMAT="LINESPECIFIC"virtual bool Close( );REMAP='BodyNoLead'Closes the document but does not delete or detach the document. Before closing the document, ROLE='italic'Close checks any child documents and tries to close them before closing the parent document. Even if you write your own ROLE='italic'Close function, call ROLE='italic'TDocument's version so that all child documents are checked before the parent document is closed.CommitFORMAT="LINESPECIFIC"virtual bool Commit(bool force = false);REMAP='BodyNoLead'Saves the current data to storage. When a file is closed, the document manager calls either ROLE='italic'Commit or ROLE='italic'Revert. If ROLE='italic'force is ROLE='bold'true, all data is written to storage. ROLE='italic'TDocument's ROLE='italic'Commit checks any child documents and commits their changes to storage also. Before the current data is saved, all child documents must return true. If all child documents return true, ROLE='italic'Commit flushes the views for operations that occurred since the last time the view was checked. Once all data for the document is updated and saved, ROLE='italic'Commit returns true.See alsoREMAP='BodyNoLead'TDocument::RevertFindPropertyFORMAT="LINESPECIFIC"virtual int FindProperty(const char far* name);REMAP='BodyNoLead'Gets the property index, given the property name (ROLE='italic'name). Returns the integer index number that corresponds to the name or 0 if the name isn't found in the list of properties.See alsoREMAP='BodyNoLead'pfxxxx property attribute constants, TDocument::PropertyNameGetDocManagerFORMAT="LINESPECIFIC"TDocManager& GetDocManager( );REMAP='BodyNoLead'Returns a pointer to the current document manager.GetDocPathFORMAT="LINESPECIFIC"const char far* GetDocPath( );REMAP='BodyNoLead'Returns the directory path for the document. This might change the SaveAs operation.GetOpenModeFORMAT="LINESPECIFIC"int GetOpenMode;REMAP='BodyNoLead'Gets the mode and protection flag values for the current document.See alsoREMAP='BodyNoLead'TDocument::SetOpenModeGetParentDocFORMAT="LINESPECIFIC"TDocument* GetParentDoc( ):REMAP='BodyNoLead'Returns the parent document of the current document or 0 if there is no parent document.GetPropertyFORMAT="LINESPECIFIC"virtual int GetProperty(int index, void far* dest, int textlen=0);REMAP='BodyNoLead'Returns the total number of properties for this document where ROLE='italic'index is the property index, ROLE='italic'dest contains the property data, and ROLE='italic'textlen is the size of the array. If ROLE='italic'textlen is 0, property data is returned as binary data; otherwise, property data is returned as text data.See alsoREMAP='BodyNoLead'pfxxxx property attribute constants, TDocument::SetPropertyGetTemplateFORMAT="LINESPECIFIC"TDocTemplate* GetTemplate( );REMAP='BodyNoLead'Gets the template used for document creation. The template can be changed during a SaveAs operation.GetTitleFORMAT="LINESPECIFIC"CONST CHAR FAR* GetTitle( );REMAP='BodyNoLead'Returns the title of the document.HasFocusFORMAT="LINESPECIFIC"bool HasFocus(HWND hwnd);REMAP='BodyNoLead'Used by the document manager, ROLE='italic'HasFocus returns ROLE='bold'true if this document's view has focus. ROLE='italic'hwnd is a handle to the document to determine if the document contains a view with a focus.REMAP='Body'The view associated with this document is the active view.InitDocFORMAT="LINESPECIFIC"virtual bool InitDoc( );REMAP='BodyNoLead'ROLE='italic' TDocument's InitDoc is a virtual method that is overridden by ROLE='italic'TOleDocument's InitDoc. You can use this function to prepare the document before the ROLE='italic'dnCreate event, which indicates that the document has been created, is posted and before the view is constructed.See alsoREMAP='BodyNoLead'TOleDocument::InitDoc, dnxxxx document message enumInStreamFORMAT="LINESPECIFIC"virtual TInStream* InStream(int mode, const char far* strmId=0);REMAP='BodyNoLead'Generic input for the particular storage medium, ROLE='italic'InStream returns a pointer to a ROLE='italic'TInStream. mode is a combination of the ROLE='italic'ios bits defined in iostream.h. See the document open mode constants for a list of the open modes. Used for documents that support named streams, ROLE='italic'strmId is a pointer to the name of a stream. Override this function to provide streaming for your document class.See alsoREMAP='BodyNoLead'TDocument::OutStreamIsDirtyFORMAT="LINESPECIFIC"virtual bool IsDirty( );REMAP='BodyNoLead'Returns ROLE='bold'true if the document or one of its views has changed but has not been saved.IsEmbeddedFORMAT="LINESPECIFIC"virtual bool IsEmbedded( );REMAP='BodyNoLead'Returns ROLE='bold'true if the document is embedded in an OLE2 container.See alsoREMAP='BodyNoLead'TDocument::SetEmbeddedIsOpenFORMAT="LINESPECIFIC"virtual bool IsOpen( );REMAP='BodyNoLead'Checks to see if the document has any streams in its stream list. Returns ROLE='bold'false if no streams are open; otherwise, returns ROLE='bold'true.NextStreamFORMAT="LINESPECIFIC"TStream* NextStream(const TStream* strm);REMAP='BodyNoLead'Gets the next entry in the stream. Holds 0 if none exists.NextViewFORMAT="LINESPECIFIC"TView* NextView(const TView* view);REMAP='BodyNoLead'Gets the next view in the list of views. Holds 0 if none exists.NotifyViewsFORMAT="LINESPECIFIC"bool NotifyViews(int event, long item=0, TView* exclude=0);REMAP='BodyNoLead'Notifies the views of the current document and the views of any child documents of a change, In contrast to ROLE='italic'QueryViews, ROLE='italic'NotifyViews sends notification of an event to all views and returns ROLE='bold'true if any views returned a true result. The event, EV_OWLNOTIFY, is sent with an event code, which is private to the particular document and view class, and a ROLE='bold'long argument, which can be cast appropriately to the actual type passed in the argument of the response function.See alsoREMAP='BodyNoLead'TDocument::QueryViewsOpenFORMAT="LINESPECIFIC"virtual bool Open(int mode, const char far* path = 0);REMAP='BodyNoLead'Opens the document using the path specified by ROLE='italic'DocPath. Sets ROLE='italic'OpenMode to ROLE='italic'mode. ROLE='italic'TDocument's version always returns true and actually performs no actions. Other classes override this function to open specified file documents and views.See alsoREMAP='BodyNoLead'TFileDocument::OpenOutStreamFORMAT="LINESPECIFIC"virtual TOutStream* OutStream(int mode, const char far* strmId = 0);REMAP='BodyNoLead'Generic output for the particular storage medium, ROLE='italic'OutStream returns a pointer to a ROLE='italic'TOutStream. ROLE='italic'mode is a combination of the ROLE='italic'ios bits defined in iostream.h. Used for documents that support named streams, ROLE='italic'strmId points to the name of the stream. ROLE='italic'TDocument's version always returns 0. Override this function to provide streaming for your document class.See alsoREMAP='BodyNoLead'TDocument::InStreamPostErrorFORMAT="LINESPECIFIC"virtual uint PostError(uint sid, uint choice = MB_OK);REMAP='BodyNoLead'Posts the error message passed as a string resource ID in ROLE='italic'sid. choice is one or more of the MB_Xxxx style constants. See alsoREMAP='BodyNoLead'TDocManager::PostDocError, MB_Xxxx message constantsPropertyCountFORMAT="LINESPECIFIC"virtual int PropertyCount( );REMAP='BodyNoLead'Gets the total number of properties for the ROLE='italic'TDocument object. Returns ROLE='italic'NextProperty -1.See alsoREMAP='BodyNoLead'pfxxxx property attribute constantsPropertyFlagsFORMAT="LINESPECIFIC"virtual int PropertyFlags(int index);REMAP='BodyNoLead'Returns the attributes of a specified property given the index (ROLE='italic'index) of the property whose attributes you want to retrieve.See alsoREMAP='BodyNoLead'pfxxxx property attribute constants, TDocument::FindProperty, TDocument::PropertyNamePropertyNameFORMAT="LINESPECIFIC"virtual const char* PropertyName(int index);REMAP='BodyNoLead'Returns the name of the property given the index value (ROLE='italic'index).See alsoREMAP='BodyNoLead'pfxxxx property attribute constants, TDocument::FindPropertyQueryViewsFORMAT="LINESPECIFIC"TView* QueryViews(int event, long item=0, TView* exclude=0);REMAP='BodyNoLead'Queries the views of the current document and the views of any child documents about a specified event, but stops at the first view that returns ROLE='bold'true, In contrast to ROLE='italic'NotifyViews, ROLE='italic'QueryViews returns a pointer to the first view that responded to an event with a ROLE='bold'true result. The event, EV_OWLNOTIFY, is sent with an event code (which is private to the particular document and view class) and a ROLE='italic'long argument (which can be cast appropriately to the actual type passed in the argument of the response function).See alsoREMAP='BodyNoLead'TDocument::NotifyViewsRevertFORMAT="LINESPECIFIC"virtual bool Revert( bool clear = false);REMAP='BodyNoLead'Performs the reverse of ROLE='italic'Commit and cancels any changes made to the document since the last ROLE='italic'commit. If ROLE='italic'clear is ROLE='bold'true, data is not reloaded for views. ROLE='italic'Revert also checks all child documents and cancels any changes if all children return ROLE='bold'true. When a file is closed, the document manager calls either ROLE='italic'Commit or ROLE='italic'Revert. Returns ROLE='bold'true if the operation is successful.See alsoREMAP='BodyNoLead'TDocument::CommitRootDocumentFORMAT="LINESPECIFIC"virtual TDocument& RootDocument( );REMAP='BodyNoLead'Returns the ROLE='bold'this pointer as the root document.SetDocManagerFORMAT="LINESPECIFIC"void SetDocManager(TDocManager& dm);REMAP='BodyNoLead'Sets the current document manager to the argument ROLE='italic'dm.SetDocPathFORMAT="LINESPECIFIC"virtual bool SetDocPath(const char far* path);REMAP='BodyNoLead'Sets the document path for Open and Save operations.SetEmbeddedFORMAT="LINESPECIFIC"virtual bool SetEmbedded( );REMAP='BodyNoLead'ROLE='italic'SetEmbedded marks the document as being embedded in an OLE2 container. Typically, this happens when the server is created and when the factory template class create the component.See alsoREMAP='BodyNoLead'TDocument::IsEmbeddedSetOpenModeFORMAT="LINESPECIFIC"void SetOpenMode(int mode);REMAP='BodyNoLead'Sets the mode and protection flag values for the current document.See alsoREMAP='BodyNoLead'TDocument::GetOpenModeSetPropertyFORMAT="LINESPECIFIC"virtual bool SetProperty(int index, const void far* src);REMAP='BodyNoLead'Sets the value of the property, given ROLE='italic'index, the index value of the property, and ROLE='italic'src, the data type (either binary or text) to which the property must be set.See alsoREMAP='BodyNoLead'pfxxxx property attribute constants, TDocument::GetPropertySetTemplateFORMAT="LINESPECIFIC"bool SetTemplate(TDocTemplate* tpl);REMAP='BodyNoLead'Sets the document template. However, if the template type is incompatible with the file, the document manager will refuse to save the file as this template type.SetTitleFORMAT="LINESPECIFIC"virtual void SetTitle(const char far* title);REMAP='BodyNoLead'Sets the title of the document.Protected data membersDirtyFlagFORMAT="LINESPECIFIC"bool DirtyFlag;REMAP='BodyNoLead'Indicates that unsaved changes have been made to the document. Views can also independently maintain their local disk status.EmbeddedFORMAT="LINESPECIFIC"bool Embedded;REMAP='BodyNoLead'Indicates whether the document is embedded.Protected member functionsAttachStreamFORMAT="LINESPECIFIC"virtual void AttachStream(TStream& strm);REMAP='BodyNoLead'Called from ROLE='italic'TStream's constructor, ROLE='italic'AttachStream attaches a stream to the current document.DetachStreamFORMAT="LINESPECIFIC"virtual void DetachStream(TStream& strm);REMAP='BodyNoLead'Called from ROLE='italic'TStream's destructor, ROLE='italic'DetachStream detaches the stream from the current document.TDocument::List classMOREINFO="NONE"docview.hREMAP='Body'The ROLE='italic'TDocument::List nested class encapsulates the chain of documents. It allows addition, removal, and destruction of documents from the document list.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"List( );REMAP='BodyNoLead'Constructs a ROLE='italic'TDocument::List object.DestructorFORMAT="LINESPECIFIC"~List( );REMAP='BodyNoLead'Destroys the ROLE='italic'TDocument::List object.Public member functionsDestroyFORMAT="LINESPECIFIC"void Destroy( );REMAP='BodyNoLead'Deletes all documents.InsertFORMAT="LINESPECIFIC"bool Insert(TDocument* doc);REMAP='BodyNoLead'Inserts a new document into the document list. Fails if the document already exists.NextFORMAT="LINESPECIFIC"TDocument* Next(const TDocument* doc);REMAP='BodyNoLead' If the ROLE='italic'doc parameter is 0, ROLE='italic'Next returns the first document in the list of documents.RemoveFORMAT="LINESPECIFIC"bool Remove(TDocument* doc);REMAP='BodyNoLead'Removes a document from the document list.TEdgeConstraint structMOREINFO="NONE"layoutco.hREMAP='BodyNoLead'ROLE='italic'TEdgeConstraint adds member functions that set edge (but not size) constraints. ROLE='italic'TEdgeConstraint always places your window one pixel above the other window and then adds margins. REMAP='Body'For example, if the margin is 4, ROLE='italic'TEdgeConstraint places your window 5 pixels above the other window. The margin, which does not need to be measured in pixels, is defined using the units specified by the constraint. Therefore, if the margin is specified as 8 layout units (which are then converted to 12 pixels), your window would be placed 13 pixels above the other window. See alsoREMAP='BodyNoLead'TLayoutConstraint struct, TEdgeOrSizeConstraint struct, TLayoutWindow (layout constraints example)Public member functionsAboveFORMAT="LINESPECIFIC"void Above (TWindow *sibling, int margin = 0)REMAP='BodyNoLead'Positions your window above a sibling window. You must specify the sibling window and an optional margin between the two windows. If no margin is specified, ROLE='italic'Above sets the bottom of one window one pixel above the top of the other window.See alsoREMAP='BodyNoLead'TEdgeConstraint::BelowAbsoluteFORMAT="LINESPECIFIC"void Absolute (TEdge edge, int value)REMAP='BodyNoLead'Sets an edge of your window to a fixed value.See alsoREMAP='BodyNoLead'TEdgeConstraint::PercentOf, TEdgeOrSizeConstraint::AbsoluteBelowFORMAT="LINESPECIFIC"void Below(TWindow *sibling, int margin = 0);REMAP='BodyNoLead'Positions your window with respect to a sibling window. You must specify the sibling window and an optional margin between the two windows. If no margin is specified, ROLE='italic'Below sets the top of one window one pixel below the bottom of the other window.See alsoREMAP='BodyNoLead'TEdgeConstraint::AboveLeftOfFORMAT="LINESPECIFIC"void LeftOf (TWindow *sibling, int margin = 0)REMAP='BodyNoLead'Positions one window with respect to a sibling window. You can specify the sibling window and an optional margin between the two windows.See alsoREMAP='BodyNoLead'TEdgeConstraint::RightOfPercentOfFORMAT="LINESPECIFIC"void PercentOf (TWindow *otherWin, TEdge edge, int percent)REMAP='BodyNoLead'Specifies that the edge of one window indicated in edge should be a percentage of the corresponding edge of another window (ROLE='italic'otherWin).See alsoREMAP='BodyNoLead'TEdgeConstraint::Absolute, TEdgeOrSizeConstraint::PercentOfRightOfFORMAT="LINESPECIFIC"void RightOf (TWindow *sibling, int margin = 0)REMAP='BodyNoLead'Positions one window with respect to a sibling window. You can specify the sibling window and an optional margin between the two windows.See alsoREMAP='BodyNoLead'TEdgeConstraint::LeftOfSameAsFORMAT="LINESPECIFIC"void SameAs (TWindow *otherWin, TEdge edge)REMAP='BodyNoLead'Sets the edge of your window indicated by ROLE='italic'edge equivalent to the corresponding edge of the window in ROLE='italic'otherWin.See alsoREMAP='BodyNoLead'ROLE='italic'TEdgeConstraint::Set, TEdgeOrSizeConstraint::SameAsSetFORMAT="LINESPECIFIC"void Set(TEdge edge, TRelationship rel, TWindow *otherWin, TEdge otherEdge, int value = 0);REMAP='BodyNoLead'Used for setting arbitrary edge constraints, ROLE='italic'Set specifies that your window's edge should be of a specified relationship to ROLE='italic'otherWin's specified edge.See alsoREMAP='BodyNoLead'TEdgeConstraint::SameAsTEdgeOrSizeConstraint structMOREINFO="NONE"layoutco.hREMAP='BodyNoLead'Derived from ROLE='italic'TEdgeConstraint, TEdgeOrSizeConstraint is a template class that supports size constraints in addition to all the operations that ROLE='italic'TEdgeConstraint provides. The width or height is specified in the template instantiation of this class. There are two versions of each member function: one sets both edge and size constraints; the other sets only edge constraints.Public member functionsAbsoluteFORMAT="LINESPECIFIC"void Absolute (int value)REMAP='BodyNoLead'Sets the width or height of your window to a fixed value.FORMAT="LINESPECIFIC"void Absolute (TEdge edge, int value)REMAP='BodyNoLead'Used to determine edge constraints only, ROLE='italic'Absolute sets the edge of your window to a fixed value.See alsoREMAP='BodyNoLead'TEdgeConstraint::AbsolutePercentOfFORMAT="LINESPECIFIC"void PercentOf (TWindow *otherWin, int percent, TWidthHeight otherWidthHeight = widthOrHeight)REMAP='BodyNoLead'Although a window's width or height defaults to being a percentage of the sibling or parent window's corresponding dimension, it can also be a percentage of the sibling or parent's opposite dimension. For example, one window's width can be 50% of the parent window's height.FORMAT="LINESPECIFIC"void PercentOf (TWindow *otherWin, TEdge edge, int percent)REMAP='BodyNoLead'Used to determine edge constraints only, ROLE='italic'PercentOf specifies that the edge of one window indicated in ROLE='italic'edge should be a percentage of the corresponding edge of another window (ROLE='italic'otherWin.See alsoREMAP='BodyNoLead'TEdgeOrSizeConstraint::Absolute, TEdgeConstraint::PercentOfSameAsFORMAT="LINESPECIFIC"void SameAs (TWindow *otherWin, TWidthHeight otherWidthHeight = widthOrHeight, int value = 0)REMAP='BodyNoLead'Although a window's width or height defaults to being the same as the sibling or parent window's corresponding dimension, it can be the same of the sibling's or parent's opposite dimension. For example, one window's width can be the same as the parent window's height.FORMAT="LINESPECIFIC"void SameAs (TWindow *otherWin, TEdge edge)REMAP='BodyNoLead'Used to determine edge constraints only, ROLE='italic'SameAs sets the edge of one window the same as the corresponding edge of the other window specified in ROLE='italic'otherWin.See alsoREMAP='Body'TEdgeOrSizeConstraint::PercentOf, TEdgeConstraint::SameAsTEdit classMOREINFO="NONE"edit.hREMAP='BodyNoLead'A ROLE='italic'TEdit is an interface object that represents an edit control interface element. A ROLE='italic'TEdit object must be used to create an edit control in a parent ROLE='italic'TWindow. A ROLE='italic'TEdit can be used to facilitate communication between your application and the edit controls of a ROLE='italic'TDialog. This class is streamable.REMAP='Body'There are two styles of edit control objects: single-line and multiline. Multiline edit controls allow editing of multiple lines of text.REMAP='Body'The position of the first character in an edit control is zero. For a multiline edit control, the position numbers continue sequentially from line to line; line breaks count as two characters.REMAP='Body'Most of ROLE='italic'TEdit's member functions manage the edit control's text. ROLE='italic'TEdit also includes some automatic member response functions that respond to selections from the edit control's parent window menu, including cut, copy, and paste. Two important member functions inherited from ROLE='italic'TEdit's base class (ROLE='italic'TStatic) are ROLE='italic'GetText and ROLE='italic'SetText.Public constructorsConstructorsFORMAT="LINESPECIFIC"TEdit(TWindow* parent, int Id, const char far *text, int x, int y, int w, int h, uint textLen = 0, bool multiline = false, TModule* module = 0);REMAP='BodyNoLead'Constructs an edit control object with a parent window (ROLE='italic'parent). Sets the creation attributes of the edit control and fills its ROLE='italic'Attr data members with the specified control ID (ROLE='italic'Id), position (ROLE='italic'x, y) relative to the origin of the parent window's client area, width (ROLE='italic'w), and height (ROLE='italic'h).REMAP='Body'If text buffer length (ROLE='italic'textLen) is 0 or 1, there is no explicit limit to the number of characters that can be entered. Otherwise ROLE='italic'textLen - 1 characters can be entered. By default, initial text (ROLE='italic'text) in the edit control is left-justified and the edit control has a border. Multiline edit controls have horizontal and vertical scroll bars.FORMAT="LINESPECIFIC"TEdit(TWindow* parent, int resourceID, uint textLen = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TEdit object to be associated with an edit control of a ROLE='italic'TDialog. Invokes the ROLE='italic'TStatic constructor with identical parameters. The ROLE='italic'resourceID parameter must correspond to an edit resource that you define. Enables the data transfer mechanism by calling ROLE='italic'EnableTransfer.See alsoREMAP='BodyNoLead'TStatic::TStaticPublic member functionsCanUndoFORMAT="LINESPECIFIC"bool CanUndo( );REMAP='BodyNoLead'Returns ROLE='bold'true if it is possible to undo the last edit.See alsoREMAP='BodyNoLead'TEdit::UndoClearFORMAT="LINESPECIFIC"void Clear( );REMAP='BodyNoLead'Overrides ROLE='italic'TStatic's virtual member function and clears all text.ClearModifyFORMAT="LINESPECIFIC"void ClearModify( );REMAP='BodyNoLead'Resets the change flag of the edit control causing ROLE='italic'IsModified to return ROLE='bold'false. The flag is set when text is modified.See alsoREMAP='BodyNoLead'TEdit::IsModifiedCopyFORMAT="LINESPECIFIC"void Copy( );REMAP='BodyNoLead'Copies the currently selected text into the Clipboard.CutFORMAT="LINESPECIFIC"void Cut( );REMAP='BodyNoLead'Deletes the currently selected text and copies it into the Clipboard.DeleteLineFORMAT="LINESPECIFIC"bool DeleteLine(int lineNumber);REMAP='BodyNoLead'Deletes the text in the line specified by ROLE='italic'lineNumber in a multiline edit control. If -1 passed, deletes the current line. ROLE='italic'DeleteLine does not delete the line break and affects no other lines. Returns true if successful. Returns false if ROLE='italic'lineNumber is not -1 and is out of range or if an error occurs.DeleteSelectionFORMAT="LINESPECIFIC"bool DeleteSelection( );REMAP='BodyNoLead'Deletes the currently selected text, and returns ROLE='bold'false if no text is selected.DeleteSubTextFORMAT="LINESPECIFIC"bool DeleteSubText(uint startPos, uint endPos);REMAP='BodyNoLead'Deletes the text between the starting and ending positions specified by ROLE='italic'startPos and ROLE='italic'endPos, respectively. ROLE='italic'DeleteSubText returns ROLE='bold'true if successful.EmptyUndoBufferFORMAT="LINESPECIFIC"void EmptyUndoBuffer( );REMAP='BodyNoLead'If an operation inside the edit control can be undone, the edit control undo flag is set. ROLE='italic'EmptyUndoBuffer resets or clears this flag.FormatLinesFORMAT="LINESPECIFIC"void FormatLines(bool addEOL);REMAP='BodyNoLead'Indicates if the end-of-line characters (carriage return, linefeed) are to be added or removed from text lines that are wordwrapped in a multiline edit control. Returns ROLE='bold'true if these characters are placed at the end of wordwrapped lines or ROLE='bold'false if they are removed.GetFirstVisibleLineFORMAT="LINESPECIFIC"int GetFirstVisibleLine( ) const;REMAP='BodyNoLead'Indicates the topmost visible line in an edit control. For single-line edit controls, the return value is 0. For multiline edit controls, the return value is the index of the topmost visible line.GetHandleFORMAT="LINESPECIFIC"HLOCAL GetHandle( ) const;REMAP='BodyNoLead'Returns the data handle of the buffer that holds the contents of the control window.REMAP='Body'This function is obsolete, and is not available under Presentation Manager.See alsoREMAP='BodyNoLead'TEdit::SetHandleGetLineFORMAT="LINESPECIFIC"bool GetLine(char far* str, int strSize, int lineNumber);REMAP='BodyNoLead'Retrieves a line of text (whose line number is supplied) from the edit control and returns it in ROLE='italic'str (NULL-terminated). ROLE='italic'strSize indicates how many characters to retrieve. ROLE='italic'GetLine returns ROLE='bold'false if it is unable to retrieve the text or if the supplied buffer is too small.See alsoREMAP='BodyNoLead'TStatic::GetText, TEdit::GetNumLines, TEdit::GetLineLengthGetLineFromPosFORMAT="LINESPECIFIC"int GetLineFromPos(uint charPos);REMAP='BodyNoLead'From a multiline edit control, returns the line number on which the character position specified by ROLE='italic'charPos occurs. If ROLE='italic'charPos is greater than the position of the last character, the number of the last line is returned. If ROLE='italic'charPos is -1, the number of the line that contains the first selected character is returned. If there is no selection, the line containing the caret is returned.GetLineIndexFORMAT="LINESPECIFIC"uint GetLineIndex(int lineNumber);REMAP='BodyNoLead'In a multiline edit control, ROLE='italic'GetLineIndex returns the number of characters that appear before the line number specified by ROLE='italic'lineNumber. If ROLE='italic'lineNumber is -1, ROLE='italic'GetLineIndex returns the number of the line that contains the caret is returned.GetLineLengthFORMAT="LINESPECIFIC"int GetLineLength(int lineNumber);REMAP='BodyNoLead'From a multiline edit control, ROLE='italic'GetLineLength returns the number of characters in the line specified by ROLE='italic'lineNumber. If it is -1, the following applies: if no text is selected, ROLE='italic'GetLineLength returns the length of the line where the caret is positioned; if text is selected on the line, ROLE='italic'GetLineLength returns the line length minus the number of selected characters; if selected text spans more than one line, ROLE='italic'GetLineLength returns the length of the lines minus the number of selected characters.GetNumLinesFORMAT="LINESPECIFIC"int GetNumLines( );REMAP='BodyNoLead'Returns the number of lines that have been entered in a multiline edit control: 1 if the edit control has no text (if it has one line with no text in it), or 0 if there is no text or if an error occurs.GetPasswordCharFORMAT="LINESPECIFIC"uint GetPasswordChar( ) const;REMAP='BodyNoLead'Returns the character to be displayed in place of a user-typed character. When the edit control is created with the ES_PASSWORD style specified, the default display character is an asterisk (*).See alsoREMAP='BodyNoLead'TEdit::SetPasswordCharGetRectFORMAT="LINESPECIFIC"void GetRect(TRect& frmtRect) const;REMAP='BodyNoLead'Gets the formatting rectangle of a multiline edit control.See alsoREMAP='BodyNoLead'TEdit::SetRect, TEdit::SetRectNPGetSelectionFORMAT="LINESPECIFIC"void GetSelection(uint& startPos, uint& endPos);REMAP='BodyNoLead'Returns the starting (ROLE='italic'startPos) and ending (ROLE='italic'endPos) positions of the currently selected text. By using ROLE='italic'GetSelection in conjunction with ROLE='italic'GetSubText, you can get the currently selected text.See alsoREMAP='BodyNoLead'TEdit::GetSubTextGetSubTextFORMAT="LINESPECIFIC"void GetSubText(char far* str, uint startPos, uint endPos);REMAP='BodyNoLead'Retrieves the text in an edit control from indexes ROLE='italic'startPos to ROLE='italic'endPos and returns it in ROLE='italic'str.See alsoREMAP='BodyNoLead'TEdit::GetSelectionGetWordBreakProcFORMAT="LINESPECIFIC"EDITWORDBREAKPROC GetWordBreakProc( ) const;REMAP='BodyNoLead'Retrieves the current wordwrap function. Returns the address of the wordwrap function defined by the application or 0 if none exists.See alsoREMAP='BodyNoLead'TEdit::SetWordBreakProcInsertFORMAT="LINESPECIFIC"void Insert(const char far* str);REMAP='BodyNoLead'Inserts the text supplied in ROLE='italic'str into the edit control at the current text insertion point (cursor position), and replaces any currently selected text. ROLE='italic'Insert is similar to ROLE='italic'Paste, but does not affect the Clipboard.See alsoREMAP='BodyNoLead'TEdit::PasteIsModifiedFORMAT="LINESPECIFIC"bool IsModified( );REMAP='BodyNoLead'Returns ROLE='bold'true if the user has changed the text in the edit control.See alsoREMAP='BodyNoLead'TEdit::ClearModifyIsValidFORMAT="LINESPECIFIC"bool IsValid(bool reportErr = false);REMAP='BodyNoLead'Returns ROLE='bold'true if the contents of the edit control are valid. ROLE='italic'reportErr is ROLE='bold'false so that, by default, ROLE='italic'IsValid doesn't bring up a system or custom message box with an error string created from the default string table.LockBufferFORMAT="LINESPECIFIC"char far* LockBuffer(uint newsize=0);REMAP='BodyNoLead'Locks the edit control's buffer and returns a pointer to the buffer. Passing ROLE='italic'newsize greater than 0 causes the buffer to be resized to ROLE='italic'newsize. You must call ROLE='italic'Unlock when you are finished.See alsoREMAP='BodyNoLead'TEdit::UnLockBufferPasteFORMAT="LINESPECIFIC"void Paste( );REMAP='BodyNoLead'Inserts text from the Clipboard into the edit control at the current text insertion point (cursor position).See alsoREMAP='BodyNoLead'TEdit::CMEditPasteScrollFORMAT="LINESPECIFIC"void Scroll(int horizontalUnit, int verticalUnit);REMAP='BodyNoLead'Scrolls a multiline edit control horizontally and vertically using the numbers of characters specified in ROLE='italic'horizontalUnit and ROLE='italic'verticalUnit. Positive values result in scrolling to the right or down in the edit control, and negative values result in scrolling to the left or up.SearchFORMAT="LINESPECIFIC"int Search(uint startPos, const char far* text, bool caseSensitive=false, bool wholeWord=false, bool up=false);REMAP='BodyNoLead'Performs either a case-sensitive or case-insensitive search for the supplied text. If the text is found, the matching text is selected, and ROLE='italic'Search returns the position of the beginning of the matched text. If the text is not found in the edit control's text, ROLE='italic'Search returns -1. If -1 is passed as ROLE='italic'startPos, then the search starts from either the end or the beginning of the currently selected text, depending on the search direction.SetHandleFORMAT="LINESPECIFIC"void SetHandle(HLOCAL localMem);REMAP='BodyNoLead'Sets a handle to the text buffer used to hold the contents of a multiline edit control.REMAP='Body'This function is obsolete, and is not available under Presentation Manager.See alsoREMAP='BodyNoLead'TEdit::GetHandleSetPasswordCharFORMAT="LINESPECIFIC"void SetPasswordChar(uint ch);REMAP='BodyNoLead'ROLE='italic'SetPasswordChar sets the character to be displayed in place of a user-typed character. When the ES_PASSWORD style is specified, the default display character is an asterisk (*).See alsoREMAP='BodyNoLead'TEdit::GetPasswordCharSetReadOnlyFORMAT="LINESPECIFIC"void SetReadOnly(bool readOnly);REMAP='BodyNoLead'Sets the edit control to be read-only or read-write.SetRectFORMAT="LINESPECIFIC"void SetRect(const TRect& frmtRect);REMAP='BodyNoLead'Sets the formatting rectangle for a multiline edit control.See alsoREMAP='BodyNoLead'TEdit::GetRect, TEdit::SetRectNPSetRectNPFORMAT="LINESPECIFIC"void SetRectNP(const TRect& frmtRect);REMAP='BodyNoLead'Sets the formatting rectangle for a multiline edit control. Unlike ROLE='italic'SetRect, ROLE='italic'SetRectNP does not repaint the edit control.See alsoREMAP='BodyNoLead'TEdit::GetRect, TEdit::SetRectSetSelectionFORMAT="LINESPECIFIC"bool SetSelection(uint startPos, uint endPos);REMAP='BodyNoLead'Forces the selection of the text between the positions specified by ROLE='italic'startPos and ROLE='italic'endPos, but not including the character at ROLE='italic'endPos.SetTabStopsFORMAT="LINESPECIFIC"void SetTabStops(int numTabs, const int far* tabs);REMAP='BodyNoLead'Sets the tab stop positions in a multiline edit control.SetValidatorFORMAT="LINESPECIFIC"void SetValidator(TValidator* validator);REMAP='BodyNoLead'Establishes the validator object for the edit control.SetWordBreakProcFORMAT="LINESPECIFIC"void SetWordBreakProc(EDITWORDBREAKPROC proc);REMAP='BodyNoLead'In a multiline edit control, ROLE='italic'SetWordBreakProc indicates that an application-supplied word-break function has replaced the default word-break function. The application-supplied word-break function might break the words in the text buffer at a character other than the default blank character.See alsoREMAP='BodyNoLead'TEdit::GetWordBreakProcTransferFORMAT="LINESPECIFIC"uint Transfer(void* buffer TTransferDirection direction);REMAP='BodyNoLead'Transfers information for ROLE='italic'TEdit controls and sends information to the ROLE='italic'Validator if one exists, and if it has the transfer option set. Transfer can perform type conversion when validators are in place, for example, when ROLE='italic'TRangeValidator transfers integers. The return value is the size (in bytes) of the transfer data.UndoFORMAT="LINESPECIFIC"void Undo( );REMAP='BodyNoLead'Undoes the last edit.See alsoREMAP='BodyNoLead'TEdit::CanUndo, TEdit::CMEditUndoUnlockBufferFORMAT="LINESPECIFIC"void UnlockBuffer(const char far* buffer, bool updateHandle=false);REMAP='BodyNoLead'Unlocks a locked edit control buffer. If the contents were changed, ROLE='italic'updateHandle should be ROLE='bold'true.See alsoREMAP='BodyNoLead'TEdit::LockBufferValidatorErrorFORMAT="LINESPECIFIC"void ValidatorError( );REMAP='BodyNoLead'Handles validation errors that occur as a result of validating the edit control.Protected data memberValidatorFORMAT="LINESPECIFIC"TValidator* Validator;REMAP='BodyNoLead'Points to the validator object constructed in your derived class to validate input text. If no validator exists, ROLE='italic'Validator is zero.Protected member functionsCanCloseFORMAT="LINESPECIFIC"bool CanClose( );REMAP='BodyNoLead'Checks to see if all child windows can be closed before closing the current window. If any child window returns ROLE='bold'false, ROLE='italic'CanClose returns ROLE='bold'false and terminates the process. If all child windows can be closed, ROLE='italic'CanClose returns ROLE='bold'true.CmCharsEnableFORMAT="LINESPECIFIC"void CmCharsEnable(TCommandEnabler& commandHandler);REMAP='BodyNoLead'Determines whether the ROLE='italic'Clear menu item is enabled for the currently selected text.CmEditClearFORMAT="LINESPECIFIC"void CmEditClear( );REMAP='BodyNoLead'Automatically responds to a menu selection with a menu ID of CM_EDITCLEAR by calling ROLE='italic'Clear.See alsoREMAP='BodyNoLead'TStatic::ClearCmEditCopyFORMAT="LINESPECIFIC"void CmEditCopy( );REMAP='BodyNoLead'Automatically responds to a menu selection with a menu ID of CM_EDITCOPY by calling ROLE='italic'Copy.See alsoREMAP='BodyNoLead'TEdit::CopyCmEditCutFORMAT="LINESPECIFIC"void CmEditCut( );REMAP='BodyNoLead'Automatically responds to a menu selection with a menu ID of CM_EDITCUT by calling ROLE='italic'Cut.See alsoREMAP='BodyNoLead'TEdit::CutCmEditDeleteFORMAT="LINESPECIFIC"void CmEditDelete( );REMAP='BodyNoLead'Automatically responds to a menu selection with a menu ID of CM_EDITDELETE by calling DeleteSelection.See alsoREMAP='BodyNoLead'TEdit::DeleteSelectionCmEditPasteFORMAT="LINESPECIFIC"void CmEditPaste( );REMAP='BodyNoLead'Automatically responds to a menu selection with a menu ID of CM_EDITPASTE by calling ROLE='italic'Paste.See alsoREMAP='BodyNoLead'TEdit::PasteCmEditUndoFORMAT="LINESPECIFIC"void CmEditUndo( );REMAP='BodyNoLead'Automatically responds to a menu selection with a menu ID of CM_EDITUNDO by calling ROLE='italic'Undo.See alsoREMAP='BodyNoLead'TEdit::UndoCmModEnableFORMAT="LINESPECIFIC"void CmModEnable(TCommandEnabler& commandHandler);REMAP='BodyNoLead'Determines whether the Undo menu item is enabled for the selected text.CmPasteEnableFORMAT="LINESPECIFIC"void CmPasteEnable(TCommandEnabler& commandHandler);REMAP='BodyNoLead'Determines whether the Paste menu item is enabled for the selected text.CmSelectEnableFORMAT="LINESPECIFIC"void CmSelectEnable(TCommandEnabler& commandHandler);REMAP='BodyNoLead'Determines whether the Cut, Copy, or Delete menu items are enabled for the selected text.ENErrSpaceFORMAT="LINESPECIFIC"void ENErrSpace( );REMAP='BodyNoLead'Sounds a beep in response to an error notification message that is sent when the edit control unsuccessfully attempts to allocate more memory.EvCharFORMAT="LINESPECIFIC"void EvChar(uint key, uint repeatCount, uint flags);REMAP='BodyNoLead'Validates the text entered into the edit control. If the input is incorrect, the original text is restored. Otherwise, the validated and modified text is placed back into the edit control, so the results of the auto-fill (if any) can be viewed. When ROLE='italic'IsValidInput is called, the ROLE='italic'SupressFill parameter defaults to False, so that the string can be modified.EvGetDlgCodeFORMAT="LINESPECIFIC"uint EvGetDlgCode(MSG far* msg);REMAP='BodyNoLead'Responds to WM_GETDLGCODE messages that are sent to a dialog box associated with a control. ROLE='italic'EvGetDlgCode allows the dialog manager to intercept a message that would normally go to a control and then ask the control if it wants to process this message. If not, the dialog manager processes the message. The ROLE='italic'msg parameter indicates the kind of message, for example a control, command, or edit message, sent to the dialog box manager.REMAP='Body'If the edit control contains valid input, then Tabs are allowed for changing focus and a DLGC_WANTTABS code is returned.See alsoREMAP='BodyNoLead'DLGC_xxxxdialog control message constantsEvKeyDownFORMAT="LINESPECIFIC"void EvKeyDown(uint key, uint repeatCount, uint flags);REMAP='BodyNoLead'ROLE='italic'EvKeyDown translates the virtual key code into a movement. ROLE='italic'key indicates the virtual key code of the pressed key, ROLE='italic'repeatCount holds the number of times the same key is pressed, ROLE='italic'flags contains one of the messages that translates to a virtual key (VK) code for the mode indicators. If the Tab key is sent to the Edit Control, ROLE='italic'EvKeyDown checks the validity before allowing the focus to change.EvKillFocusFORMAT="LINESPECIFIC"void EvKillFocus(HWND hWndGetFocus);REMAP='BodyNoLead'In response to a WM_KILLFOCUS message sent to a window that is losing the keyboard, ROLE='italic'EvKillFocus hides and then destroys the caret. ROLE='italic'EvKillFocus validates text whenever the focus is about to be lost and holds onto the focus if the text is not valid. Doesn't kill the focus if another application, a Cancel button, or an OK button (in which case ROLE='italic'CanClose is called to validate text) has the focus.GetClassNameFORMAT="LINESPECIFIC"char far* GetClassName( );REMAP='BodyNoLead'Returns the name of ROLE='italic'TEdit's registration class, "EDIT."See alsoREMAP='BodyNoLead'TWindow::GetClassNameSetupWindowFORMAT="LINESPECIFIC"void SetupWindow( );REMAP='BodyNoLead'If the ROLE='italic'textLen data member is nonzero, ROLE='italic'SetupWindow limits the number of characters that can be entered into the edit control to ROLE='italic'textLen -1.See alsoREMAP='BodyNoLead'TStatic::TextLen, TWindow::SetupWindowResponse table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='240*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND (CM_EDITCLEAR, CmEditClear)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmEditClearCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND (CM_EDITCOPY, CmEditCopy)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmEditCopyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND (CM_EDITCUT, CmEditCut)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmEditCutCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND (CM_EDITDELETE, CmEditDelete)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmEditClearCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND (CM_EDITPASTE, CmEditPaste)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmEditPasteCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND (CM_EDITUNDO, CmEditUndo)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmEditUndoCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_EDITCLEAR, CmCharsEnable)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmCharsEnableCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_EDITCOPY, CmSelectEnable)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmSelectEnableCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_EDITCUT, CmSelectEnable)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmSelectEnableCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_EDITDELETE, CmSelectEnable)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmSelectEnableCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_EDITPASTE, CmPasteEnable)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmPasteEnableCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_EDITUNDO, CmModEnable)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmModEnableCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_NOTIFY_AT_CHILD (EN_ERRSPACE, ENErrSpace)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'ENErrSpaceCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CHARCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvCharCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_GETDLGCODECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvGetdlgcodeCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_KEYDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvKeydownCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_KILLFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvKillFocusCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CHILDINVALIDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvChildInvalidTEditFile classMOREINFO="NONE"editfile.hREMAP='BodyNoLead'ROLE='italic'TEditFile is a file-editing window. ROLE='italic'TEditFile's data members and member functions manage the file dialog box and automatic responses for file commands such as Open, Read, Write, Save, and SaveAs. ROLE='italic'TEditFile is streamable.Public constructors and destructorConstructorFORMAT="LINESPECIFIC"TEditFile(TWindow* ( )t = 0, int Id = 0, const char far* text = 0, const char far* fileName = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TEditFile window given the parent window, resource ID (ROLE='italic'Id), text, file name, and module ID. Sets ROLE='italic'Filename to ROLE='italic'fileName.DestructorFORMAT="LINESPECIFIC"~TEditFile( );REMAP='BodyNoLead'Frees memory allocated to hold the name of the ROLE='italic'TEditFile.Public data membersFileDataFORMAT="LINESPECIFIC"TOpenSaveDialog::TData FileData;REMAP='BodyNoLead'Contains information about the user's file open or save selection.See alsoREMAP='BodyNoLead'TOpenSaveDialog::TData structFileNameFORMAT="LINESPECIFIC"char far* FileName;REMAP='BodyNoLead'Contains the name of the file being edited.Public member functionsCanClearFORMAT="LINESPECIFIC"virtual bool CanClear( );REMAP='BodyNoLead'Returns ROLE='bold'true if the text of the associated edit control can be cleared.CanCloseFORMAT="LINESPECIFIC"virtual bool CanClose( );REMAP='BodyNoLead'Returns ROLE='bold'true if the edit window can be closed.CmFileNewFORMAT="LINESPECIFIC"void CmFileNew( );REMAP='BodyNoLead'Calls ROLE='italic'NewFile in response to an incoming File New command with a CM_FILENEW command identifier.See alsoREMAP='BodyNoLead'TEditFile::NewFileCmFileOpenFORMAT="LINESPECIFIC"void CmFileOpen( );REMAP='BodyNoLead'Calls ROLE='italic'Open in response to an incoming File Open command with a CM_FILEOPEN command identifier.See alsoREMAP='BodyNoLead'TEditFile::OpenCmFileSaveFORMAT="LINESPECIFIC"void CmFileSave( );REMAP='BodyNoLead'Calls ROLE='italic'Save in response to an incoming File Save command with a CM_FILESAVE command identifier.See alsoREMAP='BodyNoLead'TEditFile::SaveCmFileSaveAsFORMAT="LINESPECIFIC"void CmFileSaveAs( );REMAP='BodyNoLead'Calls ROLE='italic'SaveAs in response to an incoming File SaveAs command with a CM_FILESAVEAS command identifier.See alsoREMAP='BodyNoLead'TEditFile::SaveAsNewFileFORMAT="LINESPECIFIC"void NewFile( );REMAP='BodyNoLead'Begins the edit of a new file after calling ROLE='italic'CanClear to determine that it is safe to clear the text of the editor.See alsoREMAP='BodyNoLead'TEditFile::CanClearOpenFORMAT="LINESPECIFIC"Open( );REMAP='BodyNoLead'Opens a new file after determining that it is OK to clear the text of the ROLE='italic'Editor. Calls ROLE='italic'CanClear, and if ROLE='bold'true is returned, brings up a file dialog box to retrieve the name of a new file from the user. Calls ROLE='italic'ReplaceWith to pass the name of the new file.See alsoREMAP='BodyNoLead'TEditFile::CanClear, TEditFile::ReplaceWithReadFORMAT="LINESPECIFIC"bool Read(const char far* fileName=0);REMAP='BodyNoLead'Reads the contents of a previously specified file into the ROLE='italic'Editor. Returns ROLE='bold'true if read operation is successful.ReplaceWithFORMAT="LINESPECIFIC"void ReplaceWith(const char far* fileName);REMAP='BodyNoLead'Calls ROLE='italic'SetFileName and ROLE='italic'Read to replace the file currently being edited with a file whose name is supplied.See alsoREMAP='BodyNoLead'TEditFile::SetFileName, TEditFile::ReadSaveFORMAT="LINESPECIFIC"bool Save( );REMAP='BodyNoLead'Saves changes to the contents of the ROLE='italic'Editor to a file. If ROLE='italic'Editor->IsModified returns ROLE='bold'false, ROLE='italic'Save returns ROLE='bold'true, indicating there have been no changes since the last open or save.See alsoREMAP='BodyNoLead'TEditFile::SaveAs, TEditFile::WriteSaveAsFORMAT="LINESPECIFIC"bool SaveAs( );REMAP='BodyNoLead'Saves the contents of the ROLE='italic'Editor to a file whose name is retrieved from the user, through execution of a File Save dialog box. If the user selects OK, ROLE='italic'SaveAs calls ROLE='italic'SetFileName and ROLE='italic'Write. Returns ROLE='bold'true if the file was saved.See alsoREMAP='BodyNoLead'TEditFile::SetFileName, TEditFile::WriteSetFileNameFORMAT="LINESPECIFIC"void SetFileName (const char far* fileName);REMAP='BodyNoLead'Sets ROLE='italic'FileName and updates the caption of the window.WriteFORMAT="LINESPECIFIC"bool Write(const char far* fileName=0);REMAP='BodyNoLead'Saves the contents of the ROLE='italic'Editor to a file whose name is specified by ROLE='italic'FileName. Returns ROLE='bold'true if the write operation is successful.Protected member functionsSetupWindowFORMAT="LINESPECIFIC"void SetupWindow( );REMAP='BodyNoLead'Creates the edit window's ROLE='italic'Editor edit control by calling ROLE='italic'TEditFile::SetupWindow. Sets the window's caption to ROLE='italic'FileName, if available; otherwise sets the name to "Untitled."See alsoREMAP='BodyNoLead'TEditFile::SetFileName, TEditFile::ReadResponse table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='204*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND (CM_FILENEW, CmFileNew)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmFileNewCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND (CM_FILEOPEN, CmFileOpen)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmFileOpenCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND (CM_FILESAVE, CmFileSave)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmFileSaveCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND (CM_FILESAVEAS, CmFileSaveAs)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmFileSaveAsTEditSearch classMOREINFO="NONE"editsear.hREMAP='BodyNoLead'ROLE='italic'TEditSearch is an edit control that responds to Find, Replace, and FindNext menu commands. This class is streamable.Public constructorConstructorFORMAT="LINESPECIFIC"TEditSearch(TWindow* parent = 0, int Id = 0, const char far* text = 0, int x = 0, int y = 0, int w = 0, int h = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TEditSearch object given the parent window, resource ID, and character string (ROLE='italic'text).Public data membersSearchCmdFORMAT="LINESPECIFIC"uint SearchCmd;REMAP='BodyNoLead'Contains the search command identifier that opened the dialog box if one is open.SearchDataFORMAT="LINESPECIFIC"TFindReplaceDialog::TData SearchData;REMAP='BodyNoLead'The ROLE='italic'SearchData structure defines the search text string, the replacement text string, and the size of the text buffer.See alsoREMAP='BodyNoLead'TFindReplaceDialog::TDataSearchDialogFORMAT="LINESPECIFIC"TFindReplaceDialog* SearchDialog;REMAP='BodyNoLead'Contains find or replace dialog-box information (such as the text to find and replace) and check box settings.Public member functionsCmEditFindFORMAT="LINESPECIFIC"void CmEditFind( );REMAP='BodyNoLead'Opens a ROLE='italic'TFindDialog in response to an incoming Find command with a CM_EDITFIND command.CmEditFindNextFORMAT="LINESPECIFIC"void CmEditFindNext( );REMAP='BodyNoLead'Responds to an incoming FindNext command with a CM_EDITFINDNEXT command identifier by calling ROLE='italic'DoSearch to repeat the search operation.See alsoREMAP='BodyNoLead'TEditSearch::DoSearchCmEditReplaceFORMAT="LINESPECIFIC"void CmEditReplace( );REMAP='BodyNoLead'Opens a ROLE='italic'TReplaceDialog in response to an incoming Replace command with a CM_EDITREPLACE command.DoSearchFORMAT="LINESPECIFIC"void DoSearch( );REMAP='BodyNoLead'Performs a search or replace operation base on information in ROLE='italic'SearchData.See alsoREMAP='BodyNoLead'TFindReplaceDialog::TDataEvFindMsgFORMAT="LINESPECIFIC"LRESULT EvFindMsg(WPARAM, LPARAM);REMAP='BodyNoLead'Responds to a message sent by the modeless find or replace dialog box. Calls ROLE='italic'DoSearch to continue searching if text is not found or the end of the document has not been reached.See alsoREMAP='BodyNoLead'TEditSearch::DoSearchSetupWindowFORMAT="LINESPECIFIC"void SetupWindow( );REMAP='BodyNoLead'Posts a CM_EDITFIND or a CM_EDITREPLACE message to re-open a find or replace modeless dialog box. Calls ROLE='italic'TEdit::SetupWindow.See alsoREMAP='BodyNoLead'TEdit::SetupWindowResponse table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='216*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_EDITFIND, CmEditFindCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmEditFindCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_EDITFINDNEXT, CmEditFindNext)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmEditFindNextCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_EDITREPLACE, CmEditReplace)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'CmEditReplaceCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_REGISTERED(FINDMSGSTRING, EvFindMsg)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvFindMsgTEditView classMOREINFO="NONE"editview.hREMAP='BodyNoLead'Derived from ROLE='italic'TView and ROLE='italic'TEditSearch, TEditView provides a view wrapper for ObjectWindows text edit class (ROLE='italic'TEdit). A streamable class, ROLE='italic'TEditView includes several event-handling functions that handle messages between a document and its views.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TEditView(TDocument& doc, TWindow* parent = 0);REMAP='BodyNoLead'Creates a ROLE='italic'TEditView object associated with the specified document and parent window. Sets ROLE='italic'AttrAccelTable to IDA_EDITVIEW to identify the edit view. Sets ROLE='italic'TView::ViewMenu to the new ROLE='italic'TMenuDescr for this view.DestructorFORMAT="LINESPECIFIC"~TEditView( )REMAP='BodyNoLead'Destroys a ROLE='italic'TEditView object.Public member functionsCanCloseFORMAT="LINESPECIFIC"bool CanClose( );REMAP='BodyNoLead'Returns nonzero if the view can be closed.CreateFORMAT="LINESPECIFIC"bool Create( )REMAP='BodyNoLead'Overrides ROLE='italic'TWindow::Create and calls ROLE='italic'TEditSearch::Create to create the view's window. Calls ROLE='italic'GetDocPath to determine if the file is new or already has data. If there is data, calls ROLE='italic'LoadData to add the data to the view. If the view's window can't be created, ROLE='italic'Create indicates the view is invalid.GetViewNameFORMAT="LINESPECIFIC"const char far* GetViewName( );REMAP='BodyNoLead'Overrides ROLE='italic'TView::GetViewName and returns the descriptive name of the class (ROLE='italic'StaticName).See alsoREMAP='BodyNoLead'TEditView::StaticName, TView::GetViewNameGetWindowFORMAT="LINESPECIFIC"TWindow* GetWindow( );REMAP='BodyNoLead'ROLE='italic'GetWindow overrides ROLE='italic'GetWindow in ROLE='italic'TView and returns ROLE='bold'this as a ROLE='italic'TWindow.See alsoREMAP='BodyNoLead'TView::GetWindowPerformCreateFORMAT="LINESPECIFIC"void PerformCreate(int menuOrId);REMAP='BodyNoLead'Allocates memory as necessary so that ROLE='italic'TEditView can handle files up to and including 30,000 bytes.SetDocTitleFORMAT="LINESPECIFIC"bool SetDocTitle(const char far* docname, int index)REMAP='BodyNoLead'Overrides ROLE='italic'TView::SetDocTitle and forwards the title to its base class, ROLE='italic'TEditSearch. index is the number of the view displayed in the caption bar. ROLE='italic'docname is the name of the document displayed in the view window.See alsoREMAP='BodyNoLead'TWindow::SetDocTitle, TView::SetDocTitleStaticNameFORMAT="LINESPECIFIC"static const char far* StaticName( );REMAP='BodyNoLead'Returns "Edit View," the descriptive name of the class for the ViewSelect menu.Protected data memberOriginFORMAT="LINESPECIFIC"long Origin;REMAP='BodyNoLead'Holds the file position at the beginning of the display.Protected member functionsEvNCDestroyFORMAT="LINESPECIFIC"void EvNCDestroy( );REMAP='BodyNoLead'ROLE='italic'EvNcDestroy is used internally by ROLE='italic'TEditView to manage memory.REMAP='Body'This member is not available under Presentation Manager.LoadDataFORMAT="LINESPECIFIC"bool LoadData( );REMAP='BodyNoLead'ROLE='italic'LoadData reads the view from the stream and closes the file. It returns nonzero if the view was successfully loaded. If the file can't be read, posts an error and returns 0.VnCommitFORMAT="LINESPECIFIC"bool VnCommit(bool force);REMAP='BodyNoLead'ROLE='italic'VnCommit commits changes made in the view to the document. If ROLE='italic'force is nonzero, all data, even if it's unchanged, is saved to the document.See alsoREMAP='BodyNoLead'TEditView::vnRevert, vnxxxx view notification constantsVnDocClosedFORMAT="LINESPECIFIC"bool VnDocClosed(int omode);REMAP='BodyNoLead'ROLE='italic'VnDocClosed indicates that the document has been closed. ROLE='italic'mode is one of the ROLE='italic'ofxxxxROLE='italic' documentROLE='italic' open constants.See alsoREMAP='BodyNoLead'ofxxxx document open enum, vnxxxx view notification constantsVnIsDirtyFORMAT="LINESPECIFIC"bool VnIsDirty( );REMAP='BodyNoLead'ROLE='italic'VnIsDirty returns nonzero if changes made to the data in the view have not been saved to the document; otherwise, it returns 0.See alsoREMAP='BodyNoLead'vnxxxx view notification constantsVnIsWindowFORMAT="LINESPECIFIC"bool VnIsWindow(HWND hWnd);REMAP='BodyNoLead'ROLE='italic'VnIsWindow returns nonzero if the window's handle passed in ROLE='italic'hWnd is the same as that of the view's display window.VnRevertFORMAT="LINESPECIFIC"bool VnRevert(bool clear);REMAP='BodyNoLead'ROLE='italic'VnRevert is nonzero if changes made to the view should be erased, and the data from the document should be restored to the view. If ROLE='italic'clear is nonzero, the data is cleared instead of restored to the view.See alsoREMAP='BodyNoLead'TEditView::VnCommitResponse table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='96*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_COMMITCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'VnCommitCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_DOCCLOSEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'VnDocClosedCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_ISDIRTYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'VnIsDirtyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_ISWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'VnIsWindowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCDESTROYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvNcDestroyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_REVERTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'VnRevertTEqualOperator typedefMOREINFO="NONE"eventhan.hFORMAT="LINESPECIFIC"typedef bool(*TEqualOperator)(TGenericTableEntry __RTFAR&, TEventInfo&);REMAP='BodyNoLead'ROLE='italic'TEqualOperator is used to perform special kinds of searches and to faciliate finding response table entries. ROLE='italic'TEqualOperator compares a particular message event (ROLE='italic'TEventInfo&) with a response table entry (ROLE='italic'TGenericTableEntry) to determine if they match.See alsoREMAP='BodyNoLead'TResponseTableEntryTEventHandler classMOREINFO="NONE"eventhan.hREMAP='BodyNoLead'ROLE='italic'TEventHandler is a base class from which you can derive classes that handle messages. Specifically, ROLE='italic'TEventHandler performs the following event-handling tasks:NUMERATION='ARABIC' CONTINUATION="RESTARTS" INHERITNUM="IGNORE"REMAP='.NumList1'Analyzes a window messageREMAP='.NumList1'Searches the class's response table entries for an appropriate event-handling functionREMAP='.NumList1'Dispatches the message to the designated event-handling functionREMAP='Body'Most of ObjectWindows' classes are derived from ROLE='italic'TEventHandler and, therefore, inherit this event-handling behavior. In addition, any user-defined class derived from ROLE='italic'TEventHandler can handle message response functions that are associated with a particular window message.See also REMAP='Body'DECLARE_RESPONSE_TABLE macroPublic member functionsDispatchFORMAT="LINESPECIFIC"virtual LRESULT Dispatch(TEventInfo&, WPARAM, LPARAM = 0);REMAP='BodyNoLead'Takes the message data from ROLE='italic'TEventInfo's Msg data member and dispatches it to the correct event handling function.FindFORMAT="LINESPECIFIC"virtual bool Find(TEventInfo&, TEqualOperator = 0);REMAP='BodyNoLead'Searches the list of response table entries looking for a match. Because ROLE='italic'TEventHandler doesn't have any entries, ROLE='italic'TEventHandler's implementation of this routine returns false.Protected member functionSearchEntriesFORMAT="LINESPECIFIC"bool SearchEntries(TGenericTableEntry __RTFAR* entries, TEventInfo&, TEqualOperator);REMAP='BodyNoLead'Searches the entries in the response table for an entry that matches ROLE='italic'TEventInfo or, if so designated, an entry that ROLE='italic'TEqualOperator specifies is a match.TEventHandler::TEventInfo class MOREINFO="NONE"eventhan.hREMAP='BodyNoLead'A nested class, ROLE='italic'TEventInfo provides specific information about the type of message sent, the class that contains the function to be handled, the corresponding response table entry, and the dispatch function that processes the message.Public constructorConstructorFORMAT="LINESPECIFIC"TEventInfo(uint msg, uint id = 0) : Msg(msg), Id(id);REMAP='BodyNoLead'Constructs a ROLE='italic'TEventInfo object with the specified ID and message type.Public data membersEntryFORMAT="LINESPECIFIC"TGenericTableEntry __RTFAR *Entry;REMAP='BodyNoLead'Points to the response table entry (for example, ROLE='italic'EvActivate).IdFORMAT="LINESPECIFIC"const uint Id;REMAP='BodyNoLead'Contains the menu or accelerator resource ID (CM_xxxx) for the message response member function.MsgFORMAT="LINESPECIFIC"const uint Msg;REMAP='BodyNoLead'Contains the type of message sent. These can be command messages, child ID messages, notify-based messages such as LBN_SELCHANGE, or windows messages such as LBUTTONDOWN.ObjectFORMAT="LINESPECIFIC"GENERIC *Object;REMAP='BodyNoLead'Points to the object that contains the function to be handled.TEventStatus enumwindow.hTEventStatusFORMAT="LINESPECIFIC"enum {esPartial, esComplete};REMAP='BodyNoLead'Event status constants indicate the status of a mix-in window event implementation, for example, one of the following constants is returned.Event status constantsCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='54*'COLNAME='C2' COLWIDTH='138*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'esPartialCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Additional handlers can be invoked.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'esCompleteCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No additional handlers are needed.TFileDocument classMOREINFO="NONE"filedoc.hREMAP='BodyNoLead'Derived from ROLE='italic'TDocument, TFileDocument opens and closes views and provides stream support for views. ROLE='italic'TFileDocument has member functions that continue to process FileNew and FileOpen messages after a view is constructed. You can add support for specialized file types by deriving classes fromROLE='italic' TFileDocument. TFileDocument makes this process easy by hiding the actual processs of storing file types.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TFileDocument(TDocument* parent = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TFileDocument object with the optional parent document.DestructorFORMAT="LINESPECIFIC"~TFileDocument(TDocument* parent = 0);REMAP='BodyNoLead'Destroys a ROLE='italic'TFileDocument object.Type definitionsTFileDocPropFORMAT="LINESPECIFIC"enum TFileDocProp {PrevProperty, CreateTime, ModifyTime, AccessTime, StorageSize, FileHandle, NextProperty};REMAP='BodyNoLead'Contains constants that define the following properties of the document:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='65*'COLNAME='C2' COLWIDTH='299*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PrevPropertyCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TDocument::NextProperty-1. This is the first value for view and document objects.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CreateTimeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The time the view or document was created.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ModifyTimeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The time the view or document was modified.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AccessTime,COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The time the view or document was last accessed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'StorageSizeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'An unsigned long containing the storage size.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FileHandleCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The platform file handle.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'NextPropertyCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The is the terminating value for the property.REMAP='Body'Classes derived from ROLE='italic'TDocument and ROLE='italic'TView can use these generic file property values.Public member functionsCloseFORMAT="LINESPECIFIC"bool Close( );REMAP='BodyNoLead'Closes the document but does not delete or detach any associated views. Before closing the document, ROLE='italic'Close calls TDocument's Close to make sure all child documents are closed. If any children are open, ROLE='italic'Close returns 0 and doesn't close the document. If all children are closed, checks to see if any associated streams are open, and if so, returns 0 and doesn't close the document. If there are no open streams, closes the file.See alsoREMAP='BodyNoLead'TDocument::CloseCommitFORMAT="LINESPECIFIC"bool Commit(bool force = false);REMAP='BodyNoLead'Calls ROLE='italic'TDocument_Commit and clears ROLE='italic'TDocument's DirtyFlag data member, thus indicating that there are no unsaved changes made to the document.See alsoREMAP='BodyNoLead'TDocument::CommitFindPropertyFORMAT="LINESPECIFIC"int FindProperty(const char far* name);REMAP='BodyNoLead'Gets the property index, given the property name (ROLE='italic'name). Returns 0 if the name isn't found.See alsoREMAP='BodyNoLead'pfxxxx property attribute constantsGetPropertyFORMAT="LINESPECIFIC"int GetProperty(int index, void far* dest, int textlen=0);REMAP='BodyNoLead'Overrides ROLE='italic'TDocument_GetProperty and gets the property ID for the current file document.See alsoREMAP='BodyNoLead'pfxxxx property attribute constantsInStreamFORMAT="LINESPECIFIC"TInStream* InStream(int mode, const char far* strmId = 0);REMAP='BodyNoLead'Overrides ROLE='italic'TDocument_InStream and provides generic input for the particular storage medium. ROLE='italic'InStream returns a pointer to a ROLE='italic'TInStream. mode is a combination of the ios bits defined in iostream.h. ROLE='italic'strmId is not used for file documents. The view reads data from the document as a stream or through stream functions.See alsoREMAP='BodyNoLead'TFileDocument::OutStreamIsOpenFORMAT="LINESPECIFIC"bool IsOpen( );REMAP='BodyNoLead'Is nonzero if the document or any streams are open.OpenFORMAT="LINESPECIFIC"bool Open(HFILE fhdl);REMAP='BodyNoLead'Opens a file document using an existing file handle. Sets ROLE='italic'TDocument_OpenMode to PREV_OPEN and read/write. Sets the document path to 0. Sets ROLE='italic'FHd to ROLE='italic'fhdl. Always returns nonzero.FORMAT="LINESPECIFIC"bool Open(int mode, const char far* path=0);REMAP='BodyNoLead'Overrides ROLE='italic'TDocument_Open and opens the file using the specified path. If the file is already open, returns 0. Calls ROLE='italic'TDocument_SetDocPath to set the directory path. If ROLE='italic'omode isn't 0, sets ROLE='italic'TDocument_OpenMode to ROLE='italic'omode. If the file can't be opened, returns 0.See alsoREMAP='BodyNoLead'TDocument::SetDocPath, TDocument::Open, ofxxxx document open enumOutStreamFORMAT="LINESPECIFIC"TOutStream* OutStream (int mode, const char far* strmId = 0);REMAP='BodyNoLead'Overrides ROLE='italic'TDocument_OutStream and provides generic input for the particular storage medium. ROLE='italic'OutStream returns a pointer to a ROLE='italic'TOutStream. ROLE='italic'mode is a combination of the ios bits defined in iostream.h. ROLE='italic'strmId is not used for file documents. Instead, the view reads data from the document through stream functions.See alsoREMAP='BodyNoLead'TFileDocument::InStreamPropertyFlagsFORMAT="LINESPECIFIC"int PropertyFlags(int index);REMAP='BodyNoLead'Returns the property attribute constants (ROLE='italic'pfGetText, ROLE='italic'pfHidden, and so on).See alsoREMAP='BodyNoLead'pfxxxx property attribute constantsPropertyNameFORMAT="LINESPECIFIC"const char* PropertyName(int index);REMAP='BodyNoLead'Returns the text name of the property given the index value.See alsoREMAP='BodyNoLead'pfxxxx property attribute constantsRevertFORMAT="LINESPECIFIC"bool Revert(bool clear = false);REMAP='BodyNoLead'Calls ROLE='italic'TDocument_Revert to notify the views to refresh their data. If ROLE='italic'clear is ROLE='bold'false, the data is restored instead of cleared.See alsoREMAP='BodyNoLead'TFileDoc::CommitSetPropertyFORMAT="LINESPECIFIC"bool SetProperty(int index, const void far* src);REMAP='BodyNoLead'Sets the property data, which must be in the native data type (either string or binary).See alsoREMAP='BodyNoLead'pfxxxx property attribute constantsProtected data memberFHdlFORMAT="LINESPECIFIC"HFILE FHdl;REMAP='BodyNoLead'Holds the file handle to an open file document.Protected member functionsCloseThisFileFORMAT="LINESPECIFIC"void CloseThisFile(HFILE fhdl, int omode);REMAP='BodyNoLead'Closes the file handle if the associated file was opened by ROLE='italic'TFileDocument. Calls ROLE='italic'TDocument_NotifyView to notify all views that the file document has closed.See alsoREMAP='BodyNoLead'ofxxxx document open enumOpenThisFileFORMAT="LINESPECIFIC"HFILE OpenThisFile(int omode, const char far* name, streampos* pseekpos);REMAP='BodyNoLead'Opens the file document after checking the file sharing mode (ROLE='italic'omode). If a file mode is not specified as read, write, or read and write, ROLE='italic'OpenThisFile returns 0.See alsoREMAP='BodyNoLead'ofxxxx document open enum, shxxxx document sharing modesTFileOpenDialog classMOREINFO="NONE"opensave.hREMAP='BodyNoLead'ROLE='italic'TFileOpenDialog is a modal dialog box that lets you specify the name of a file to open. Use this dialog box to respond to a CM_FILEOPEN command that's generated when a user selects File|Open from a menu. ROLE='italic'TFileOpenDialog uses the ROLE='italic'TOpenSave::ROLE='italic'TData structure to initialize the file open dialog box.Public constructorConstructorFORMAT="LINESPECIFIC"TFileOpenDialog(TWindow* parent, TData& data, TResID templateID = 0, const char far* title = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs and initializes the ROLE='italic'TFileOpen object based on information in the ROLE='italic'TOpenSaveDialog::TData data structure. The ROLE='italic'parent argument points to the dialog box's parent window. ROLE='italic'data is a reference to the ROLE='italic'TData object. ROLE='italic'templateID is the ID for a custom template. ROLE='italic'title is an optional title. ROLE='italic'module points to the module instance.See alsoREMAP='BodyNoLead'TOpenSaveDialog::TData, TOpenSaveDialog, TResID, TModulePublic member functionDoExecuteFORMAT="LINESPECIFIC"int DoExecute( );REMAP='BodyNoLead'Creates the ROLE='italic'TFileOpenDialog object.See alsoREMAP='BodyNoLead'TDialog::DoExecute TFileSaveDialog classMOREINFO="NONE"opensave.hREMAP='BodyNoLead'ROLE='italic'TFileSaveDialog is a modal dialog box that lets you enter the name of a file to save. Use ROLE='italic'TFileSaveDialog to respond to a CM_FILESAVEAS command generated when a user selects File|Save from a menu. ROLE='italic'TFileSaveDialog uses the ROLE='italic'TOpenSave::ROLE='italic'TData structure to initialize the file save dialog box.Public constructorConstructorFORMAT="LINESPECIFIC"TFileSaveDialog(TWindow* parent, TData& data, TResID templateID = 0, const char far* title = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs and initializes the ROLE='italic'TFileOpen object based on the ROLE='italic'TOpenSaveDialog::TData structure, which contains information about the file name, file directory, and file name search filers.See alsoREMAP='BodyNoLead'TOpenSaveDialog::TData structure, TModule, TResID, TWindowPublic member functionDoExecuteFORMAT="LINESPECIFIC"int DoExecute( );REMAP='BodyNoLead'Creates the ROLE='italic'TFileSaveDialog object.See alsoREMAP='BodyNoLead'TDialog::DoExecute, TOpenSaveDialogTFilterValidator classMOREINFO="NONE"validate.hREMAP='BodyNoLead'A streamable class, ROLE='italic'TFilterValidator checks an input field as the user types into it. The validator holds a set of allowed characters. When the user enters a character, the filter validator indicates whether the character is valid or invalid. See ROLE='italic'TValidator for an example of an input validation screen.Public constructorConstructorFORMAT="LINESPECIFIC"TFilterValidator(const TCharSet& validChars);REMAP='BodyNoLead'Constructs a filter validator object by first calling the constructor inherited from ROLE='italic'TValidator, then setting ROLE='italic'ValidChars to ROLE='italic'validChars.Public member functionsErrorFORMAT="LINESPECIFIC"void Error( );REMAP='BodyNoLead'Error overrides ROLE='italic'TValidator's virtual function and displays a message box indicating that the text string contains an invalid character.See alsoREMAP='BodyNoLead'TValidator::ErrorIsValidFORMAT="LINESPECIFIC"bool IsValid(const char far* str);REMAP='BodyNoLead'ROLE='italic'IsValid overrides ROLE='italic'TValidator's virtuals and returns ROLE='bold'true if all characters in ROLE='italic'str are in the set of allowed characters, ROLE='italic'ValidChar; otherwise, it returns ROLE='bold'false.IsValidInputFORMAT="LINESPECIFIC"bool IsValidInput(char far* str, bool suppressFill);REMAP='BodyNoLead'ROLE='italic'IsValidInput overrides ROLE='italic'TValidator's virtual function and checks each character in the string ROLE='italic'str to ensure it is in the set of allowed characters, ROLE='italic'ValidChar. ROLE='italic'IsValidInput returns ROLE='bold'true if all characters in ROLE='italic'str are valid; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TValidator::IsValidInputProtected data membersValidCharsFORMAT="LINESPECIFIC"TCharSet ValidChars;REMAP='BodyNoLead'Contains the set of all characters the user can type. For example, to allow only numeric digits, set ROLE='italic'ValidChars to "0-9". ROLE='italic'ValidChars is set by the ROLE='italic'validChars parameter passed to the constructor.TFindDialog classMOREINFO="NONE"findrepl.hREMAP='BodyNoLead'ROLE='italic'TFindDialog objects represents modeless dialog box interface elements that let you specify text to find. ROLE='italic'TFindDialog communicates with the owner window using a registered message. Derived from ROLE='italic'TFindReplaceDialog, ROLE='italic'TFindDialog uses the ROLE='italic'TFindReplaceDialog::ROLE='italic'TData structure to initialize the dialog box with user-entered values (such as the text string to find).Public constructorConstructorFORMAT="LINESPECIFIC"TFindDialog(TWindow* parent, TData& data, TResId templateId = 0, const char far* title = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TFindDialog object with the given parent window, resource ID, and caption. Sets the attributes of the dialog box based onROLE='italic'TFindReplaceDialog::TData structure, which contains information about the text string to search for.See alsoREMAP='BodyNoLead'TFindReplaceDialog::TDataProtected member functionsDoCreateFORMAT="LINESPECIFIC"HWND DoCreate( );REMAP='BodyNoLead'Creates the modeless interface element of a find dialog.TFindReplaceDialog classMOREINFO="NONE"findrepl.hREMAP='BodyNoLead'ROLE='italic'TFindReplaceDialog is an abstract base class for a modeless dialog box that lets you search for and replace text. This base class contains functionality common to both derived classes, ROLE='italic'TFindDialog which lets you specify text to find, and ROLE='italic'TReplaceDialog which lets you specify replacement text. ROLE='italic'TFindReplaceDialog communicates with the owner window using a registered message. Public constructorConstructorFORMAT="LINESPECIFIC"TFindReplaceDialog(TWindow* parent, TData& data, TResId templateId = 0, const char far* title = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TFindReplaceDialog object with a parent window, resource ID, and caption. Sets the attributes of the dialog box with the specified data from the ROLE='italic'TFindReplaceDialog::TData structure.See alsoREMAP='BodyNoLead'TFindReplaceDialog::TData struct, TModule, TResID, TWindowPublic member functionsCmCancelFORMAT="LINESPECIFIC"void CmCancel( );REMAP='BodyNoLead'Responds to a click of the Cancel button.CmFindNextFORMAT="LINESPECIFIC"void CmFindNext( );REMAP='BodyNoLead'Responds to a click of the Find Next button.CmReplaceFORMAT="LINESPECIFIC"void CmReplace( );REMAP='BodyNoLead'Responds to a click of the Replace button.CmReplaceAllFORMAT="LINESPECIFIC"void CmReplaceAll( );REMAP='BodyNoLead'Responds to a click of the Replace All button.EvNCDestroyFORMAT="LINESPECIFIC"void EvNCDestroy( );REMAP='BodyNoLead'Calls ROLE='italic'TWindow::EvNCDestroy, which responds to an incoming EV_WM_NCDESTROY message which tells the owner window that is nonclient area is being destroyed.Protected data membersDataFORMAT="LINESPECIFIC"TData& Data;REMAP='BodyNoLead'ROLE='italic'Data is a reference to the ROLE='italic'TData object passed in the constructor.See alsoREMAP='BodyNoLead'TFindReplaceDialog::TData classfrFORMAT="LINESPECIFIC"FINDREPLACE fr;REMAP='BodyNoLead'A ROLE='italic'struct that contains find-and-replace attributes, such as the size of the find buffer and pointers to search and replace strings, used for find-and-replace operations.See alsoREMAP='BodyNoLead'FINDREPLACE classProtected member functionsDoCreateFORMAT="LINESPECIFIC"HWND DoCreate( )=0;REMAP='BodyNoLead'ROLE='italic'DoCreate is a virtual function that is overridden in derived classes to create a modeless find or replace dialog box.DialogFunctionFORMAT="LINESPECIFIC"bool DialogFunction(uint message, WPARAM, LPARAM);REMAP='BodyNoLead'Returns ROLE='bold'true if a message is handled.See alsoREMAP='BodyNoLead'TDialog::DialogFunctionInitFORMAT="LINESPECIFIC"void Init(TResId templateId);REMAP='BodyNoLead'Used by constructors in derived classes, ROLE='italic'Init initializes a ROLE='italic'TFindReplaceDialog object with the current resource ID and other members.Response table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='96*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCDESTROYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvNCDestroyTFindReplaceDialog::TData classMOREINFO="NONE"findrepl.hREMAP='BodyNoLead'The ROLE='italic'TFindReplaceDialog::TData class encapsulates information necessary to initialize a ROLE='italic'TFindReplace dialog box. The ROLE='italic'TFindDialog and ROLE='italic'TReplaceDialog classes use the ROLE='italic'TFindReplaceDialog::TData class to initialize the dialog box and to accept user-entered options such as the search and replacement text strings.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TFindReplaceDialog(uint32 flags = 0, int bufferSize = 81);REMAP='BodyNoLead'Constructs a ROLE='italic'TData object with the specified flag value that initializes the status of the dialog box control buttons and the buffer size for the find and replace search strings.DestructorFORMAT="LINESPECIFIC"~TData( );REMAP='BodyNoLead'Destroys a ~ROLE='italic'TData object.Public data membersBuffSizeFORMAT="LINESPECIFIC"int BuffSize;REMAP='BodyNoLead'ROLE='italic'BuffSize contains the size of the text buffer.ErrorFORMAT="LINESPECIFIC"uint32 Error;REMAP='BodyNoLead'If the dialog box is successfully created, ROLE='italic'Error is 0. Otherwise, it contains one or more of the following error codes:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='150*'COLNAME='C2' COLWIDTH='221*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_LOCKRESOURCEFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to lock a specified resource.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_LOADRESFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to load a specified resource.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_LOADSTRFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to load a specified string.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_REGISTERMSGFAILCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The window message (a value used to communicate between applications) cannot be registered. This message value is used when sending or posting window messages.FindWhatFORMAT="LINESPECIFIC"char* FindWhat;REMAP='BodyNoLead'Contains the search string.FlagsFORMAT="LINESPECIFIC"uint32 Flags;REMAP='BodyNoLead'ROLE='italic'Flags, which indicates the state of the control buttons and the action that occurred in the dialog box, can be a combination of the following constants that indicate which command the user wants to select:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='108*'COLNAME='C2' COLWIDTH='221*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FR_DOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The Down button in the Direction group of the Find dialog box is selected.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FR_HIDEMATCHCASECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The Match Case check box is hidden.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FR_HIDEWHOLEWORDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The Whole Word check box is hidden.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FR_HIDEUPDOWN.COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The Up and Down buttons are hidden.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FR_MATCHCASECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The Match Case check box is checked.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FR_NOMATCHCASECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The Match Case check box is disabled. This occurs when the dialog box is first initialized.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FR_NOUPDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The Up and Down buttons are disabled. This occurs when the dialog box is first initialized.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FR_NOWHOLEWORDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The Whole Word check box is disabled. This occurs when the dialog box is first initialized.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FR_REPLACECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The Replace button was pressed in the Replace dialog box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FR_REPLACEALLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The Replace All button was pressed in the Replace dialog box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FR_WHOLEWORDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The Whole Word check box is checked.ReplaceWithFORMAT="LINESPECIFIC"char* ReplaceWith;REMAP='BodyNoLead'ROLE='italic'ReplaceWith contains the replacement string.See alsoREMAP='BodyNoLead'TEditSearch::SearchData, TFindReplaceDialog::DataTFloatingFrame classMOREINFO="NONE"floatfra.hREMAP='BodyNoLead'Derived from ROLE='italic'TFrameWindow and ROLE='italic'TTinyCaption, ROLE='italic'TFloatingFrame implements a floating frame that can be positioned anywhere in the parent window. Except for the addition of a tiny caption bar, the default behavior of ROLE='italic'TFrameWindow and ROLE='italic'TFloatingFrame is the same. Therefore, an application that uses ROLE='italic'TFrameWindow can easily gain the functionality of ROLE='italic'TFloatingFrame by just changing the name of the class to ROLE='italic'TFloatingFrame.REMAP='Body'If there is a client window, the floating frame shrinks to fit the client window, leaving room for margins on the top, bottom, left, and right of the frame. Because the floating frame expects the client window to paint its own background, it does nothing in response to a WM_ERASEBKGND message. However, if there is no client window, the floating frame erases the client area background using COLOR_BTNFACE.REMAP='Body'See PAINT.CPP, the sample program on your distribution disk, for an example of a floating frame.Public constructorConstructorFORMAT="LINESPECIFIC"TFloatingFrame(TWindow *owner, char *title = 0, TWindow* clientWnd = 0, bool shrinkToClient = false, int CaptionHeight = DefaultCaptionHeight, bool popupPalette = false, Module* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TFloatingFrame object attached to the specified parent window. By default, the floating frame window doesn't shrink to fit the client window, and the floating palette style isn't enabled. REMAP='Body'Set ROLE='italic'popupPalette to true if you want to enable a floating palette style for the window. The floating palette is a popup window with a tiny caption, a standard window border, and a close box instead of a system menu box. There are no maximize or minimize buttons. A one pixel border is added around the client area in case a toolbox is implemented. This style must be turned on before the window is created. After the window is created, its style can't be changed.See alsoREMAP='BodyNoLead'TFrameWindow::TFrameWindow, TTinyCaption::TTinyCaptionPublic member functionsSetMarginsFORMAT="LINESPECIFIC"void SetMargins(const TSize& margin);REMAP='BodyNoLead'Sets the margins of the floating palette window to the size specified in ROLE='italic'margin and sets the height of the tiny caption bar.See alsoREMAP='BodyNoLead'TTinyCaption::EnableTinyCaptionProtected member functionsDoNCHitTestFORMAT="LINESPECIFIC"TEventStatus DoNCHitTest(TPoint& screenPt, uint& evRes);REMAP='BodyNoLead'If the floating palette is not enabled, returns ROLE='italic'esPartial. Otherwise, sends a message to the floating palette that the mouse or the cursor has moved, and returns ROLE='italic'esComplete.Response table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='105*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SYSCOMMANDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvSysCommandCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCCALCSIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvNCCalcSizeCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCPAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvNCPaintCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCHITTESTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvNcHitTestTFont classMOREINFO="NONE"gdiobjec.hREMAP='BodyNoLead'ROLE='italic'TFont derived from ROLE='italic'TGdiObject provides constructors for creating font objects from explicit information or indirectly.Public constructorsConstructorsFORMAT="LINESPECIFIC"TFont(HFONT handle, TAutoDelete autoDelete = NoAutoDelete);REMAP='BodyNoLead'Creates a ROLE='italic'TFont object and sets the ROLE='italic'Handle data member to the given borrowed ROLE='italic'handle. The ROLE='italic'ShouldDelete data member defaults to ROLE='bold'false, ensuring that the borrowed handle will not be deleted when the C++ object is destroyed.FORMAT="LINESPECIFIC"TFont(const char far* facename = 0, int height = 0, int width = 0, int escapement = 0, int orientation = 0 int weight = FW_NORMAL, uint8 pitchAndFamily = DEFAULT_PITCH| FF_DONTCARE, uint8 italic = false, uint8 underline = false, uint8 strikeout = false, uint8 charSet = 1, uint8 outputPrecision = OUT_DEFAULT_PRECIS, uint8 clipPrecision = CLIP_DEFAULT_PRECIS, uint8 quality = DEFAULT_QUALITY);REMAP='BodyNoLead'Creates a ROLE='italic'TFont object with the given values.FORMAT="LINESPECIFIC"TFont(int height, int width, int escapement = 0, int orientation = 0, int weight = FW_NORMAL, uint8 italic = false, BYTE underline = false, uint8 strikeout = false, uint8 charSet = 1, uint8 outputPrecision = OUT_DEFAULT_PRECIS, uint8 clipPrecision = CLIP_DEFAULT_PRECIS, uint8 quality = DEFAULT_QUALITY uint8 pitchAndFamily = DEFAULT_PITCH| FF_DONTCARE, const char far* facename = 0);REMAP='BodyNoLead'Creates a font object with the given values. The constructor parameter list and default values match the Windows API ROLE='italic'CreateFont call.FORMAT="LINESPECIFIC"TFont(const LOGFONT far* logFont);REMAP='BodyNoLead'Creates a ROLE='italic'TFont object from the given ROLE='italic'logFont.FORMAT="LINESPECIFIC"TFont(const TFont& font);REMAP='BodyNoLead'The ROLE='italic'TFont copy constructor.See alsoREMAP='BodyNoLead'::CreateFont (Windows API), ::CreateFontIndirect (Windows API), TGdiObject::Handle, TGdiObject::ShouldDelete, Public member functionsGetObjectFORMAT="LINESPECIFIC"bool GetObject(LOGFONT far& logFont) const;REMAP='BodyNoLead'Retrieves information about this pen object and places it in the given ROLE='italic'LOGFONT structure. Returns ROLE='bold'true if successful and ROLE='bold'false if unsuccessful.See alsoREMAP='BodyNoLead'TGdiObject::GetObject, LOGFONT structoperator HFONT( )FORMAT="LINESPECIFIC"operator HFONT( ) const;REMAP='BodyNoLead'Typecasting operator that converts this font's ROLE='italic'Handle to type ROLE='italic'HFONT (the data type representing the handle to a physical font).TFrameWindow classMOREINFO="NONE"framewin.hREMAP='BodyNoLead'Derived fromROLE='italic' TWindow, TFrameWindow controls such window-specific behavior as keyboard navigation and command processing for client windows. For example, when a window is reactivated, ROLE='italic'TFrameWindow is responsible for restoring a window's input focus and for adding menu bar and icon support. ROLE='italic'TFrameWindow is a streamable class. REMAP='Body'In terms of window areas, the frame area consists of the border, system menus, toolbars and status bars whereas the client area excludes these areas. Although frame windows can support a client window, the frame window remains separate from the client window so that you can change the client window without affecting the frame window. REMAP='Body'ObjectWindows uses this frame and client structure for both ROLE='italic'TFrameWindow and ROLE='italic'TMDIChild classes. Both these classes can hold a client class. Having a separate class for the client area of the window adds more flexibility to your program. For example, this separate client area, which might be a dialog box, can be moved into another frame window, either a main window or an MDI child window.REMAP='Body'See ROLE='italic'TFloatingFrame for a description of a floating frame with the same default functionality as a frame window.Public constructors and destructorConstructorsFORMAT="LINESPECIFIC"TFrameWindow(TWindow* parent, const char far *title = 0, TWindow* clientWnd = 0, bool shrinkToClient = false, TModule* module = 0);REMAP='BodyNoLead'Constructs a window object with the parent window supplied in ROLE='italic'parent, which is zero if this is the main window. ROLE='italic'title, which by default is zero, contains the title displayed in the window's caption bar. ROLE='italic'clientWnd is the client window for this frame window or zero if none exists. ROLE='italic'shrinkToClient controls whether the client window will size to fit the frame or the frame window will fit the client. Note that this parameter only affects the size of the main window. When a client window is used in a frame window that doesn't have ROLE='italic'shrinktoClient set, the client window resizes to fit the frame window. When a client window is used in a frame window that has the ROLE='italic'shrinktoClient set, the frame window shrinks to fit the size of the client window.FORMAT="LINESPECIFIC"TFrameWindow(HWND hWnd, TModule* module = 0);REMAP='BodyNoLead'Constructor for a ROLE='italic'TFrameWindow that is being used as an alias for a non-ObjectWindows window. ROLE='italic'hWnd is the handle to the existing window object that ROLE='italic'TFrameWindow controls; ROLE='italic'module contains the module passed to the base class's contructor.DestructorFORMAT="LINESPECIFIC"~TFrameWindow( );REMAP='BodyNoLead'Deletes any associated menu descriptor.See alsoREMAP='BodyNoLead'TWindow::TWindow, TFloatingFrame::TFloatingFramePublic data membersKeyboardHandlingFORMAT="LINESPECIFIC"bool KeyboardHandling;REMAP='BodyNoLead'Indicates if keyboard navigation is required.Public member functionsAssignMenuFORMAT="LINESPECIFIC"virtual bool AssignMenu(TResId menuResId);REMAP='BodyNoLead'Sets ROLE='italic'Attr.Menu to the supplied ROLE='italic'menuResId and frees any previous strings pointed to by ROLE='italic'Attr.Menu. If ROLE='italic'HWindow is nonzero, loads and sets the menu of the window, destroying any previously existing menu.See alsoREMAP='BodyNoLead'TMDIFrameWindow::SetMenu, TFrameWindow::SetMenuDescrEnableKBHandlerFORMAT="LINESPECIFIC"void EnableKBHandler( );REMAP='BodyNoLead'Sets a flag indicating that the receiver has requested keyboard navigation (translation of keyboard input into control selections). By default, the keyboard interface, which lets users use the Tab and arrow keys to move between the controls, is disabled for windows and dialog boxes.GetClientWindowFORMAT="LINESPECIFIC"virtual TWindow* GetClientWindow( );REMAP='BodyNoLead'Returns a pointer to the client window. If you are trying to access a window-based object in a ROLE='italic'TMDIChild (which is a frame window), you can use this function.See alsoREMAP='BodyNoLead'TMDIChildGetCommandTargetFORMAT="LINESPECIFIC"virtual HWND GetCommandTarget( );REMAP='BodyNoLead'Locates and returns the child window that is the target of the command and command enable messages. If the current application does not have focus or if the focus is within a toolbar in the application, ROLE='italic'GetCommandTarget returns the most recently active child window.REMAP='Body'If an alternative form of command processing is desired, a user's main window class can override this function. TFrameWindow's ROLE='italic'EvCommand and ROLE='italic'EvCommandEnable functions use ROLE='italic'GetCommandTarget to find the command target window. This member is not available under Presentation Manager.GetMenuDescrFORMAT="LINESPECIFIC"const TMenuDescr* GetMenuDescr( );REMAP='BodyNoLead'Returns a pointer to the menu descriptor.See alsoREMAP='BodyNoLead'TFrameWindow::SetMenuDescr, TMenuDescrHoldFocusHWndFORMAT="LINESPECIFIC"bool HoldFocusHWnd(HWND hWndLose, HWND hWndGain);REMAP='BodyNoLead'Overrides ROLE='italic'TWindow's virtual function. Responds to a request by a child window to hold its HWND when it is losing focus. Stores the child's HWND in ROLE='italic'HwndRestoreFocus.See alsoREMAP='BodyNoLead'TWindow::HoldFocusHwndIdleActionFORMAT="LINESPECIFIC"void IdleAction(long idleCount);REMAP='BodyNoLead'Overrides ROLE='italic'TWindow's virtual function. ROLE='italic'TApplication calls the main window's ROLE='italic'IdleAction when no messages are waiting to be processed. ROLE='italic'TFrameWindow uses this idle time to perform command enabling for the menu bar. It also forwards ROLE='italic'IdleAction to each of its children. ROLE='italic'IdleAction can be overridden to do background processing.See alsoREMAP='BodyNoLead'TApplication::IdleActionMergeMenuFORMAT="LINESPECIFIC"bool MergeMenu(const TMenuDescr& childMenuDescr);REMAP='BodyNoLead'Merges the given menu descriptor with this frame's own menu descriptor and displays the resulting menu in this frame. See ROLE='italic'TMenuDescr for a description of menu bar types that can be merged.See alsoREMAP='BodyNoLead'TMenuDescrPreProcessMsgFORMAT="LINESPECIFIC"bool PreProcessMsg(MSG& msg);REMAP='BodyNoLead'Overrides ROLE='italic'TWindow's virtual function. Performs preprocessing of window messages. If the child window has requested keyboard navigation, ROLE='italic'PreProcessMsg handles any accelerator key messages and then processes any other keyboard messages.See alsoREMAP='BodyNoLead'TWindow::PreProcessMsgRestoreMenuFORMAT="LINESPECIFIC"bool RestoreMenu( );REMAP='BodyNoLead'Restores the default menu of the frame window.SetClientWindowFORMAT="LINESPECIFIC"virtual TWindow* SetClientWindow(TWindow* clientWnd);REMAP='BodyNoLead'Sets the client window to the specified window. Users are responsible for destroying the old client window if they want to eliminate it.SetDocTitleFORMAT="LINESPECIFIC"bool SetDocTitle(const char far* docname, int index);REMAP='BodyNoLead'Overrides ROLE='italic'TWindow's virtual function. Pastes the number of the view into the caption and then shows the number on the screen. This function can be overridden if you don't want to use the default implementation, which displays a number on the screen. That is, you might want to write "Two" instead of "2" on the screen. For an example of the behavior of this function, see step 12 of the ObjectWindows tutorial, which renumbers the views if one of them is closed.SetIconFORMAT="LINESPECIFIC"bool SetIcon(TModule* iconModule, TResId iconResId);REMAP='BodyNoLead'Sets the icon in the module specified in ROLE='italic'iconModule to the resource ID specified in ROLE='italic'iconResId. See the sample file bmpview.cpp for an example of painting an icon from a bitmap. You can set the ROLE='italic'iconResId to one of these pre-defined values as well as user-defined values:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='87*'COLNAME='C2' COLWIDTH='185*'VALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDI_APPLICATIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Default icon used for applicationsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDI_ASTERISKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asterisk used for an informative messageCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDI_EXCLAMATIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Exclamation mark used for a warning messageCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDI_HANDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Hand used for warning messagesCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDI_QUESTIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Question mark used for prompting a responseSee alsoREMAP='BodyNoLead'TFrameWindow::EvQueryDragIconSetMenuFORMAT="LINESPECIFIC"virtualBOOL SetMenu(HMENU newMenu);REMAP='BodyNoLead'Overrides ROLE='italic'TWindow's non-virtual ROLE='italic'SetMenu function, thus allowing derived classes the opportunity to implement this function differently from ROLE='italic'TWindow. ROLE='italic'SetMenu sets the window's menu to the menu indicated by ROLE='italic'newMenu. If ROLE='italic'newMenu is 0, the window's current menu is removed. ROLE='italic'SetMenu returns 0 if the menu remains unchanged; otherwise, it returns a nonzero value.SetMenuDescrFORMAT="LINESPECIFIC"void SetMenuDescr(const TMenuDescr& menuDescr);REMAP='BodyNoLead'Sets the menu descriptor to the new menu descriptor.See alsoREMAP='BodyNoLead'TFrameWindow::GetMenuDescr, TMenuDescrProtected data membersClientWndFORMAT="LINESPECIFIC"TWindow* ClientWnd;REMAP='BodyNoLead'ROLE='italic'ClientWnd points to the frame's client window.DocTitleIndexFORMAT="LINESPECIFIC"int DocTitleIndex;REMAP='BodyNoLead'Holds the index number for the document title.HWndRestoreFocusFORMAT="LINESPECIFIC"HWND HWndRestoreFocus;REMAP='BodyNoLead'Stores the handle of the child window whose focus gets restored.See alsoREMAP='BodyNoLead'TFrameWindow::HoldFocusHwndMergeModuleFORMAT="LINESPECIFIC"TModule* MergeModule;REMAP='BodyNoLead'Tells the frame window which module the menu comes from. ROLE='italic'TDecoratedFrame uses this member to get the menu hints it displays at the bottom of the screen. It assumes that the menu hints come from the same place the menu came from.Protected constructorConstructorFORMAT="LINESPECIFIC"TFrameWindow( );REMAP='BodyNoLead'Protected constructor used in conjunction with ROLE='italic'Init function for initializing virtually derived classes.Protected member functionsEvCommandFORMAT="LINESPECIFIC"LRESULT EvCommand(uint id, HWND hWndCtl, uint notifyCode);REMAP='BodyNoLead'Provides extra processing for commands and lets the focus window and its parent windows handle the command first.EvCommandEnableFORMAT="LINESPECIFIC"void EvCommandEnable(TCommandEnabler& ce);REMAP='BodyNoLead'Handles checking and unchecking of the frame window's menu items.EvEraseBkgndFORMAT="LINESPECIFIC"bool EvEraseBkgnd(HDC);REMAP='BodyNoLead'ROLE='italic'EvEraseBkgnd erases the background of the window specified in ROLE='italic'HDC. It returns ROLE='bold'true if the background is erased; otherwise, it returns ROLE='bold'false.EvInitMenuPopupFORMAT="LINESPECIFIC"HANDLE EvInitMenuPopup(HMENU hPopupMenu, uint index, bool sysMenu);REMAP='BodyNoLead'Sent before a pop-up menu is displayed, ROLE='italic'EvInitMenuPopup lets an application change the items on the menu before the menu is displayed. ROLE='italic'EvInitMenuPopup controls whether the items on the pop-up menu are enabled or disabled, checked or unchecked, or strings. ROLE='italic'HMENU indicates the menu handle. ROLE='italic'index is the index of the pop-up menu. ROLE='italic'sysMenu indicates if the pop-up menu is the system menu.EvPaintFORMAT="LINESPECIFIC"void EvPaint( );REMAP='BodyNoLead'Responds to a WM_PAINT message in the client window in order to paint the iconic window's icon or to allow client windows a change to paint the icon.See alsoREMAP='BodyNoLead'TWindow::Paint, TScroller::BeginView, TScroller::EndViewEvParentNotifyFORMAT="LINESPECIFIC"void EvParentNotify(uint event, uint childHandleOrX, uint childIDOrY);REMAP='BodyNoLead'Responds to a message to notify the parent window that a given event has occurred. If the client window is destroyed, closes the parent window. If ROLE='italic'shrinkToClient is set and the child window has changed size, the frame is adjusted.REMAP='Body'When a ROLE='italic'TFrameWindow's client window is destroyed, the ROLE='italic'TFrameWindow object sees the WM_PARENTNOTIFY message and posts a close message to itself. Without this message, an empty frame would remain and the client window would then have to determine how to destroy the frame. If you don't want this to happen, you can derive from the frame window and have your application handle the ROLE='italic'EvParentNotify or ROLE='italic'EvClose messages.EvQueryDragIconFORMAT="LINESPECIFIC"HANDLE EvQueryDragIcon( );REMAP='BodyNoLead'Responds to a WM_QUERYDRAGICON message sent to a minimized (iconic) window that is going to be dragged. Instead of the default icon, ROLE='italic'EvQueryDragIcon uses the icon that was set using MOREINFO="NONE"SetIcon.REMAP='Body'This member is not available under Presentation Manager.See alsoREMAP='BodyNoLead'TFrameWindow::SetIconEvSetFocusFORMAT="LINESPECIFIC"void EvSetFocus(HWND hWndLostFocus);REMAP='BodyNoLead'Restores the focus to the active window. ROLE='italic'hWndLostFocus contains the handle for the window that lost focus.EvSizeFORMAT="LINESPECIFIC"void EvSize(uint sizeType, TSize& size);REMAP='BodyNoLead'Resizes the client window's size so that it is equivalent to the client rectangle's size. Calls ROLE='italic'TWindow::EvSize) in response to an incoming WM_SIZE message.See alsoREMAP='BodyNoLead'TSizeInitFORMAT="LINESPECIFIC"void Init (TWindow* clientWnd, bool shrinkToClient);REMAP='BodyNoLead'This initialize function is for use with virtually derived classes, which must call ROLE='italic'Init before construction is completed. This procedure provides necessary data to virtually derived classes and takes care of providing the data in the appropriate sequence.SetupWindowFORMAT="LINESPECIFIC"void SetupWindow( );REMAP='BodyNoLead'Calls ROLE='italic'TWindow::SetUpWindow to create windows in a child list. ROLE='italic'SetupWindow performs the initial adjustment of the client window if one exists, assigns the frame's menu based on the menu descriptor, and initializes ROLE='italic'HwndRestoreFocus.See alsoREMAP='BodyNoLead'TWindow::SetUpWindowResponse table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='129*'COLNAME='C2' COLWIDTH='141*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_ERASEBKGNDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvEraseBkgndCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_INITMENUPOPUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvInitMenuPopupCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_PAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvPaintCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_PARENTNOTIFYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvParentNotifyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_QUERYDRAGICONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvQueryDragIcon (Windows only)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SETFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvSetFocusCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvSizeTGadget classMOREINFO="NONE"gadget.hREMAP='BodyNoLead'ROLE='italic'TGadget is the base class for the following derived gadget classes:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='78*'COLNAME='C2' COLWIDTH='297*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ClassCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TBitmapGadgetCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Displays a bitmap.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TButtonGadgetCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Uses a bitmap to similate a button gadget.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TControlGadgetCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Encapsulates inserting a control such as an edit control or a combobox, into a gadget window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TTextGadgetCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Displays text.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TSeparatorGadgetCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Separates logical groups of gadgets.REMAP='Body'ROLE='italic'TGadget interface objects belong to a gadget window, have borders and margins, and have their own coordinate system. The margins are the same as those for ROLE='italic'TGadgetWindow and borders are always measured in border units.REMAP='Body'To set the attributes for the gadget, you can either choose a border style (which automatically sets the individual border edges) or set the borders and then override the member function ROLE='italic'PaintBorder to create a custom look for your gadget. If you change the borders, margins, or border style, the gadget window's ROLE='italic'GadgetChangedSize member function is invoked.REMAP='Body'Although, by default, gadgets shrink-wrap to fit around their contents, you can control this attribute by setting your own values for ROLE='italic'ShrinkWrapWidth and ROLE='italic'ShrinkWrapHeight.REMAP='Body'A gadget window, being an actual window, receives messages from the mouse. After the gadget window receives the message, it decides which gadget should receive the message by calling the member function directly instead of sending or posting a message.See alsoREMAP='BodyNoLead'TBitmapGadget, TButtonGadget, TControlGadget, TTextGadget, TSeparatorGadgetPublic constructors and destructorConstructorFORMAT="LINESPECIFIC"TGadget(int id = 0, TBorderStyle = None);REMAP='BodyNoLead'Constructs a ROLE='italic'TGadget object with the specified ID and border style.DestructorFORMAT="LINESPECIFIC"virtual ~TGadget( );REMAP='BodyNoLead'Destroys a ROLE='italic'TGadget interface object and removes it from its associated window.Public data membersClipFORMAT="LINESPECIFIC"bool Clip;REMAP='BodyNoLead'If ROLE='italic'Clip is ROLE='bold'false, clipping borders have not been established. If ROLE='italic'Clip is ROLE='bold'true, the drawing for each gadget is restrained by the gadget's border.WideAsPossibleFORMAT="LINESPECIFIC"bool WideAsPossible;REMAP='BodyNoLead'Initially set to false, ROLE='italic'WideAsPossible indicates whether the gadget width will be adjusted by the gadget window to be as wide as possible in the remaining space.See alsoREMAP='BodyNoLead'TGadgetWindow::WideAsPossiblePublic enums and structsTBordersFORMAT="LINESPECIFIC"struct TBorders {FORMAT="LINESPECIFIC" unsigned Left;FORMAT="LINESPECIFIC" unsigned Right;FORMAT="LINESPECIFIC" unsigned Top;FORMAT="LINESPECIFIC" unsigned Bottom;FORMAT="LINESPECIFIC" TBorders(){Left=Right=Top=Bottom=0;}FORMAT="LINESPECIFIC" };REMAP='BodyNoLead'ROLE='italic'TBorders structure holds the values for the left, right, top, and bottom measurements of the gadget.TBorderStyleFORMAT="LINESPECIFIC"enum TBorderStyle {None, Plain, Raised, Recessed, Embossed};REMAP='BodyNoLead'Enumerates an exclusive list of border styles: none, plain, raised (the gadget appears to be raised above the gadget window), recessed (the gadget appears to be recessed into the gadget window), or embossed (the gadget appears to have an embossed border). For an example of border styles, see the sample ObjectWindows program, MDIFILE.CPP, on your distribution disk.TMarginsFORMAT="LINESPECIFIC"struct TMargins {FORMAT="LINESPECIFIC" enum TUnits {Pixels, LayoutUnits, BorderUnits};FORMAT="LINESPECIFIC" TUnits Units;FORMAT="LINESPECIFIC" int Left;FORMAT="LINESPECIFIC" int Right;FORMAT="LINESPECIFIC" int Top;FORMAT="LINESPECIFIC" int Bottom;FORMAT="LINESPECIFIC" TMargin(){Units=LayoutUnits;Left=Right=Top=Bottom=0;}FORMAT="LINESPECIFIC" };REMAP='BodyNoLead'Used by the ROLE='italic'TGadgetWindow and ROLE='italic'TGadget classes, ROLE='italic'TMargins contains the measurements of the margins for the gadget. The constructor initializes ROLE='italic'Units to ROLE='italic'LayoutUnits and sets Left, Right, Top, and ROLE='italic'Bottom equal to 0.See alsoREMAP='BodyNoLead'TGadgetWindow::SetMarginsPublic member functionsCommandEnableFORMAT="LINESPECIFIC"virtual void CommandEnable( );REMAP='BodyNoLead'ROLE='italic'CommandEnable is provided so that the gadget can perform command enabling (so it can handle an incoming message, if it's appropriate to do so).GetBordersFORMAT="LINESPECIFIC"TBorders& GetBorders( );REMAP='BodyNoLead'Gets the gadget's borders measured in border units that are based on SM_CXBORDER and SM_CYBORDER.See alsoREMAP='BodyNoLead'TGadget::SetBordersGetBorderStyleFORMAT="LINESPECIFIC"TBorderStyle GetBorderStyle( );REMAP='BodyNoLead'Gets the style for the gadget's borders.See alsoREMAP='BodyNoLead'TGadget::SetBorderStyleGetBoundsFORMAT="LINESPECIFIC"TRect& GetBounds( );REMAP='BodyNoLead'Returns the boundary rectangle for the gadget.See alsoREMAP='BodyNoLead'TButtonGadget::SetNotchCornersGetDesiredSizeFORMAT="LINESPECIFIC"virtual void GetDesiredSize(TSize& size);REMAP='BodyNoLead'ROLE='italic'GetDesiredSize determines how big the gadget can be. The gadget window sends this message to query the gadget's size. If shrink-wrapping is requested, ROLE='italic'GetDesiredSize returns the size needed to accommodate the borders and margins. If shrink-wrapping is not requested, it returns the gadget's current width and height. ROLE='italic'TGadgetWindow needs this information to determine how big the gadget needs to be, but it can adjust these dimensions if necessary. If ROLE='italic'WideAsPossible is true, then the width parameter (ROLE='italic'size.cx) is ignored.GetEnabledFORMAT="LINESPECIFIC"bool GetEnabled( );REMAP='BodyNoLead'Determines whether keyboard and mouse input have been enabled for the specified gadget. If the gadget is enabled, ROLE='italic'GetEnabled returns true; otherwise, it returns false. By default, keyboard and mouse input are enabled.See alsoREMAP='BodyNoLead'TGadget::SetEnabledGetIdFORMAT="LINESPECIFIC"int GetId( );REMAP='BodyNoLead'Gets the ID for the gadget.GetMarginsFORMAT="LINESPECIFIC"TMargins& GetMargins( );REMAP='BodyNoLead'Gets the margin dimensions.GetOuterSizesFORMAT="LINESPECIFIC"void GetOuterSizes(int& left, int& right, int& top, int& bottom);REMAP='BodyNoLead'Returns the amount of space (in pixels) taken up by the borders and margins.NextGadgetFORMAT="LINESPECIFIC"TGadget* NextGadget( );REMAP='BodyNoLead'Returns the next gadget in the list of gadgets.SetBordersFORMAT="LINESPECIFIC"void SetBorders(TBorders& borders);REMAP='BodyNoLead'Sets the borders for the gadget. If the borders are changed, ROLE='italic'SetBorders calls ROLE='italic'TGadgetWindow::GadgetChangedSize to notify the gadget window of the change.See alsoREMAP='BodyNoLead'TGadget::GetBorders, TGadgetWindow::GadgetChangedSizeSetBorderStyleFORMAT="LINESPECIFIC"void SetBorderStyle(TBorderStyle);REMAP='BodyNoLead'Sets the border style for the gadget.See alsoREMAP='BodyNoLead'TGadget::GetBorderStyleSetBoundsFORMAT="LINESPECIFIC"virtual void SetBounds(TRect& rect);REMAP='BodyNoLead'ROLE='italic'SetBounds informs the gadget of a change in its bounding rectangle. Although the default behavior updates only the instance variable ROLE='italic'Bounds, you can override this method to also update the internal state of the gadget.SetEnabledFORMAT="LINESPECIFIC"virtual void SetEnabled(bool);REMAP='BodyNoLead'Enables or disables keyboard and mouse input for the gadget. By default, the gadget is disabled when it is created and must be enabled before it can be activated.See alsoREMAP='BodyNoLead'TGadget::GetEnabledSetMarginsFORMAT="LINESPECIFIC"void SetMargins(TMargins& margins);REMAP='BodyNoLead'Sets the margins of the gadget. If the margins are changed, ROLE='italic'SetMargins calls ROLE='italic'TGadgetWindow::GadgetChangedSize to notify the gadget window.See alsoREMAP='BodyNoLead'TGadget::GetMarginsSetShrinkWrapFORMAT="LINESPECIFIC"void SetShrinkWrap(bool shrinkWrapWidth, bool shrinkWrapHeight);REMAP='BodyNoLead'Sets the ROLE='italic'ShrinkWrapWidth and ROLE='italic'ShrinkWrapHeight data members. Your derived class can call ROLE='italic'TGadgetWindow's ROLE='italic'GadgetChangedSize member function if you want to change the size of the gadget.See alsoREMAP='BodyNoLead'TGadgetWindow::GadgetChangedSizeSetSizeFORMAT="LINESPECIFIC"void SetSize(TSize& size);REMAP='BodyNoLead'ROLE='italic'SetSize alters the size of the gadget and then calls ROLE='italic'TGadgetWindow::ROLE='italic'GadgetChangedSize for the size change to take effect.REMAP='Body'This function is needed only if you have turned off shrink-wrapping in one or both dimensions; otherwise, use the ROLE='italic'GetDesiredSize member function to return the shrink-wrapped size.SysColorChangeFORMAT="LINESPECIFIC"virtual void SysColorChange( );REMAP='BodyNoLead'ROLE='italic'SysColorChange is called when the system colors have been changed so that gadgets can rebuild and repaint, if necessary.Protected data membersBoundsFORMAT="LINESPECIFIC"TRect Bounds;REMAP='BodyNoLead'Contains the bounding rectangle for the gadget in gadget window coordinates.See alsoREMAP='BodyNoLead'TGadget::GetInnerRectBordersFORMAT="LINESPECIFIC"TBorders Borders;REMAP='BodyNoLead'Contains the border measurements ROLE='italic'fTGadget::GetInnerRectBorderStyleFORMAT="LINESPECIFIC"TBorderStyle BorderStyle;REMAP='BodyNoLead'Contains the border style for the gadget.IdFORMAT="LINESPECIFIC"int Id;REMAP='BodyNoLead'Contains the gadget's ID.MarginsFORMAT="LINESPECIFIC"TMargins Margins;REMAP='BodyNoLead'Contains the margin measurements of the rectangle or the gadget.See alsoREMAP='BodyNoLead'TGadget::GetInnerRectShrinkWrapHeightFORMAT="LINESPECIFIC"bool ShrinkWrapHeight;REMAP='BodyNoLead'Indicates if the gadget is to be shrink-wrapped to fit around its contents.ShrinkWrapWidthFORMAT="LINESPECIFIC"bool ShrinkWrapWidth;REMAP='BodyNoLead'Indicates if the gadget is to be shrink-wrapped to fit around its contents.TrackMouseFORMAT="LINESPECIFIC"bool TrackMouse;REMAP='BodyNoLead'Initialized to false. When ROLE='italic'TrackMouse is ROLE='bold'true, the gadget captures and releases the mouse on ROLE='italic'LButtonDown and ROLE='italic'LButtonUp by calling ROLE='italic'TGadgetWindow's ROLE='italic'GadgetSetCapture and ROLE='italic'GadgetReleaseCapture.See alsoREMAP='BodyNoLead'TGadget::LButtonDown, TGadget::LButtonUpWindowFORMAT="LINESPECIFIC"TGadgetWindow* Window;REMAP='BodyNoLead'References the owning or parent window for the gadget.Protected member functionsGetInnerRectFORMAT="LINESPECIFIC"void GetInnerRect(TRect& rect);REMAP='BodyNoLead'Computes the area of the gadget's rectangle excluding the borders and margins.InsertedFORMAT="LINESPECIFIC"virtual void Inserted( );REMAP='BodyNoLead'Called after a gadget is inserted into a window.InvalidateFORMAT="LINESPECIFIC"void Invalidate(bool erase = true);REMAP='BodyNoLead'Used to invalidate the active (usually nonborder) portion of the gadget, ROLE='italic'Invalidate calls ROLE='italic'InvalidateRect and passes the boundary width and height of the area to erase.InvalidateRectFORMAT="LINESPECIFIC"void InvalidateRect(const TRect& rect, bool erase = true);REMAP='BodyNoLead'Invalidates the gadget-relative rectangle in the parent window.LButtonDownFORMAT="LINESPECIFIC"virtual void LButtonDown(uint modKeys, TPoint& point);REMAP='BodyNoLead'Captures the mouse if ROLE='italic'TrackMouse is set. ROLE='italic'point is located in the gadget's coordinate system.See alsoREMAP='BodyNoLead'TGadget::TrackMouseLButtonUpFORMAT="LINESPECIFIC"virtual void LButtonUp(uint modKeys, TPoint& point);REMAP='BodyNoLead'Releases the mouse capture if ROLE='italic'TrackMouse is set. ROLE='italic'point is located in the gadget's coordinate system.See alsoREMAP='BodyNoLead'TGadget::TrackMouseMouseEnterFORMAT="LINESPECIFIC"virtual void MouseEnter(uint modKeys, TPoint& point);REMAP='BodyNoLead'Called when the mouse enters the gadget.See alsoREMAP='BodyNoLead'TGadget::MouseLeaveMouseLeaveFORMAT="LINESPECIFIC"virtual void MouseLeave(uint modKeys, TPoint& point);REMAP='BodyNoLead'Called when the mouse leaves the gadget.See alsoREMAP='BodyNoLead'TGadget::MouseEnterMouseMoveFORMAT="LINESPECIFIC"virtual void MouseMove(uint modKeys, TPoint& point);REMAP='BodyNoLead'If mouse events are captured, ROLE='italic'EvMouseMove responds to a mouse dragging message. ROLE='italic'point is located in the receiver's coordinate system.See alsoREMAP='BodyNoLead'TGadget::MouseEnter, TGadget::MouseLeavePaintFORMAT="LINESPECIFIC"virtual void Paint(TDC&);REMAP='BodyNoLead'Calls ROLE='italic'PaintBorder to paint the indicated device context.See alsoREMAP='BodyNoLead'TTextGadget::PaintPaintBorderFORMAT="LINESPECIFIC"virtual void PaintBorder(TDC& dc);REMAP='BodyNoLead'Used to paint the border, ROLE='italic'PaintBorder calls ::ROLE='italic'GetSystemMetrics to obtain the width and height of the gadget and uses the color returned by ROLE='italic'GetSyscolor to paint or highlight the area with the specified brush. Depending on whether the border style is raised, embossed, or recessed, ROLE='italic'PaintBorder paints the specified boundary. You can override this function if you want to implement a border style that isn't supported by ObjectWindows's gadgets.PtInFORMAT="LINESPECIFIC"virtual bool PtIn(TPoint& point);REMAP='BodyNoLead'ROLE='italic'PtIn determines if the point is within the receiver's bounding rectangle and returns true if this is the case; otherwise, returns false.RemovedFORMAT="LINESPECIFIC"virtual void Removed( );REMAP='BodyNoLead'Called after a gadget is removed from a window.UpdateFORMAT="LINESPECIFIC"void Update( );REMAP='BodyNoLead'Repaints the gadget if possible.TGadgetWindowFont classMOREINFO="NONE"gadgetwi.hREMAP='BodyNoLead'Derived from ROLE='italic'TFont, ROLE='italic'TGadgetWindowFont is a specific font used in gadget windows for sizing and default text. You can specify the point size of the font (not the size in pixels) and whether it is bold or italic. You can use one of the following ROLE='italic'FF_xxxx constants to indicate the font family type:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FF_DECORATIVECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Speciality fonts such as Old English.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FF_DONTCARECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The font type does not matter.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FF_MODERNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Fonts such as Pica, Elite or Courier with a constant stroke, width, and with or without serifs.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FF_ROMANCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Fonts such as Times New Roman and New Century Schoolbook with varied stroke and with serifs.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FF_SCRIPTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Fonts such as Script that are designed to resemble handwriting.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FF_SWISSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Fonts such as MS Sans Serif with variable stroke width and without serifs.REMAP='Body'Depending on the typeface, the font weight can be one of the following constants:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='131*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FW_DONTCARECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The font weight does not matter.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FW_THINCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ThinCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FW_EXTRALIGHTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Extra lightCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FW_ULTRALIGHTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Extra lightCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FW_LIGHTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'LightCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FW_NORMALCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'NormalCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FW_REGULARCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Normal font weightCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FW_MEDIUMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MediumCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FW_SEMIBOLDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Somewhat boldCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FW_DEMIBOLDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Somewhat boldCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FW_BOLDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BoldCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FW_EXTRBOLDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Extra boldCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FW_ULTRBOLDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Extra boldCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FW_BLACKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Heavy weightCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FW_HEAVYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Heavy weightREMAP='Body'The font's appearance depends on the typeface so that some fonts only have FW_NORMAL, FW_REGULAR and FW_BOLD available. If FW_DONTCARE is indicated, the default font weight is used.Public constructorConstructorFORMAT="LINESPECIFIC"TGadgetWindowFont(int pointSize = 10, bool bold = false, bool italic = false);REMAP='BodyNoLead'Constructs a ROLE='italic'TGadgetWindowFont interface object with a default point size of 10 picas without bold or italic typeface. By default, the constructor creates the system font: a variable-width, sans-serif Helvetica.See alsoREMAP='BodyNoLead'TFontTGadgetWindow classMOREINFO="NONE"gadgetwi.hREMAP='BodyNoLead'Derived from ROLE='italic'TWindow, ROLE='italic'TGadgetWindow maintains a list of tiled gadgets for a window and lets you dynamically arrange tool bars. You can specify the following attributes of these gadgets:MARK='bullet'REMAP='Bullet1'Horizontal or vertical tiling. Positions the gadgets horizontally or vertically within the inner rectangle (the area excluding borders and margins).REMAP='Bullet1'Gadget font. Default font to use for gadgets and for calculating layout units. For font information, see the description of ROLE='italic'TGadgetWindowFont.REMAP='Bullet1'Left, right, top, and bottom margins. Specified in pixels, layout units (based on the window font), or border units (the width or height of a thin window border).REMAP='Bullet1'Measurement units. Specified in pixels, layout units, or border units.REMAP='Bullet1'Gadget window size. A gadget window can shrink-wrap its width, height, or both to fit around its gadgets. By default, horizontally tiled gadgets shrink-wrap to fit the height of the window and vertically tiled gadgets shrink-wrap to fit the width of the window.REMAP='Body'ROLE='italic'TGadgetWindow is the base class for the following derived classes: ROLE='italic'TControlBar, TMessageBar, TToolBox, and ROLE='italic'TStatusBar.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TGadgetWindow(TWindow* parent = 0, TTileDirection direction = Horizontal, TFont *font = new TGadgetWindowFont, TModule* module = 0);REMAP='BodyNoLead'Creates a ROLE='italic'TGadgetWindow interface object with the default tile direction and font and passes ROLE='italic'module with a default value of 0.DestructorFORMAT="LINESPECIFIC"~TGadgetWindow( );REMAP='BodyNoLead'Destructs the ROLE='italic'TGadgetWindow object by deleting all of its gadgets and fonts.Type definitionsTHintModeFORMAT="LINESPECIFIC"enum THintMode{NoHints, PressHints, EnterHints};REMAP='BodyNoLead'Enumerates the hint mode settings of the gadgetname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'either no hints, hints when a button is pressed, or hints when the mouse passes over a gadget.See alsoREMAP='BodyNoLead'TGadgetWindow::GetHintModePublic member functionsFirstGadgetFORMAT="LINESPECIFIC"TGadget* FirstGadget( ) const;REMAP='BodyNoLead'Returns the ROLE='italic'FirstGadget in the list.See alsoREMAP='BodyNoLead'TGadgetWindow::FirstGadgetGadgetChangedSizeFORMAT="LINESPECIFIC"void GadgetChangedSize(TGadget& gadget);REMAP='BodyNoLead'Used to notify the gadget window that a gadget has changed its size, ROLE='italic'GadgetChangedSize calls ROLE='italic'LayoutSession to re-layout all gadgets.See alsoREMAP='BodyNoLead'TGadget::SetShrinkWrap, TGadgetWindow::GadgetChangedSizeGadgetFromPointFORMAT="LINESPECIFIC"TGadget* GadgetFromPoint(TPoint& point);REMAP='BodyNoLead'Returns the gadget at the given window coordinates.GadgetReleaseCaptureFORMAT="LINESPECIFIC"void GadgetReleaseCapture(TGadget& gadget);REMAP='BodyNoLead'Releases the capture so that other windows can receive mouse messages.See alsoREMAP='BodyNoLead'TGadgetWindow::GadgetSetCaptureGadgetSetCaptureFORMAT="LINESPECIFIC"bool GadgetSetCapture(TGadget& gadget);REMAP='BodyNoLead'ROLE='italic'GadgetSetCapture reserves all mouse messages for the gadget window until the capture is released. Although gadgets are always notified if a left button-down event occurs within the rectangle, the derived gadget class must call ROLE='italic'GadgetSetCapture if you want the gadget to be notified when a mouse drag and a mouse button-up event occurs.See alsoREMAP='BodyNoLead'TGadgetWindow::GadgetReleaseCaptureGadgetWithIdFORMAT="LINESPECIFIC"TGadget* GadgetWithId(int id) const;REMAP='BodyNoLead'Returns a pointer to the gadget associated with the given ID (ROLE='italic'id).GetDirectionFORMAT="LINESPECIFIC"TTileDirection GetDirection( ) const;REMAP='BodyNoLead'Gets the horizontal or vertical orientation of the gadgets.See alsoREMAP='BodyNoLead'TGadgetWindow::SetDirectionGetFontFORMAT="LINESPECIFIC"TFont& GetFont( );REMAP='BodyNoLead'Returns the font (which is ROLE='italic'SansROLE='italic' Serif by default).See alsoREMAP='BodyNoLead'TGadgetWindowFont::TGadgetWindowFontGetFontHeightFORMAT="LINESPECIFIC"uint GetFontHeight( ) const;REMAP='BodyNoLead'Gets the height of the window's font.GetHintModeFORMAT="LINESPECIFIC"THintMode GetHintMode( );REMAP='BodyNoLead'Returns the hint mode.IdleActionFORMAT="LINESPECIFIC"void IdleAction( );REMAP='BodyNoLead'While no messages are waiting to be processed, ROLE='italic'IdleAction is called and iterates through the gadgets, invoking their ROLE='italic'CommandEnable member function.See alsoREMAP='BodyNoLead'TGadget::CommandEnableInsertFORMAT="LINESPECIFIC"virtual void Insert(TGadget& gadget, TPlacement = After, TGadget *sibling = 0);REMAP='BodyNoLead'Inserts a gadget before or after a sibling gadget (ROLE='italic'TPlacement). If ROLE='italic'sibling is 0, then the new gadget is inserted at either the beginning or the end of the gadget list. If this window has already been created, ROLE='italic'LayoutSession needs to be called after inserting gadgets.See alsoREMAP='BodyNoLead'TGadgetWindow::LayoutSession, TGadgetWindow::RemoveLayoutSessionFORMAT="LINESPECIFIC"virtual void LayoutSession( );REMAP='BodyNoLead'ROLE='italic'LayoutSession is typically called when a change occurs in the size of the margins or gadgets or when gadgets are added or deleted. ROLE='italic'LayoutSession calls ROLE='italic'TileGadgets to tile the gadgets in the specified direction and ROLE='italic'Invalidate to mark the area as invalid (needs repainting).See alsoREMAP='BodyNoLead'TGadgetWindow::Insert, TGadgetWindow::Remove, TWindow::InvalidateNextGadgetFORMAT="LINESPECIFIC"TGadget* NextGadget(TGadget& gadget) const;REMAP='BodyNoLead'Returns the next gadget after ROLE='italic'gadget or 0 if none exists.RemoveFORMAT="LINESPECIFIC"virtual TGadget* Remove(TGadget& gadget);REMAP='BodyNoLead'Removes a gadget from the gadget window. The gadget is returned but not destroyed. ROLE='italic'Remove returns 0 if the gadget is not in the window.REMAP='Body'If this window has already been created, the calling application must call ROLE='italic'LayoutSession after any gadgets have been removed.See alsoREMAP='BodyNoLead'TGadgetWindow::Insert, TGadgetWindow::LayoutSessionSetDirectionFORMAT="LINESPECIFIC"virtual void SetDirection(TTileDirection direction);REMAP='BodyNoLead'Sets the horizontal or vertical orientation of the gadgets. If the gadget window is already created, ROLE='italic'SetDirection readjusts the dimensions of the gadget window to fit around the gadgets.REMAP='Body'The setting of the direction parameter is also related to the setting of the second parameter (ROLE='italic'Tlocation) in ROLE='italic'TDecoratedFrame's ROLE='italic'Insert function,. which specifies where the decoration is added in relation to the frame window's client window. If the second parameter inROLE='italic' TDecoratedFrame::Insert is set to top or bottom, the direction parameter in ROLE='italic'SetDirection must be horizontal. If the second parameter in ROLE='italic'TDecoratedFrame::Insert is set to left or right, the direction parameter in ROLE='italic'SetDirection must be vertical. See alsoREMAP='BodyNoLead'TGadgetWindow::GetDirectionSetHintCommandFORMAT="LINESPECIFIC"void SetHintCommand(int id);REMAP='BodyNoLead'Simulates menu selection messages so that ObjectWindows command processing can display command hints for the given command ROLE='italic'id (CM_xxxx).See alsoREMAP='BodyNoLead'CM_xxxx edit constants, CM_xxxx edit file constantsSetHintModeFORMAT="LINESPECIFIC"void SetHintMode(THintMode hintMode);REMAP='BodyNoLead'Sets the mode of the hint text. Defaults to ROLE='italic'PressHints (displays hint text when a button is pressed).See alsoREMAP='BodyNoLead'THintMode enumSetMarginsFORMAT="LINESPECIFIC"void SetMargins(TMargins& margins);REMAP='BodyNoLead'Sets or changes the margins for the gadget window and calls ROLE='italic'LayoutSession.See alsoREMAP='BodyNoLead'TGadgetWindow::MarginsSetShrinkWrapFORMAT="LINESPECIFIC"void SetShrinkWrap(bool shrinkWrapWidth, bool shrinkWrapHeight);REMAP='BodyNoLead'Sets the width and height of the data members. By default, if the tile direction is horizontal, ROLE='italic'ShrinkWrapWidth is false and ROLE='italic'ShrinkWrapHeight is ROLE='bold'true. Also by default, if the direction is vertical, ROLE='italic'ShrinkWrapWidth is true and ROLE='italic'ShrinkWrapHeight is ROLE='bold'false.Protected data membersAtMouseFORMAT="LINESPECIFIC"TGadget* AtMouse;REMAP='BodyNoLead'The last gadget at the mouse position.BkgndBrushFORMAT="LINESPECIFIC"TBrush* BkgndBrush;REMAP='BodyNoLead'The color of the background brush.CaptureFORMAT="LINESPECIFIC"TGadget* Capture;REMAP='BodyNoLead'Points to the gadget that currently has the mouse capture; otherwise, if no gadget has the mouse capture, ROLE='italic'Capture is 0.See alsoREMAP='BodyNoLead'TGadgetWindow::GadgetSetCaptureDirectionFORMAT="LINESPECIFIC"TTileDirection GetDirection( ) const;REMAP='BodyNoLead'Gets the horizontal or vertical orientation of the gadgets.See alsoREMAP='BodyNoLead'TGadgetWindow::SetDirectionDirtyLayoutFORMAT="LINESPECIFIC"bool DirtyLayout;REMAP='BodyNoLead'Indicates the layout has changed and gadgets need to be re-tiled. Using ROLE='italic'DirtyLayout avoids redundant tiling when gadget windows are created.See alsoREMAP='BodyNoLead'TGadgetWindow::LayoutSessionFontFORMAT="LINESPECIFIC"TFont* Font;REMAP='BodyNoLead'Points to the font used to calculate layout units.See alsoREMAP='BodyNoLead'TGadgetWindow::GetFontFontHeightFORMAT="LINESPECIFIC"uint GetFontHeight( ) const;REMAP='BodyNoLead'Gets the height of the window's font.GadgetsFORMAT="LINESPECIFIC"TGadget* Gadgets;REMAP='BodyNoLead'Points to the first gadget in the gadget list.HintModeFORMAT="LINESPECIFIC"THintMode HintMode;REMAP='BodyNoLead'Holds the hint text mode.See alsoREMAP='BodyNoLead'THintMode enumMarginsFORMAT="LINESPECIFIC"TMargins Margins;REMAP='BodyNoLead'Holds the margin values for the gadget window.See alsoREMAP='BodyNoLead'TGadgetWindow::SetMarginsNumGadgetsFORMAT="LINESPECIFIC"uint NumGadgets;REMAP='BodyNoLead'The number of gadgets in the window.ShrinkWrapHeightFORMAT="LINESPECIFIC"bool ShrinkWrapHeight;REMAP='BodyNoLead'If ROLE='italic'ShrinkWrapHeight is true, the window will shrink its width to fit the tallest gadget for horizontally tiled gadgets.See alsoREMAP='BodyNoLead'TGadgetWindow::SetShrinkWrapShrinkWrapWidthFORMAT="LINESPECIFIC"bool ShrinkWrapWidth;REMAP='BodyNoLead'If ROLE='italic'ShrinkWrapWidth is true, the window will shrink its width to fit the widest gadget for vertically tiled gadgets.See alsoREMAP='BodyNoLead'TGadgetWindow::SetShrinkWrapWideAsPossibleFORMAT="LINESPECIFIC"uint WideAsPossible;REMAP='BodyNoLead'The number of gadgets that are as wide as possible.Protected member functionsCreateFORMAT="LINESPECIFIC"bool Create( );REMAP='BodyNoLead'Overrides ROLE='italic'TWindow member function and chooses the initial size of the gadget if shrink-wrapping was requested.See alsoREMAP='BodyNoLead'TGadgetWindow::SetShrinkWrapEvLButtonDownFORMAT="LINESPECIFIC"void EvLButtonDown(uint modKeys, TPoint& point);REMAP='BodyNoLead'Responds to a left button-down mouse message by forwarding the event to the gadget positioned under the mouse.EvLButtonUpFORMAT="LINESPECIFIC"void EvLButtonUp(uint modKeys, TPoint& point);REMAP='BodyNoLead'Responds to a left button-up mouse message by forwarding the event to the gadget that has the capture.EvMouseMoveFORMAT="LINESPECIFIC"void EvMouseMove(uint modKeys, TPoint& point);REMAP='BodyNoLead'If mouse events are captured, ROLE='italic'EvMouseMove responds to a mouse move message by forwarding the event to the gadget that has the capture.EvSizeFORMAT="LINESPECIFIC"void EvSize(uint sizeType, TSize& size);REMAP='BodyNoLead'Calls ROLE='italic'TWindow::EvSize to perform any default processing. If ROLE='italic'DirtyLayoutROLE='bold' true and ROLE='italic'WideAsPossible is greater than 0, ROLE='italic'EvSize sets ROLE='italic'DirtyLayout to ROLE='bold'true and calls ROLE='italic'TileGadgets to readjust the size and ROLE='italic'Invalidate to mark the area for redrawing.EvSysColorChangeFORMAT="LINESPECIFIC"void EvSysColorChange( );REMAP='BodyNoLead'ROLE='italic'EvSysColorChange, which is called when any system colors have changed, forwards the event to all gadgets.GetDesiredSizeFORMAT="LINESPECIFIC"virtual void GetDesiredSize(TSize& size);REMAP='BodyNoLead'If shrink-wrapping was requested, ROLE='italic'GetDesiredSize returns the size needed to accommodate the borders and the margins of the widest and highest gadget; otherwise, it returns the width and height in the window's ROLE='italic'Attr structure.REMAP='Body'If you want to leave extra room for a specific look (for example, a separator line between gadgets, a raised line, and so on), you can override this function. However, if you override ROLE='italic'GetDesiredSize, you will probably also need to override ROLE='italic'GetInnerRect to calculate your custom inner rectangle.See alsoREMAP='BodyNoLead'TGadgetWindow::GetInnerRectGetInnerRectFORMAT="LINESPECIFIC"virtual void GetInnerRect(TRect& rect);REMAP='BodyNoLead'ROLE='italic'GetInnerRect computes the rectangle inside of the borders and margins of the gadget.REMAP='Body'If you want to leave extra room for a specific look (for example, a separator line between gadgets, a raised line, and so on), you can override this function. If you override ROLE='italic'GetInnerRect, you will probably also need to override ROLE='italic'GetDesiredSize to calculate your custom total size.See alsoREMAP='BodyNoLead'TGadgetWindow::GetDesiredSizeGetMarginsFORMAT="LINESPECIFIC"void GetMargins(TMargins& margins, int& left, int& right, int& top, int& bottom);REMAP='BodyNoLead'Returns the left, right, top, and bottom margins in pixels.LayoutUnitsToPixelsFORMAT="LINESPECIFIC"int LayoutUnitsToPixels(int units);REMAP='BodyNoLead'Converts layout units to pixels. A layout unit is determined by dividing the window font height by eight.See alsoREMAP='BodyNoLead'TGadgetWindow::LayoutSessionPaintFORMAT="LINESPECIFIC"void Paint(TDC& dc, bool erase, TRect& rect);REMAP='BodyNoLead'Puts the font into the device context and calls ROLE='italic'PaintGadgets.See alsoREMAP='BodyNoLead'TGadgetWindow::PaintGadgetsPaintGadgetsFORMAT="LINESPECIFIC"virtual void PaintGadgets(TDC& dc, bool erase, TRect& rect);REMAP='BodyNoLead'Called by ROLE='italic'Paint to repaint all of the gadgets, ROLE='italic'PaintGadgets iterates through the list of gadgets, determines the gadget's area, and repaints each gadget.REMAP='Body'You can override this function to implement a specific look (for example, separator line, raised, and so on).PositionGadgetFORMAT="LINESPECIFIC"virtual void PositionGadget(TGadget* previous, TGadget* next, TPoint& point);REMAP='BodyNoLead'ROLE='italic'PositionGadget is called to allow spacing adjustments to be made before each gadget is positioned.See alsoREMAP='BodyNoLead'TGadgetWindow::TileGadgetsTileGadgetsFORMAT="LINESPECIFIC"virtual void TileGadgets( );REMAP='BodyNoLead'Tiles the gadgets in the direction requested (horizontal or vertical).REMAP='Body'Calls ROLE='italic'PositionGadget to give derived classes an opportunity to adjust the spacing between gadgets in their windows.See alsoREMAP='BodyNoLead'TGadgetWindow::PositionGadgetResponse table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='126*'COLNAME='C2' COLWIDTH='84*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_LBUTTONDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvLButtonDownCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_LBUTTONUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvLButtonUpCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MOUSEMOVECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvMouseMoveCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvSizeCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SYSCOLORCHANGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvSysColorChangeTGauge classMOREINFO="NONE"gauge.hREMAP='BodyNoLead'A streamable class derived from ROLE='italic'TControl, ROLE='italic'TGauge defines the basic behavior of gauge controls. Gauges are display-only horizontal or vertical controls that provide duration or analog information about a particular process. A typical use of a gauge occurs in installation programs where a control provides a graphical display indicating the percentage of files copied. In general, horizontal gauges with a broken (dashed-line) bar are used to display short-duration, process information whereas horizontal gauges with a solid bar are used to illustrate long-duration, process information. Usually, vertical gauges are preferred for displaying analog information.Public constructorConstructorFORMAT="LINESPECIFIC"TGauge(TWindow* parent, const char far* title, int id, int X, int Y, int W, int H, bool isHorizontal = true, int margin = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TGauge object with borders that are determined by using the value of SM_CXBORDER. Sets ROLE='italic'IsHorizontal to ROLE='italic'isHorizontal. Sets border thickness and spacing between dashed borders (LEDs) to 0. Sets the range of possible values from 0 to 100.Public member functionsGetRangeFORMAT="LINESPECIFIC"void GetRange(int& min, int& max) const;REMAP='BodyNoLead'Gets the minimum and maximum values for the gauge.GetValueFORMAT="LINESPECIFIC"int GetValue( ) const;REMAP='BodyNoLead'Gets the current value of the gauge.SetColorFORMAT="LINESPECIFIC"void SetColor(TColor color);REMAP='BodyNoLead'Sets the ROLE='italic'BarColor data member to the value specified in color.SetLedFORMAT="LINESPECIFIC"void SetLed(int spacing, int thick = 90);REMAP='BodyNoLead'Sets the ROLE='italic'LedSpacing and ROLE='italic'LedThick data members to the values ROLE='italic'spacing and ROLE='italic'thick.SetRangeFORMAT="LINESPECIFIC"void SetRange(int min, int max);REMAP='BodyNoLead'Sets the ROLE='italic'Min and ROLE='italic'Max data members to ROLE='italic'min and ROLE='italic'max values returned by the constructor. If ROLE='italic'Max is less than or equal to ROLE='italic'Min, ROLE='italic'SetRange resets ROLE='italic'Max to ROLE='italic'Min plus 1.SetValueFORMAT="LINESPECIFIC"void SetValue(int value);REMAP='BodyNoLead'Restricts the value so that it is within the minimum and maximum values established for the gauge. If the current value has changed, ROLE='italic'SetValue marks the old position for repainting. Then, it sets the data member ROLE='italic'Value to the new value.Protected data membersBarColorFORMAT="LINESPECIFIC"TColor BarColor;REMAP='BodyNoLead'Holds the bar or LED color, which defaults to blue.IsHorizontalFORMAT="LINESPECIFIC"int IsHorizontal;REMAP='BodyNoLead'Set to the ROLE='italic'ishorizontal argument of the constructor. ROLE='italic'IsHorizontal is ROLE='bold'true if the gauge is horizontal and ROLE='bold'false if it is vertical.LedSpacingFORMAT="LINESPECIFIC"int LedSpacing;REMAP='BodyNoLead'Holds the integer value (in gauge units) of the spacing between the broken bars of the gauge. Note that ROLE='italic'TGauge does not paint the title while using LED spacing.LedThickFORMAT="LINESPECIFIC"int LedThick;REMAP='BodyNoLead'Holds the thickness of the broken bar.MarginFORMAT="LINESPECIFIC"int Margin;REMAP='BodyNoLead'Contains the border width and height of the gauge.MaxFORMAT="LINESPECIFIC"int Max;REMAP='BodyNoLead'Holds the maximum value (in gauge units) displayed on the gauge.MinFORMAT="LINESPECIFIC"int Min;REMAP='BodyNoLead'Holds the minimum value (in gauge units) displayed on the gauge.ValueFORMAT="LINESPECIFIC"int Value;REMAP='BodyNoLead'Holds the current value of the gauge.Protected member functionsEvEraseBkgndFORMAT="LINESPECIFIC"bool EvEraseBkgnd(HDC);REMAP='BodyNoLead'Overrides ROLE='italic'TWindow'sROLE='italic' EvEraseBkgnd function and erases the background of the gauge. Whenever the background is repainted, ROLE='italic'EvEraseBkgnd is called to avoid flickering.PaintFORMAT="LINESPECIFIC"void Paint(TDC& dc, bool erase, TRect& rect);REMAP='BodyNoLead'Overrides ROLE='italic'TWindow's Paint function and paints the area and border of the gauge. Paints the given rectangle on the given device context. Uses the values in ROLE='italic'LedSpacing and ROLE='italic'IsHorizontal to paint draw a horizontal or vertical gauge with solid or broken bars.See alsoREMAP='BodyNoLead'TGauge::LedSpacing, TGauge::IsHorizontal, TDC, TRectPaintBorderFORMAT="LINESPECIFIC"virtual void PaintBorder(TDC& dc);REMAP='BodyNoLead'Paints the gauge border using the specified device context. Depending on whether the border style is raised, embossed, or recessed, ROLE='italic'PaintBorder paints the specified boundary. You can override this function if you want to implement a border style that isn't supported by ObjectWindows' gauges.Response table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='108*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_ERASEBKGNDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvEraseBkgndTGdiObject classMOREINFO="NONE"gdiobjec.hREMAP='BodyNoLead'ROLE='italic'GdiObject is the root, pseudo-abstract base class for ObjectWindows' GDI (Graphics Device Interface) wrappers. The ROLE='italic'TGdiOject-based classes let you work with a GDI handle and construct a C++ object with an aliased handle. Some GDI objects are also based on ROLE='italic'TGdiObject for handle management. Generally, the ROLE='italic'TGdiObject-based class hierarchy handles all GDI objects apart from the DC (Device Context) objects handled by the ROLE='italic'TDC-based tree.REMAP='Body'The five DC selectable classes (ROLE='italic'TPen, ROLE='italic'TBrush, TFont, ROLE='italic'TPalette, and ROLE='italic'TBitmap), and the ROLE='italic'TIcon, ROLE='italic'TCursor, ROLE='italic'TDib, and ROLE='italic'TRegion classes, are all derived directly from ROLE='italic'TGdiObject.REMAP='Body'ROLE='italic'TGdiObject maintains the GDI handle and a ROLE='italic'ShouldDelete flag that determines if and when the handle and object should be destroyed. Protected constructors are provided for use by the derived classes: one for borrowed handles, and one for normal use.REMAP='Body'An optional orphan control mechanism is provided. By default, orphan control is active, but you can turn it off by defining the NO_GDI_ORPHAN_CONTROL identifier:FORMAT="LINESPECIFIC"#define NO_GDI_ORPHAN_CONTROLREMAP='Body'With orphan control active, the following static member functions are available:REMAP='Body'ROLE='italic'RefAdd, RefCount, RefDec, RefFind, RefInc, and ROLE='italic'RefRemove.REMAP='Body'These maintain object reference counts and allow safe orphan recovery and deletion. Macros, such as OBJ_REF_ADD, let you deactivate or activate your orphan control code by simply defining or undefining NO_GDI_ORPHAN_CONTROL. When NO_GDI_ORPHAN_CONTROL is undefined, for example, ROLE='italic'OBJ_REF_ADD(ROLE='italic'handle, ROLE='italic'type) expands to ROLE='italic'TGdiObject::ROLE='italic'RefAdd((ROLE='italic'handle),(type)), but when NO_GDI_ORPHAN_CONTROL is defined, ROLE='italic'the macro expands to ROLE='italic'handle.Public destructorDestructorFORMAT="LINESPECIFIC"~TGdiObject( );REMAP='BodyNoLead'If ROLE='italic'ShouldDelete is ROLE='bold'false no action is taken. Otherwise with ROLE='italic'ShouldDeleteROLE='bold' true, the action of the destructor depends on whether orphan control is active or not. If orphan control is inactive (that is, if NO_ORPHAN_CONTROL is defined) ~ROLE='italic'TGdiObject deletes the GDI object. If orphan control is active (the default) the object is deleted only if the reference count is 0.Type definitionsTAutoDeleteFORMAT="LINESPECIFIC"enum TAutoDelete{NoAutoDelete, AutoDelete};REMAP='BodyNoLead'This enum, which is defined in the private base class, gdibase.h, enumerates the flag values for GDI Handle constructors. This flag is used to control GDI object deletion in the destructors.TTypeFORMAT="LINESPECIFIC"enum TType {None, Pen, Brush, Font, Palette, Bitmap, TextBrush};REMAP='BodyNoLead'This enumeration is used to store the object type in the ROLE='bold'structROLE='italic' TObjInfo. This internal structure is used to track object reference counts during debugging sessions.See alsoREMAP='BodyNoLead'TGdiObject::RefCountPublic member functionsGetObjectFORMAT="LINESPECIFIC"int GetObject(int count, void far* object) const;REMAP='BodyNoLead'Obtains information about this GDI object and places it in the ROLE='italic'object buffer. If the call succeeds and ROLE='italic'object is not 0, ROLE='italic'GetObject returns the number of bytes copied to the object buffer. If the call succeeds and ROLE='italic'object is 0, ROLE='italic'GetObject returns the number of bytes needed in the object buffer for the type of object being queried. Depending on what type of GDI object is derived, this function retrieves a ROLE='italic'LOGPEN, LOGBRUSH, LOGFONT, or ROLE='italic'BITMAP structure through ROLE='italic'object.See alsoREMAP='BodyNoLead'TPen::GetObject, BITMAP struct, LOGBRUSH struct, LOGFONT struct, LOGPEN structRefAddFORMAT="LINESPECIFIC"static void RefAdd(HANDLE handle, TType type);REMAP='BodyNoLead'Available only if orphan control is active (that is, if NO_GDI_ORPHAN_CONTROL is undefined). ROLE='italic'RefAdd adds a reference entry for the object with the given ROLE='italic'handle and ROLE='italic'type to the ROLE='italic'ObjInfoBag table and sets the reference count to 1. If the table already has a matching entry, no action is taken.See alsoREMAP='BodyNoLead'TGdiObject::RefCount, macro OBJ_REF_ADDRefCountFORMAT="LINESPECIFIC"static int RefCount(HANDLE handle);REMAP='BodyNoLead'Available only if orphan control is active, that is, if NO_GDI_ORPHAN_CONTROL is undefined. ROLE='italic'RefCount returns this object's current reference count or -1 if the object is not in the ROLE='italic'ObjInfoBag table.See alsoREMAP='BodyNoLead'macro OBJ_REF_COUNTRefDecFORMAT="LINESPECIFIC"static void RefDec(HANDLE handle);FORMAT="LINESPECIFIC"static void RefDec(HANDLE handle, bool wantDelete);REMAP='BodyNoLead'Available only if orphan control is active, that is, if NO_GDI_ORPHAN_CONTROL is undefined. ROLE='italic'RefDec decrements this object's reference count by 1 and deletes the object when the reference count reaches zero. A warning is issued if the deletion was supposed to happen but didn't. Likewise, a warning is issued if the deletion wasn't supposed to happen but did. The deleted object is also detached from the ROLE='italic'ObjInfoBag table.REMAP='Body'The second version of ROLE='italic'RefDec is available only if the _ _TRACE identifier is defined. You can vary the normal deletion strategy by setting ROLE='italic'wantDelete to ROLE='bold'true or ROLE='bold'false.See alsoREMAP='BodyNoLead'TGdiObject::RefCount, macro OBJ_REF_DECRefFindFORMAT="LINESPECIFIC"static TObjInfo* RefFind(HANDLE object);REMAP='BodyNoLead'Available only if orphan control is active (that is, if NO_GDI_ORPHAN the given object is undefined). If found, the object's type and reference count are returned in the specified ROLE='italic'TObjInfo object. ROLE='italic'RefFind returns 0 if no match is found.See alsoREMAP='BodyNoLead'TGdiObject::RefCountRefIncFORMAT="LINESPECIFIC"static void RefInc(HANDLE handle);REMAP='BodyNoLead'Available only if orphan control is active (that is, if NO_GDI_ORPHAN_CONTROL is undefined). ROLE='italic'RefInc increments by 1 the reference count of the object associated with ROLE='italic'handle.See alsoREMAP='BodyNoLead'TGdiObject::RefCount, macro OBJ_REF_INCRefRemoveFORMAT="LINESPECIFIC"static void RefRemove(HANDLE handle);REMAP='BodyNoLead'Available only if orphan control is active (that is, if NO_GDI_ORPHAN_CONTROL is undefined). ROLE='italic'RefRemove removes the reference entry to the object with the given ROLE='italic'handle from the ROLE='italic'ObjInfoBag table. If the given handle is not found, no action is taken.See alsoREMAP='BodyNoLead'TGdiObject::RefCount, macro OBJ_REF_REMOVEoperator HGDIOBJFORMAT="LINESPECIFIC"operator HGDIOBJ( ) constREMAP='BodyNoLead'Type casting operator that converts this GDI object handle to type HGDIOBJ.Protected data membersHandleFORMAT="LINESPECIFIC"HANDLE Handle;REMAP='BodyNoLead'The GDI handle of this object.See alsoREMAP='BodyNoLead'TGdiObject protected constructorsShouldDeleteFORMAT="LINESPECIFIC"bool ShouldDelete;REMAP='BodyNoLead'Set true if the Destructor needs to delete this object's GDI handle.See alsoREMAP='BodyNoLead'TGdiObject Protected ConstructorsProtected member functionsCheckValidFORMAT="LINESPECIFIC"void CheckValid( uint resId=IDS_GDIFAILURE)FORMAT="LINESPECIFIC"static void CheckValid( HANDLE handle, uint resId=IDS_GDIFAILURE)REMAP='Body'Both versions of ROLE='italic'CheckValid check for a valid GDI object handle. If one is not found a GDI exception is thrown for the given resource id.Protected constructorsConstructorsFORMAT="LINESPECIFIC"TGdiObject( );REMAP='BodyNoLead'This default constructor sets ROLE='italic'Handle to 0 and ROLE='italic'ShouldDelete to ROLE='bold'true. This constructor is intended for use by derived classes that must set the ROLE='italic'Handle member.FORMAT="LINESPECIFIC"TGdiObject(HANDLE handle, TAutoDelete autoDelete = NoAutoDelete);REMAP='BodyNoLead'This constructor is intended for use by derived classes only. The ROLE='italic'Handle data member is "borrowed" from an existing handle given by the argument ROLE='italic'handle The ROLE='italic'ShouldDelete data member defaults to false ensuring that the borrowed handle will not be deleted when the object is destroyed.See alsoREMAP='BodyNoLead'TGdiObject::enumTAutoDelete, TGdiObject::Handle, TGdiObject::RefCount, TGdiObject::ShouldDeleteMacrosOBJ_REF_ADDFORMAT="LINESPECIFIC"OBJ_REF_ADD(handle, type)REMAP='BodyNoLead'If orphan control is active (the default), ROLE='italic'OBJ_REF_ADD(ROLE='italic'handle, ROLE='italic'type) is defined as ROLE='italic'TGdiObject::ROLE='italic'RefAdd((ROLE='italic'handle), (ROLE='italic'type)). The latter adds to the ROLE='italic'ObjInfoBag table a reference entry for the object with the given ROLE='italic'handle and ROLE='italic'type, and sets its count to 1. If orphan control is inactive, OBJ_REF_ADD(handle) is defined as handle. This macro lets you write orphan control code that can be easily deactivated with the single statement #define NO_GDI_ORPHAN_CONTROL.See alsoREMAP='BodyNoLead'TGdiObject::RefAddOBJ_REF_COUNTFORMAT="LINESPECIFIC"OBJ_REF_COUNT(handle)REMAP='BodyNoLead'If orphan control is active (the default), ROLE='italic'OBJ_REF_COUNT(ROLE='italic'handle) is defined as ROLE='italic'TGdiObject::ROLE='italic'RefCount((ROLE='italic'handle)). The latter returns the reference count of the object with the given handle, or -1 if no such object exists. If orphan control is inactive, ROLE='italic'OBJ_REF_COUNT(ROLE='italic'handle) is defined as -1. This macro lets you write orphan control code that can be easily deactivated with the single statement #define NO_GDI_ORPHAN_CONTROL.See alsoREMAP='BodyNoLead'TGdiObject::RefCountOBJ_REF_DECFORMAT="LINESPECIFIC"OBJ_REF_DEC(handle, wantDelete)REMAP='BodyNoLead'If orphan control is active (the default), ROLE='italic'OBJ_REF_DEC(handle, wantDelete) is defined as either ROLE='italic'TGdiObject::RefDec((handle)) or ROLE='italic'TGdiObject::RefDec((handle),ROLE='italic' (wantDelete)). The latter format occurs only if _ _TRACE is defined. ROLE='italic'RefDec(handle) decrements the reference count of the object associated with ROLE='italic'handle and optionally deletes orphans or warns you of their existence. If orphan control is inactive, ROLE='italic'OBJ_REF_DEC(handle) is defined as ROLE='italic'handle. This macro lets you write orphan control code that can be easily deactivated with the single statement #define NO_GDI_ORPHAN_CONTROL.See alsoREMAP='BodyNoLead'TGdiObject::RefDecOBJ_REF_INCFORMAT="LINESPECIFIC"OBJ_REF_INC(handle)REMAP='BodyNoLead'If orphan control is active (the default), ROLE='italic'OBJ_REF_INC(handle) is defined as ROLE='italic'TGdiObject::RefInc((handle)). The latter increments the reference count of the object associated with ROLE='italic'handle. If orphan control is inactive, ROLE='italic'OBJ_REF_DEC(handle) is defined as ROLE='italic'handle. This macro lets you write orphan control code that can be easily deactivated with the single statement #define NO_GDI_ORPHAN_CONTROL.See alsoREMAP='BodyNoLead'TGdiObject::RefIncOBJ_REF_REMOVEFORMAT="LINESPECIFIC"OBJ_REF_REMOVE(handle)REMAP='BodyNoLead'If orphan control is active (the default), ROLE='italic'OBJ_REF_REMOVE(handle) is defined as ROLE='italic'TGdiObject::RefRemove((handle)). The latter removes from the ROLE='italic'ObjInfoBag table the reference entry for the object associated with ROLE='italic'handle. If orphan control is inactive, ROLE='italic'OBJ_REF_REMOVE(handle) is defined as ROLE='italic'handle. This macro lets you write orphan control code that can be easily deactivated with the single statement #define NO_GDI_ORPHAN_CONTROL.See alsoREMAP='BodyNoLead'TGdiObject::RefRemoveTGdiObject::TXGdi classMOREINFO="NONE"gdibase.hREMAP='BodyNoLead'Describes an exception resulting from GDI failures such as creating too many ROLE='italic'TWindow DCs. This exception occurs, for example, if a DC driver can't be located or if a DIB file can't be read.REMAP='Body'The following code from the PAINT.CPP sample program on your distribution disk throws a ROLE='italic'TXGdi exception if a new DIB can't be created.FORMAT="LINESPECIFIC"void TCanvas::NewDib(int width, int height, int nColors)
{
TDib* dib;
try {
dib = new TDib(width, height, nColors);
}
catch (TGdiObject::TXGdi& x) {
MessageBox("Could Not Create DIB", GetApplication( )->Name,
MB_OK);
return;
}Public constructorConstructorFORMAT="LINESPECIFIC"TXGdi(uint resId = IDS_GDIFAILURE, HANDLE = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TXGdi object with a default IDS_GDIFAILURE message.Public member functionsCloneFORMAT="LINESPECIFIC"TXOwl* Clone( );REMAP='BodyNoLead'Makes a copy of the exception object. ROLE='italic'Clone must be implemented in any class derived from ROLE='italic'TXOwl.MsgFORMAT="LINESPECIFIC"static string Msg(uint resId, HANDLE);REMAP='BodyNoLead'Converts the resource ID to a string and returns the string message.ThrowFORMAT="LINESPECIFIC"void Throw( );REMAP='BodyNoLead'Throws the exception object. ROLE='italic'Throw must be implemented in any class derived from ROLE='italic'TXOwl.TGroupBox classMOREINFO="NONE"groupbox.hREMAP='BodyNoLead'An instance of a ROLE='italic'TGroupBox is an interface object that represents a corresponding group box element. Generally, ROLE='italic'TGroupBox objects are not used in dialog boxes or dialog windows (ROLE='italic'TDialog), but are used when you want to create a group box in a window.REMAP='Body'Although group boxes don't serve an active purpose onscreen, they visually unify a group of selection boxes such as check boxes and radio buttons or other controls. Behind the scenes, however, they can take an important role in handling state changes for their group of controls (normally check boxes or radio buttons).REMAP='Body'For example, you might want to respond to a selection change in any one of a group of radio buttons in a similar manner. You can do this by deriving a class from ROLE='italic'TGroupBox that redefines the member function ROLE='italic'SelectionChanged.REMAP='Body'Alternatively, you could respond to selection changes in the group of radio buttons by defining a response for the group box's parent. To do so, define a child-ID-based response member function using the ID of the group box. The group box will automatically send a child-ID-based message to its parent whenever the radio button selection state changes. This class is streamable.Public data membersNotifyParentFORMAT="LINESPECIFIC"bool NotifyParent;REMAP='BodyNoLead'Flag that indicates whether parent is to be notified when the state of the group box's selection boxes has changed. ROLE='italic'NotifyParent is ROLE='bold'true by default.Public constructorsPublic constructorsFORMAT="LINESPECIFIC"TGroupBox(TWindow* parent, int Id, const char far *text, int x, int y, int w, int h, TModule* module = 0);REMAP='BodyNoLead'Constructs a group box object with the supplied parent window (ROLE='italic'Parent), control ID (ROLE='italic'Id), associated text (ROLE='italic'text), position (ROLE='italic'x, y) relative to the origin of the parent window's client area, width (ROLE='italic'w), and height (ROLE='italic'h). Invokes the ROLE='italic'TControl constructor with similar parameters, then modifies ROLE='italic'Attr.Style, adding BS_GROUPBOX and removing WS_TABSTOP. ROLE='italic'NotifyParent is set to true; by default, the group box's parent is notified when a selection change occurs in any of the group box's controls.FORMAT="LINESPECIFIC"TGroupBox(TWindow* parent int resourceId, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TGroupBox object to be associated with a group box control of a ROLE='italic'TDialog. Invokes the ROLE='italic'TControl constructor with identical parameters ROLE='italic'resourceID must correspond to a group box resource that you define.See alsoREMAP='BodyNoLead'TControl::TControl, TWindow::DisableTransferPublic member functionsGetClassNameFORMAT="LINESPECIFIC"char far* GetClassName( );REMAP='BodyNoLead'ROLE='italic'GetClassName returns the name of ROLE='italic'TGroupBox's Windows registration class, "BUTTON." If BWCC is enabled, ROLE='italic'GetClassName returns BUTTON_CLASS.SelectionChangedFORMAT="LINESPECIFIC"virtual void SelectionChanged(int controlId);REMAP='BodyNoLead'If ROLE='italic'NotifyParent is ROLE='bold'true, ROLE='italic'SelectionChanged notifies the parent window of the group box that one of its selections has changed by sending it a child-ID-based message. This member function can be redefined to allow the group box to handle selection changes in its group of controls.THatch8x8Brush classMOREINFO="NONE"gdiobjec.hREMAP='BodyNoLead'Derived from ROLE='italic'TBrush, ROLE='italic'THatch8x8Brush defines a small, 8x8, monochrome, configurable hatch brush (a brush that fills an area with a pattern created from hatch marks). Because the hatch brush is a logical brush created from device independent bitmaps (DIBs), it can be passed to any DC, which then renders the brush into the appropriate form for the particular device.REMAP='Body'Although the default brush's color is a white foreground and a black background, you can vary the colors of the hatched brush. The colors can be any one of the ROLE='italic'TColor object encapsulated colors, namely the standard RGB values.REMAP='Body'ROLE='italic'THatch8x8Brush contains static arrays that define common hatched brush patterns. The hatched brush patterns you can select includeREMAP='Body'Forward Diagonal / / / / /REMAP='Body' // // // // //REMAP='Body'Backward Diagonal \ \ \ \ \ \REMAP='Body' \\ \\ \\ \\ \\REMAP='Body'You can use ROLE='italic'THatch8x8Brush to design a variety of hatched brush border patterns around a simple rectangle or an OLE container. You can also use ROLE='italic'THatch8x8Brush in conjunction with ROLE='italic'TUIHandle.Public data membersHatch11F1[8]FORMAT="LINESPECIFIC"const static uint8 Hatch11F1[8];REMAP='BodyNoLead'The static array, ROLE='italic'Hatch11F1[8] holds the logical hatched brush pattern of 1 pixel on and 1pixel off in monochrome, offset 1 per row.Hatch13B1[8]FORMAT="LINESPECIFIC"const static uint8 Hatch13B1[8];REMAP='BodyNoLead'The static array,ROLE='italic' Hatch13B1[8] holds a hatched brush pattern of 1 pixel on and 3 pixels off in backward diagonal hatch marks, offset 1 per row.Hatch13F1[8]FORMAT="LINESPECIFIC"const static uint8 Hatch13F1[8];REMAP='BodyNoLead'The static array, ROLE='italic'Hatch13F1[8] holds a hatched brush pattern of 1 pixel on and 3 pixels off in forward diagonal hatch marks, offset 1 per row.Hatch22B1[8]FORMAT="LINESPECIFIC"const static uint8 Hatch22B1[8];REMAP='BodyNoLead'The static array, ROLE='italic'Hatch22B1[8] holds a hatched brush pattern of 2 pixels on and 2 off in backward diagonal hatch marks, offset 1 per row.Hatch22F1[8]FORMAT="LINESPECIFIC"const static uint8 Hatch22F1[8];REMAP='BodyNoLead'The static array, ROLE='italic'Hatch22F1[8] holds a hatched brush pattern of 2 pixels on and 2 off in forward diagonal hatch marks, offset 1 per row.Public constructors ConstructorFORMAT="LINESPECIFIC"THatch8x8Brush(const uint8 hatch[], TColor fgColor=TColor::White, TColor bgColor=TColor::Black);REMAP='BodyNoLead'Constructs a ROLE='italic'THatchBrush object with the specified hatched pattern and colors. Although the hatched brush is, by default, white on a black background, you can control the displayed colors by passing different colors in the constructor where ROLE='italic'fgColor represents the foreground color and ROLE='italic'bgColor represents the background color of a ROLE='italic'TColor object type. Colors can be specified in either palette (a reference to a corresponding color palette entry in the currently realized palette) or RGB mode (an actual red, green, or blue color value).Public member functionsReconstructFORMAT="LINESPECIFIC"void Reconstruct(const uint8 hatch[], TColor fgColor, TColor bgColor);REMAP='BodyNoLead'Reconstructs the hatched brush with a new pattern or new set of colors.See also REMAP='Body'TBrush, TColor, TUIHandleTIC classMOREINFO="NONE"dc.hREMAP='BodyNoLead'Derived from ROLE='italic'TDC, TIC is a DC class that provides a constructor for creating a DC object from explicit driver, device, and port names.Public constructorConstructorFORMAT="LINESPECIFIC"TIC(const char far* driver, const char far* device, const char far* output, const DEVMODE far* initData=0);REMAP='BodyNoLead'Creates a DC object with the given driver, device, and port names and initialization values.See alsoREMAP='BodyNoLead'TDC::GetDeviceCaps, DEVMODE structTIcon classMOREINFO="NONE"gdiobjec.hREMAP='BodyNoLead'ROLE='italic'TIcon, derived from ROLE='italic'TGdiObject, represents the GDI object icon class. ROLE='italic'TIcon constructors can create icons from a resource or from explicit information. Because icons are not real GDI objects, the ROLE='italic'TIcon destructor overloads the base destructor, ~ROLE='italic'TGdiObject.Public constructors and destructorConstructors FORMAT="LINESPECIFIC"TIcon(HICON handle, TAutoDelete autoDelete = NoAutoDelete);REMAP='BodyNoLead'Creates a ROLE='italic'TIcon object and sets the ROLE='italic'Handle data member to the given borrowed handle. The ROLE='italic'ShouldDelete data member defaults to ROLE='bold'false, ensuring that the borrowed handle will not be deleted when the C++ object is destroyed.FORMAT="LINESPECIFIC"TIcon(HINSTANCE instance, const TIcon& icon);REMAP='BodyNoLead'Creates a copy of the given ROLE='italic'icon object.FORMAT="LINESPECIFIC"TIcon(HINSTANCE instance, TResID resID);REMAP='BodyNoLead'Creates an icon object from the given resource.FORMAT="LINESPECIFIC"TIcon(HINSTANCE instance, const char far* filename, int index);REMAP='BodyNoLead'Creates an icon object from the given resource file.FORMAT="LINESPECIFIC"TIcon(HINSTANCE instance, const TSize& size, int planes, int bitsPixel, const void far* andBits, const void far* xorBits);REMAP='BodyNoLead'Creates an icon object with the given values.FORMAT="LINESPECIFIC"TIcon(const void* resBits, uint32 resSize);REMAP='BodyNoLead'Creates an icon object of the given size from the bits found in the ROLE='italic'resBits buffer.FORMAT="LINESPECIFIC"TIcon(const ICONINFO* iconInfo);REMAP='BodyNoLead'Creates an icon object with the given ROLE='italic'ICONINFO information.DestructorFORMAT="LINESPECIFIC"~TIcon( );REMAP='BodyNoLead'Destroys the icon and frees any memory that the icon occupied.See alsoREMAP='BodyNoLead'~TGdiObject, TGdiObject::Handle, TGdiObject::ShouldDelete,, TResID, TSize, ICONINFO structurePublic member functionsGetIconInfoFORMAT="LINESPECIFIC" bool GetIconInfo(ICONINFO* iconInfo) const;REMAP='BodyNoLead'Retrieves information about this icon and copies it into the given ROLE='italic'ICONINFO structure. Returns ROLE='bold'true if the call is successful; otherwise returns ROLE='bold'false.See alsoREMAP='BodyNoLead'ICONINFO structureoperator HICON( )FORMAT="LINESPECIFIC" operator HICON( ) const;REMAP='BodyNoLead'Typecasting operator that converts this icon's ROLE='italic'Handle to type ROLE='italic'HICON (the data type representing the handle to an icon resource).TInputDialog classMOREINFO="NONE"inputdia.hREMAP='BodyNoLead'ROLE='italic'TInputDialog provides a generic dialog box to retrieve text input by a user. When the input dialog box is constructed, its title, prompt, and default input text are specified. ROLE='italic'TInputDialog is a streamable class.Public data membersbufferFORMAT="LINESPECIFIC"char far* buffer;REMAP='BodyNoLead'Pointer to the buffer that returns the text retrieved from the user. When passed to the constructor of the input dialog box, contains the default text to be initially displayed in the edit control.BufferSizeFORMAT="LINESPECIFIC"int BufferSize;REMAP='BodyNoLead'Contains the size of the buffer that returns user input.promptFORMAT="LINESPECIFIC"char far* prompt;REMAP='BodyNoLead'Points to the prompt for the input dialog box.Public constructorConstructorFORMAT="LINESPECIFIC"TInputDialog(TWindow* parent, const char far *title, const char far *prompt, char far* buffer, int buffersize, TModule* module = 0, TValidator* valid = 0)REMAP='BodyNoLead'Invokes ROLE='italic'TDialog's constructor, passing it ROLE='italic'parent, the resource identifier and ROLE='italic'module. Sets the caption of the dialog box to ROLE='italic'title and the prompt static control to ROLE='italic'prompt. Sets the ROLE='italic'Buffer and ROLE='italic'BufferSize data members to ROLE='italic'buffer and ROLE='italic'bufferSize.See alsoREMAP='BodyNoLead'TDialog::TDialogPublic member functionTransferDataFORMAT="LINESPECIFIC"void TransferData(TTransferDirection direction);REMAP='BodyNoLead'Transfers the data of the input dialog box. If direction is ROLE='italic'tdSetData, sets the text of the static and edit controls of the dialog box to the text in ROLE='italic'prompt and ROLE='italic'buffer. If ROLE='italic'direction is ROLE='italic'tdGetData, fills the ROLE='italic'buffer with the current text of the ROLE='italic'Editor.Protected member functionSetupWindowFORMAT="LINESPECIFIC"virtual void SetupWindow( );REMAP='BodyNoLead'In setting up the window, ROLE='italic'SetupWindow calls ROLE='italic'TDialog::SetupWindow, then limits the number of characters the user can enter to ROLE='italic'bufferSize -1.TInStream classMOREINFO="NONE"docview.hREMAP='BodyNoLead'Derived from ROLE='italic'TStream and ROLE='italic'istream, TInStream is a base class used for defining input streams for documents.Public constructorConstructorFORMAT="LINESPECIFIC"TInStream(TDocument& doc, const char far* name, int mode);REMAP='BodyNoLead'Constructs a ROLE='italic'TInStream object. ROLE='italic'doc refers to the document object, ROLE='italic'name is the user-defined name of the stream, and ROLE='italic'mode is the mode of opening the stream.See alsoREMAP='BodyNoLead'TOutStream, ofXXXX document open enum, shxxxx document sharing enumTLayoutConstraint structMOREINFO="NONE"layoutco.hREMAP='BodyNoLead'ROLE='italic'TLayoutConstraint is a structure that defines a relationship (a layout constraint) between an edge or size of one window and an edge or size of one of the window's siblings or its parent. If a parent-child relationship is established between windows, the dimensions of the child windows are dependent on the parent window. A window can have one of its sizes depend on the size of the opposite dimension. For example, the width can be twice the height. ROLE='italic'TLayoutMetrics lists the relationships you can have among size and edge constraints.REMAP='Body'The sample file LAYOUT.CPP shows you an example of how to set up layout constraints.Public data membersMyEdgeFORMAT="LINESPECIFIC"uint MyEdge;REMAP='BodyNoLead'ROLE='italic'MyEdge contains the name of the edge or size constraint (ROLE='italic'lmTop, lmBottom, lmLeft, lmRight, lmCenter, lmWidth, or ROLE='italic'lmHeight) for your window.See alsoREMAP='BodyNoLead'TWidthHeight enumOtherEdgeFORMAT="LINESPECIFIC"uint OtherEdge;REMAP='BodyNoLead'ROLE='italic'OtherEdge contains the name of the edge or size constraint (ROLE='italic'lmTop, lmBottom, lmLeft, lmRight, lmCenter, lmWidth, or ROLE='italic'lmHeight) for the other window.See alsoREMAP='BodyNoLead'TWidthHeight enumRelationshipFORMAT="LINESPECIFIC"TRelationship Relationship;REMAP='BodyNoLead'ROLE='italic'Relationship specifies the type of relationship that exists between the two windows (that is, ROLE='italic'lmRightOf, lmLeftOf, lmAbove, lmBelow, lmSameAs, or ROLE='italic'lmPercentOf). A value of ROLE='italic'lmAbsolute actually indicates that no relationship exists.See alsoREMAP='BodyNoLead'TRelationship enumRelWinFORMAT="LINESPECIFIC"TWindow *RelWin;REMAP='BodyNoLead'ROLE='italic'RelWin is a pointer to the sibling windows or ROLE='italic'lmParent if the child is a proportion of the parent's dimensions. ROLE='italic'RelWin points to the window itself (ROLE='bold'this) if a child window's dimension is a proportion of one of its other dimensions (for example, its height is a proportion of its width).See alsoREMAP='BodyNoLead'TRelationship enumUnitsFORMAT="LINESPECIFIC"TMeasurementUnits Units;REMAP='BodyNoLead'ROLE='italic'Units enumerates the units of measurement (either pixels or layout units) used to measure the height and width of the windows. Unlike pixels, layout units are based on system font size and will be consistent in their perceived size even if the screen resolution changes.See alsoREMAP='BodyNoLead'TMeasurementUnits enumunionFORMAT="LINESPECIFIC"union { FORMAT="LINESPECIFIC" int Margin;FORMAT="LINESPECIFIC" int Value;FORMAT="LINESPECIFIC" int Percent;FORMAT="LINESPECIFIC"};REMAP='BodyNoLead'This union is included for the convenience of naming the layout constraints. Margin is used for the ROLE='italic'lmAbove, lmLeftOf, lmLeftOf, or ROLE='italic'lmRightOf enumerated values in ROLE='italic'TRelationship. Value is used for the ROLE='italic'lmSameAs or ROLE='italic'lmAbsolute enumerated values in ROLE='italic'TRelationship. Percent is used for the ROLE='italic'lmPercentOf enumerated value in ROLE='italic'TRelationship.See alsoREMAP='BodyNoLead'TMeasurementUnits enumTLayoutMetrics classMOREINFO="NONE"layoutwi.hREMAP='BodyNoLead'ROLE='italic'TLayoutMetrics contains the four layout constraints used to define the layout metrics for a window. This table lists the constraints you can use for the ROLE='italic'X, Y, Height, and ROLE='italic'Width fields.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='47*'COLNAME='C2' COLWIDTH='130*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'FieldCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'ConstraintsVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'XCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'lmLeft, lmCenter, lmRightCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'YCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'lmTop, lmCenter, lmBottomCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HeightCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'lmCenter, lmRight, lmWidthCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WidthCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'lmCenter, lmBottom, lmHeightREMAP='Body'If the metrics for the child window are relative to the parent window, the relation window pointer (ROLE='italic'lmParent) needs to be ROLE='italic'lmParent (not the actual parent window pointer). For example,FORMAT="LINESPECIFIC"TWindow* child = new TWindow(this, "");
TLayoutMetrics metrics;
metrics.X.Set(lmCenter, lmSameAs, lm( )t, lmCenter);
metrics.Y.Set(lmCenter, lmSameAs, lm( )t, lmCenter);
SetChildLayoutMetrics(*child, metrics);REMAP='Body'The parent window pointer (ROLE='italic'this) should not be used as the relation window pointer of the child window.Public data membersHeightFORMAT="LINESPECIFIC"TEdgeOrWidthConstraint Height;REMAP='BodyNoLead'Contains the height size constraint, center edge, or bottom edge constraint of the window.WidthFORMAT="LINESPECIFIC"TEdgeOrWidthConstraint Width;REMAP='BodyNoLead'Contains the width size constraint, center edge, or right edge (ROLE='italic'lmRight) constraint of the window.X, YFORMAT="LINESPECIFIC"TEdgeConstraint X, Y;REMAP='BodyNoLead'ROLE='italic'X contains the ROLE='italic'X (left, center, right) edge constraint of the window. ROLE='italic'Y contains the ROLE='italic'Y (top, center, bottom) edge constraint of the window.Public constructorConstructorFORMAT="LINESPECIFIC"TLayoutMetrics( );REMAP='BodyNoLead'Creates a ROLE='italic'TLayoutMetrics object and initializes the object by setting the units for the child and parent window to the specified layout units and the relationship between the two windows to what is defined in ROLE='italic'ImAsIs (of ROLE='italic'TRelationship). Sets the following default values:FORMAT="LINESPECIFIC"X.RelWin = 0;
X.MyEdge = lmLeft;
X.Relationship = lmAsIs;
X.Units = lmLayoutUnits;
X.Value = 0;
Y.RelWin = 0;
Y.MyEdge = lmTop;
Y.Relationship = lmAsIs;
Y.Units = lmLayoutUnits;
Y.Value = 0;
Width.RelWin = 0;
Width.MyEdge = lmWidth;
Width.Relationship = lmAsIs;
Width.Units = lmLayoutUnits;
Width.Value = 0;
Height.RelWin = 0;
Height.MyEdge = lmHeight;
Height.Relationship = lmAsIs;
Height.Units = lmLayoutUnits;
Height.Value = 0;REMAP='Body'The following program creates two child windows and a frame into which you can add layout constraints.FORMAT="LINESPECIFIC"#include <owl\owl.h>
#include <owl\framewin.h>
#include <owl\applicat.h>
#include <owl\layoutwi.h>
#include <owl\decorate.h>
#include <owl\decmdifr.h>
#include <owl\layoutco.h>
#pragma hdrstop
// Create a derived class. //
class TMyDecoratedFrame : public TDecoratedFrame {
public:
TMyDecoratedFrame(TWindow* parent, const char far* title, TWindow& clientWnd, TWindow* MyChildWindow);
void SetupWindow( );
{
TDecoratedFrame::SetupWindow( );
MyChildWindow->ShowWindow(SW_NORMAL);
MyChildWindow->BringWindowToTop( );
}
};
// Setup a frame window //
TMyDecoratedFrame::TMyDecoratedFrame(TWindow * parent, const char far * title, TWindow& clientWnd)
: TDecoratedFrame(parent, title, clientWnd),
TFrameWindow(parent, title, &clientWnd),
TWindow(parent, title)
{
// Create a new TMyChildWindow. //
MyChildWindow = new TWindow(this, "");
MyChildWindow->Attr.Style |= WS_BORDER |WS_VISIBLE |WS_CHILD;
MyChildwindow->SetBkgndColor(RGB(0,100,0));
// Establish metrics for the child window. //
TLayoutMetrics layoutMetrics;
layoutMetrics.X.Absolute(lmLeft, 10);
layoutMetrics.Y.Absolute(lmTop, 10);
layoutMetrics.Width.Absolute( 80 );
layoutMetrics.Height.Absolute( 80 );
}
SetChildLayoutMetrics(*MyChildWindow, layoutMetrics);
class TMyApp : public TApplication {
public:
virtual void InitMainWindow( )
{
TWindow* client = new TWindow(0, "title");
MainWindow = new TMyDecoratedFrame(0, "Layout Window Ex", *client);
}
};
int OwlMain(int, char**) {
return TMyApp.Run( );
}TLayoutWindow classMOREINFO="NONE"layoutwi.hREMAP='BodyNoLead'Derived from ROLE='italic'TWindow, ROLE='italic'TLayoutWindow provides functionality for defining the layout metrics for a window. By using layout constraints, you can create windows whose position and size are proportional to another window's dimensions. In other words, the one window constrains the size of the other window. Toolbars and status bars are examples of constrained windows. See ROLE='italic'TLayoutConstraint for a definition of the layout constraints and ROLE='italic'TLayoutMetrics for a description of the metrics you can use to set up layout constraints. REMAP='Body'The following examples show how to set up various metrics using edge constraints. For purposes of illustration, these examples use a parent-child relationship, but you can also use a child-to-child (sibling) relationship. Keep in mind that, as usual, if you move the parent's origin (the left and top edges), the child will move with the parent window.ExamplesExample 1REMAP='Body'REMAP='BodyNoLead'To create growable windows, set the top and left edges of the child window's boundaries in a fixed relationship to the top and left edges of the parent's window. In this example, if you expand the bottom and right edges of the parent, the child's bottom and right edges grow the same amount. Both the X and Y constraints are 10 units from the parent window's edges. Both the Width and Height constraints are 40 layout units from the parent window's edges. Specifically, Width (ROLE='italic'lmWidth) is 40 units to the left of the parent's right edge (ROLE='italic'lmLeftOf = ROLE='italic'lmSameAs + offset or ROLE='italic'sameas - 40).FILEREF='examp_1.gif'REMAP='Body'Use the following layout constraints:FORMAT="LINESPECIFIC"layoutmetrics.X.Set(lmLeft, lmRightOf, lm( )t, lmLeft, 10);
layoutmetrics.Y.Set(lmTop, lmBelow, lm( )t, lmTop, 10);
layoutmetrics.Width.Set(lmRight, lmLeftOf, lmParent, lmRight, 40);
layoutmetrics.Height.Set(lmBottom, lmAbove, lmParent, lmBottom, 40);
SetChildLayoutMetrics(*MyChildWindow, layoutMetrics);Example 2REMAP='Body'REMAP='BodyNoLead'To create fixed-size and fixed-position windows, set the child's right edge a fixed distance from parent's left edge and the child's bottom edge a fixed distance from the parent's top edge. In this example, both the X and Y edge constraints are set to 10 and both the Width and Height edge constraints are set to 100.FILEREF='examp_2.gif'REMAP='Body'Use the following layout constraints:FORMAT="LINESPECIFIC"layoutmetrics.X.Set(lmLeft, lmRightOf, lmParent, lmLeft, 10);
layoutmetrics.Y.Set(lmTop, lmBelow, lmParent, lmTop, 10);
layoutmetrics.Width.Absolute(100);
layoutmetrics.Height.Absolute(100);
SetChildLayoutMetrics(*MyChildWindow, layoutMetrics);Example 3REMAP='Body'REMAP='BodyNoLead'To create a fixed-size window that remains a constant distance from the parent's right corner, set the child's top and bottom edges a fixed distance (ROLE='italic'lmLayout unit or pixels) from the parent window's bottom. Also, set the child's left and right edges a fixed distance from the parent's right edge. In this example, both the Width and the Height edge constraints are set to 10 and the X and Y edge constraints are set to 100. In this case, the child window, which stays the same size, moves with the lower right corner of the parent.FILEREF='examp_3.gif'REMAP='Body'Use the following layout constraints:FORMAT="LINESPECIFIC"layoutmetrics.X.Set(lmRight, lmLeftOf, lmParent, lmRight, 10);
layoutmetrics.Y.Set(lmBottom, lmAbove, lmParent, lmBottom, 10);
layoutmetrics.Width.Absolute(100);
layoutmetrics.Height.Absolute(100);
SetChildLayoutMetrics(*MyChildWindow, layoutMetrics);Example 4REMAP='Body'REMAP='BodyNoLead'To create a window in which the child's edges are a percentage of the parent's window, set the child's edges a percentage of the distance from the parent's edges. Specifically, the child's top and bottom edges are a percentage of the parent's bottom edge. The child's left and right edges are a percentage of the parent's right edge.REMAP='Body'If you resize the parent window, the child window will change size and origin (that is, the top and left edges will also change).FILEREF='examp_4.gif'REMAP='Body'Use the following layout constraints:FORMAT="LINESPECIFIC"layoutmetrics.X.Set(lmLeft, lmPercentOf, lmParent, lmRight, 33);
layoutmetrics.Y.Set(lmTop, lmPercentOf, lmParent, lmBottom, 33);
layoutmetrics.Width.Set(lmRight, lmPercentOf, lm( )t, lmRight, 66);
layoutmetrics.Height.Set(lmBottom, lmPercentOf, lm( )t, lmBottom, 66);
SetChildLayoutMetrics(*MyChildWindow, layoutMetrics);Public constructor and destructorConstructor FORMAT="LINESPECIFIC"TLayoutWindow(TWindow* parent, const char far *title = 0, TModule* module = 0);REMAP='BodyNoLead'Creates a ROLE='italic'TLayoutWindow object with specified parent, window caption, and library ID.DestructorFORMAT="LINESPECIFIC"~TLayoutWindow( );REMAP='BodyNoLead'Deletes variables and frees the child metrics and constraints.Public member functionsGetChildLayoutMetricsFORMAT="LINESPECIFIC"bool GetChildLayoutMetrics(TWindow &child, TLayoutMetrics &metrics);REMAP='BodyNoLead'Gets the layout metrics of the child window.LayoutFORMAT="LINESPECIFIC"void Layout( );REMAP='BodyNoLead'Causes the window to resize and position its children according to the specified metrics. Call ROLE='italic'Layout to implement changes that occur in the layout metrics.RemoveChildLayoutMetricsFORMAT="LINESPECIFIC"bool RemoveChildLayoutMetrics(TWindow &child);REMAP='BodyNoLead'Removes the layout metrics for a child window.SetChildLayoutMetricsFORMAT="LINESPECIFIC"void SetChildLayoutMetrics(TWindow &child, TLayoutMetrics &metrics);REMAP='BodyNoLead'Sets the metrics for the window and removes any existing ones. Set the metrics as shown:FORMAT="LINESPECIFIC"layoutMetrics->X.Absolute(lmLeft, 10);
layoutMetrics->Y.Absolute(lmTop, 10);
layoutMetrics->Width.Set(lmWidth, lmRightOf, GetClientWindow( ), lmWidth, -40);
layoutMetrics->Height.Set(lmHeight, lmRightOf, GetClientWindow( ), lmHeight, -40);REMAP='Body'Then call ROLE='italic'SetChildLayoutMetrics to associate them with the position of the child window:FORMAT="LINESPECIFIC"SetChildLayoutMetrics(* MyChildWindow, * layoutMetrics);Protected data memberClientSizeFORMAT="LINESPECIFIC"TSize ClientSize;REMAP='BodyNoLead'Contains the size of the client area.Protected member functionsEvSizeFORMAT="LINESPECIFIC"void EvSize(uint sizeType, TSize& size);REMAP='BodyNoLead'Responds to a change in window size by calling ROLE='italic'Layout to resize the window.Response table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='98*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvSizeTListBox classMOREINFO="NONE"listbox.hREMAP='BodyNoLead'A ROLE='italic'TListBox is an interface object that represents a corresponding list box element. A ROLE='italic'TListBox must be used to create a list box control in a parent ROLE='italic'TWindow. A ROLE='italic'TListBox can be used to facilitate communication between your application and the list box controls of a ROLE='italic'TDialog. ROLE='italic'TListBox's member functions also serve instances of its derived class, ROLE='italic'TComboBox. From within MDI child windows, you can access a ROLE='italic'TListBox object by using ROLE='italic'TFrameWindow::GetClientWindow. ROLE='italic'TListBox is a streamable class.Public constructorsConstructorsFORMAT="LINESPECIFIC"TListBox(TWindow* parent, int Id, int x, int y, int w, int h, TModule* module = 0);REMAP='BodyNoLead'Constructs a list box object with the supplied parent window (ROLE='italic'parent) library ID (ROLE='italic'module), position (ROLE='italic'x, y) relative to the origin of the parent window's client area, width (ROLE='italic'w), and height (ROLE='italic'h). Invokes a ROLE='italic'TControl constructor. Adds LBS_STANDARD to the default styles for the list box to provide it withMARK='bullet'REMAP='Bullet1'A border (WS_BORDER)REMAP='Bullet1'A vertical scroll bar (WS_VSCROLL)REMAP='Bullet1'Automatic alphabetic sorting of list items (LBS_SORT)REMAP='Bullet1'Parent window notification upon selection (LBS_NOTIFY)REMAP='Body'The ROLE='italic'TListBox member functions that are described as being for single-selection list boxes are inherited by ROLE='italic'TComboBox and can also be used by combo boxes. Also, these member functions return -1 for multiple-selection list boxes.FORMAT="LINESPECIFIC"TListBox(TWindow* parent, int resourceId, TModule* module = 0)REMAP='BodyNoLead'Constructs a ROLE='italic'TListBox object to be associated with a list box control of a ROLE='italic'TDialog. Invokes the ROLE='italic'TControl constructor with similar parameters. The ROLE='italic'module parameter must correspond to a list box resource that you define.See alsoREMAP='BodyNoLead'GetSelIndex, GetSelString, SetSelIndex, SetSelString, TControl::TControlPublic member functionsAddStringFORMAT="LINESPECIFIC"virtual int AddString(const char far* str);REMAP='BodyNoLead'Adds ROLE='italic'string to the list box, returning its position in the list (0 is the first position). Returns a negative value if an error occurs. The list items are automatically sorted unless the style LBS_SORT is not used for list box creation.See alsoREMAP='BodyNoLead'TListBox::DeleteString, TListBox::InsertStringClearListFORMAT="LINESPECIFIC"virtual void ClearList( );REMAP='BodyNoLead'Clears all items in the list.DeleteStringFORMAT="LINESPECIFIC"virtual int DeleteString(int index);REMAP='BodyNoLead'Deletes the item in the list at the position (starting at 0) supplied in ROLE='italic'index. ROLE='italic'DeleteString returns the number of remaining list items, or a negative value if an error occurs.See alsoREMAP='BodyNoLead'TListBox::AddString, TListBox::InsertStringDirectoryListFORMAT="LINESPECIFIC"virtual int DirectoryList(uint attrs, const char far* fileSpec)REMAP='BodyNoLead'Adds a list of file names to a list box.FindExactStringFORMAT="LINESPECIFIC"int FindExactString(const char far* str, int searchIndex) const;REMAP='BodyNoLead'Starting at the line number passed in ROLE='italic'searchIndex, searches the list box for an exact match with the string ROLE='italic'str. If a match is not found after the last string has been compared, the search continues from the beginning of the list until a match has been found or until the list has been completely traversed. Searches from the beginning of the list when -1 is supplied as ROLE='italic'searchIndex. Returns the index of the first string found if successful, a negative value if an error occurs.See alsoREMAP='BodyNoLead'TListBox::AddString, TListBox::DeleteStringFindStringFORMAT="LINESPECIFIC"virtual int FindString(const char far* str, int Index) const;REMAP='BodyNoLead'Searches the list box as described under ROLE='italic'FindExactString, but looks for the first entry that begins with ROLE='italic'str.See alsoREMAP='BodyNoLead'TListBox::AddString, TListBox::DeleteString, TListBox::InsertStringGetCaretIndexFORMAT="LINESPECIFIC"int GetCaretIndex( ) const;REMAP='BodyNoLead'Returns the index of the currently focused list-box item. For single-selection list boxes, the return value is the index of the selected item, if one is selected.See alsoREMAP='BodyNoLead'TListBox::SetCaretIndexGetCountFORMAT="LINESPECIFIC"virtual int GetCount( ) const;REMAP='BodyNoLead'Returns the number of items in the list box, or a negative value if an error occurs.GetHorizontalExtentFORMAT="LINESPECIFIC"int GetHorizontalExtent( ) const;REMAP='BodyNoLead'Returns the number of pixels by which the list box can be scrolled horizontally.See alsoREMAP='BodyNoLead'TListBox::SetHorizontalExtentGetItemDataFORMAT="LINESPECIFIC"virtual uint32 GetItemData(int index) const;REMAP='BodyNoLead'Returns the 32-bit value of the list box item set by ROLE='italic'SetItemData.See alsoREMAP='BodyNoLead'TListBox::SetItemDataGetItemHeightFORMAT="LINESPECIFIC"virtual int GetItemHeight(int index) const;REMAP='BodyNoLead'Returns the height in pixels of the specified list box items.See alsoREMAP='BodyNoLead'TListBox::SetItemHeightGetItemRectFORMAT="LINESPECIFIC"int GetItemRect(int index, TRect& rect) const;REMAP='BodyNoLead'Returns the dimensions of the rectangle that surrounds a list-box item currently displayed in the list-box window.GetSelFORMAT="LINESPECIFIC"bool GetSel(int index) const;REMAP='BodyNoLead'Returns the selection state of the list-box item at location ROLE='italic'index. Returns true if the list-box item is selected, false if not selected.See alsoREMAP='BodyNoLead'TListBox::SetSelGetSelCountFORMAT="LINESPECIFIC"int GetSelCount( ) const;REMAP='BodyNoLead'Returns the number of selected items in the single- or multiple-selection list box or combo box.GetSelIndexFORMAT="LINESPECIFIC"virtual int GetSelIndex( ) const;REMAP='BodyNoLead'For single-selection list boxes. Returns the nonnegative index (starting at 0) of the currently selected item, or a negative value if no item is selected.See alsoREMAP='BodyNoLead'TListBox::SetSelIndexGetSelIndexesFORMAT="LINESPECIFIC"int GetSelIndexes(int* indexes, int maxCount) const;REMAP='BodyNoLead'For multiple-selection list boxes. Fills the ROLE='italic'indexes array with the indexes of up to ROLE='italic'maxCount selected strings. Returns the number of items put in ROLE='italic'indexes (-1 for single-selection list boxes and combo boxes).See alsoREMAP='BodyNoLead'TListBox::SetSelIndexesGetSelStringFORMAT="LINESPECIFIC"int GetSelString(char far* str, int maxChars) const;REMAP='BodyNoLead'Retrieves the currently selected items, putting up to ROLE='italic'maxChars of them in ROLE='italic'Strings. Each entry in the ROLE='italic'Strings array should have space for ROLE='italic'maxChars characters and a terminating null. For single-selection list boxes, returns the string length, a negative value if an error occurs, or 1 if no string is selected. For multiple-selection list boxes, returns -1.See alsoREMAP='BodyNoLead'TListBox::SetSelStringGetSelStringsFORMAT="LINESPECIFIC"int GetSelStrings(char far** strs, int maxCount, int maxChars) const;REMAP='BodyNoLead'Retrieves the total number of selected items for a multiselection list and copies them into the buffer. ROLE='italic'str is an array of pointers to chars. Each of the pointers to the buffers is of ROLE='italic'maxChars. ROLE='italic'maxCount is the size of the array.See alsoREMAP='BodyNoLead'TListBox::SetSelStringsGetStringFORMAT="LINESPECIFIC"virtual int GetString(char far* str, int index) const;REMAP='BodyNoLead'Retrieves the item at the position (starting at 0) supplied in ROLE='italic'index and returns it in ROLE='italic'str. ROLE='italic'GetString returns the string length, or a negative value if an error occurs.GetStringLenFORMAT="LINESPECIFIC"virtual int GetStringLen(int Index) const;REMAP='BodyNoLead'Returns the string length (excluding the terminating NULL) of the item at the position index supplied in ROLE='italic'Index. Returns a negative value in the case of an error.GetTopIndexFORMAT="LINESPECIFIC"int GetTopIndex( ) const;REMAP='BodyNoLead'Returns the index of the first item displayed at the top of the list box.See alsoREMAP='BodyNoLead'TListBox::SetTopIndexInsertStringFORMAT="LINESPECIFIC"virtual int InsertString(const char far* str, int index);REMAP='BodyNoLead'Inserts ROLE='italic'str in the list box at the position supplied in ROLE='italic'index, and returns the item's actual position (starting at 0) in the list. A negative value is returned if an error occurs. The list is not resorted. If ROLE='italic'index is -1, the string is appended to the end of the list.See alsoREMAP='BodyNoLead'TListBox::AddString, TListBox::DeleteString, TListBox::FindStringSetCaretIndexFORMAT="LINESPECIFIC"int SetCaretIndex(int index, bool partScrollOk);REMAP='BodyNoLead'Sets the focus to the item specified at ROLE='italic'index. An item that is not visible is scrolled into view.See alsoREMAP='BodyNoLead'TListBox::GetCaretIndexSetColumnWidthFORMAT="LINESPECIFIC"void SetColumnWidth(int width);REMAP='BodyNoLead'Sets the width in pixels of the items in the list box.SetHorizontalExtentFORMAT="LINESPECIFIC"void SetHorizontalExtent(int horzExtent);REMAP='BodyNoLead'Sets the number of pixels by which the list box can be scrolled horizontally.See alsoREMAP='BodyNoLead'TListBox::GetHorizontalExtentSetItemDataFORMAT="LINESPECIFIC"virtual int SetItemData(int index, uint32 itemData);REMAP='BodyNoLead'Sets the 32-bit value of the list box item at the specified ROLE='italic'index position.See alsoREMAP='BodyNoLead'TListBox::GetItemDataSetItemHeightFORMAT="LINESPECIFIC"virtual int SetItemHeight(int index, int height);REMAP='BodyNoLead'Sets the height in pixels of the items in the list box.See alsoREMAP='BodyNoLead'TListBox::GetItemHeightSetItemRectFORMAT="LINESPECIFIC"int SetItemRect(int index, TRect& rect) const;REMAP='BodyNoLead'Sets the dimensions of the rectangle that surrounds a list-box item currently displayed in the list-box window.SetSelFORMAT="LINESPECIFIC"int SetSel(int index, bool select);REMAP='BodyNoLead'Selects an item at the position specified in ROLE='italic'index. For multiple-selection list boxes.See alsoREMAP='BodyNoLead'TListBox::GetSelSetSelIndexFORMAT="LINESPECIFIC"virtual int SetSelIndex(int index);REMAP='BodyNoLead'For single-selection list boxes. Forces the selection of the item at the position (starting at 0) supplied in ROLE='italic'index. If ROLE='italic'index is -1, the list box is cleared of any selection. ROLE='italic'SetSelIndex returns a negative number if an error occurs.SetSelIndexesFORMAT="LINESPECIFIC"int SetSelIndexes(int* indexes, int numSelections, bool shouldSet);REMAP='BodyNoLead'For multiple-selection list boxes. Selects/deselects the strings in the associated list box at the indexes specified in the ROLE='italic'Indexes array. If ROLE='italic'ShouldSet is true, the indexed strings are selected and highlighted; if ROLE='italic'ShouldSet is false the highlight is removed and they are no longer selected. Returns the number of strings successfully selected or deselected (-1 for single-selection list boxes and combo boxes). If ROLE='italic'NumSelections is less than 0, all strings are selected or deselected, and a negative value is returned on failure.SetSelItemRangeFORMAT="LINESPECIFIC"int SetSelItemRange(bool select, int first, int last);REMAP='BodyNoLead'Selects the range of items specified from ROLE='italic'first to ROLE='italic'last.SetSelStringFORMAT="LINESPECIFIC"int SetSelString(const char far* str, int searchIndex);REMAP='BodyNoLead'For single-selection list boxes. Forces the selection of the first item beginning with the text supplied in str that appears beyond the position (starting at 0) supplied in ROLE='italic'SearchIndex. If ROLE='italic'SearchIndex is -1, the entire list is searched, beginning with the first item. ROLE='italic'SetSelString returns the position of the newly selected item, or a negative value in the case of an error.SetSelStringsFORMAT="LINESPECIFIC"int SetSelStrings(const char far** prefixes, int numSelections, bool shouldSet);REMAP='BodyNoLead'For multiple-selection list boxes, selects the strings in the associated list box that begin with the prefixes specified in the ROLE='italic'prefixes array. For each string, the search begins at the beginning of the list and continues until a match is found or until the list has been completely traversed. If ROLE='italic'shouldSet is true, the matched strings are selected and highlighted; if ROLE='italic'shouldSet is false the highlight is removed from the matched strings and they are no longer selected. Returns the number of strings successfully selected or deselected (-1 for single-selection list boxes and combo boxes). If ROLE='italic'numSelections is less than 0, all strings are selected or deselected, and a negative value is returned on failure.SetTabStopsFORMAT="LINESPECIFIC"bool SetTabStops(int numTabs, int far* tabs);REMAP='BodyNoLead'Sets tab stops. ROLE='italic'numTabs is the number of tabstops. ROLE='italic'tabs is the array of integers representing the tab positions.SetTopIndexFORMAT="LINESPECIFIC"int SetTopIndex(int index);REMAP='BodyNoLead'Sets ROLE='italic'index to the first item displayed at the top of the list box.See alsoREMAP='BodyNoLead'TListBox::GetTopIndexTransferFORMAT="LINESPECIFIC"uint Transfer(void *buffer, TTransferDirection direction);REMAP='BodyNoLead'Transfers the items and selection(s) of the list box to or from a transfer buffer if ROLE='italic'tdSetData or ROLE='italic'tdGetData, respectively, is passed as the ROLE='italic'direction. ROLE='italic'buffer is expected to point to a pointer to a ROLE='italic'TListBoxData structure.REMAP='Body'ROLE='italic'Transfer, which overrides the ROLE='italic'TWindow virtual member function, returns the size of ROLE='italic'TListBoxData (the pointer, not the structure). To retrieve the size without transferring data, pass ROLE='italic'tdSizeData as the ROLE='italic'direction.REMAP='Body'You must use a pointer in your transfer buffer to these structures. You can't embed copies of the structures in your transfer buffer, and you can't use these structures as transfer buffers.See alsoREMAP='BodyNoLead'TListBoxData, TWindow::TransferProtected member functionGetClassNameFORMAT="LINESPECIFIC"char far* GetClassName( );REMAP='BodyNoLead'Returns the name of ROLE='italic'TListBox's registration class, "LISTBOX".TListBoxData structMOREINFO="NONE"listbox.hREMAP='BodyNoLead'Used to transfer the contents of a list box.Public data membersItemDatasFORMAT="LINESPECIFIC"TDwordArray* ItemDatas;REMAP='BodyNoLead'Contains all ROLE='bold'uint32 item data for each item in the list box.SelCountFORMAT="LINESPECIFIC"int SelCount;REMAP='BodyNoLead'Holds the number of selected items.SelIndicesFORMAT="LINESPECIFIC"TIntArray* SelIndices;REMAP='BodyNoLead'Contains the indexes of all the selected strings in a multiple-selection list box.SelStringsFORMAT="LINESPECIFIC"TStringArray* SelStrings;REMAP='BodyNoLead'Pointer to an array of the strings to select when data is transferred into the list box. When data is transferred out of the list box, ROLE='italic'SelStrings returns the current selection(s).StringsFORMAT="LINESPECIFIC"TStringArray* Strings;REMAP='BodyNoLead'Pointer to an array of strings to be transferred into a ROLE='italic'TListBox.Public constructor and destructorConstructor FORMAT="LINESPECIFIC"TListBoxData( );REMAP='BodyNoLead'Constructs ROLE='italic'Strings and ROLE='italic'SelStrings. Initializes ROLE='italic'SelCount to 0.DestructorFORMAT="LINESPECIFIC"~TListBoxData( );REMAP='BodyNoLead'Deletes the space allocated for ROLE='italic'Strings and ROLE='italic'SelStrings.Public member functionsAddStringFORMAT="LINESPECIFIC"void AddString(const char *str, bool isSelected = false);REMAP='BodyNoLead'Adds the specified string to ROLE='italic'Strings. If ROLE='italic'IsSelected is ROLE='bold'true, adds the string to ROLE='italic'SelStrings and increments ROLE='italic'SelCount.AddStringItemFORMAT="LINESPECIFIC"void AddStringItem(const char* str, uint32 itemData, bool isSelected = false));REMAP='BodyNoLead'Adds a string to the ROLE='italic'Strings array, optionally selects it, and adds item data to the ROLE='italic'ItemDatas array.ClearFORMAT="LINESPECIFIC"void Clear( );REMAP='BodyNoLead'Resets the list box by flushing the ROLE='italic'ItemDatas and ROLE='italic'Strings arrays and calling ROLE='italic'ResetSelections.See alsoREMAP='BodyNoLead'TListBoxData::Strings, TListBoxData::ItemDatas, TListBoxData::ResetSelectionsGetItemDatasFORMAT="LINESPECIFIC"TDwordArray& GetItemDatas( );REMAP='BodyNoLead'Returns a pointer to the ROLE='italic'ItemDatas array.See alsoREMAP='BodyNoLead'TListBoxData::ItemDatasGetSelIndicesFORMAT="LINESPECIFIC"TIntArray& GetSelIndices( );REMAP='BodyNoLead'Returns a pointer to the ROLE='italic'SelIndices array.See alsoREMAP='BodyNoLead'TListBoxData::SelIndicesGetSelStringFORMAT="LINESPECIFIC"void GetSelString(char far* buffer, int bufferSize, int index = 0) const;REMAP='BodyNoLead'Locates the string at the specified ROLE='italic'index in ROLE='italic'SelStrings and copies it into ROLE='italic'buffer. bufferSize includes the terminating NULL.GetSelStringLengthFORMAT="LINESPECIFIC"int GetSelStringLength(int index = 0) const;REMAP='BodyNoLead'Returns the length (excluding the terminating NULL) of the string at the specified ROLE='italic'index in ROLE='italic'SelStrings.GetStringsFORMAT="LINESPECIFIC"TStringArray& GetStrings( );REMAP='BodyNoLead'Returns a pointer to the ROLE='italic'Strings array.See alsoREMAP='BodyNoLead'TListBoxData::StringsResetSelectionsFORMAT="LINESPECIFIC"void ResetSelections( );REMAP='BodyNoLead'Removes all strings from ROLE='italic'SelStrings and sets ROLE='italic'SelCount to 0.SelectFORMAT="LINESPECIFIC"void Select(int index);REMAP='BodyNoLead'Selects the string at the given ROLE='italic'index.SelectStringFORMAT="LINESPECIFIC"void SelectString(const char far* str);REMAP='BodyNoLead'Adds ROLE='italic'str to ROLE='italic'SelStrings and increments ROLE='italic'SelCount.TListView classMOREINFO="NONE"listview.hREMAP='BodyNoLead'Derived from ROLE='italic'TListBox and ROLE='italic'TView, TListView provides views for list boxes. See ROLE='italic'TView for a description of view functions and ROLE='italic'TListBox for list box functions.Public constructor and destructorConstructor FORMAT="LINESPECIFIC"TListView(TDocument& doc, TWindow* parent = 0);REMAP='BodyNoLead'Creates a ROLE='italic'TListView object associated with the specified document and parent window. Sets ROLE='italic'Attr.AccelTable to IDA_LISTVIEW to identify the edit view. Sets the view style to WS_HSCROLL | LBS_NOINTEGRALHEIGHT.REMAP='Body'Sets ROLE='italic'TView::ViewMenu to the new ROLE='italic'TMenuDescr for this view.DestructorFORMAT="LINESPECIFIC"~TListView( );REMAP='BodyNoLead'After checking to see if there is an open view, this destructor destroys the ROLE='italic'TListView object.Public data memberDirtyFlagFORMAT="LINESPECIFIC"bool DirtyFlag;REMAP='BodyNoLead'Is nonzero if the data in the list view has been changed; otherwise, is 0.Public member functionsCanCloseFORMAT="LINESPECIFIC"bool CanClose( );REMAP='BodyNoLead'Checks to see if all child views can be closed before closing the current view. If any child returns 0, ROLE='italic'CanClose returns 0 and aborts the process. If all children return nonzero, it calls ROLE='italic'TDocManager::FlushDoc.See alsoREMAP='BodyNoLead'TDocManager::FlushDocCreateFORMAT="LINESPECIFIC"virtual bool Create( );REMAP='BodyNoLead'Overrides ROLE='italic'TWindow::Create and creates the view's window. Determines if the file is new or already has data. If there is data, calls ROLE='italic'LoadData to add the data to the view. If the view's window can't be created, ROLE='italic'Create throws a ROLE='italic'TXInvalidWindow exception.GetViewNameFORMAT="LINESPECIFIC"const char far* GetViewName( );REMAP='BodyNoLead'Overrides ROLE='italic'TView's virtual function and returns the descriptive name of the class (ROLE='italic'StaticName).See alsoREMAP='BodyNoLead'TView::GetViewNameGetWindowFORMAT="LINESPECIFIC"TWindow* GetWindow( );REMAP='BodyNoLead'Overrides ROLE='italic'TView's virtual function and returns the list view object as a ROLE='italic'TWindow.See alsoREMAP='BodyNoLead'TView::GetWindowSetDocTitleFORMAT="LINESPECIFIC"bool SetDocTitle(const char far* docname, int index);REMAP='BodyNoLead'Overrides ROLE='italic'TView's virtual function and stores the document title. This name is forwarded up the parent chain until a ROLE='italic'TFrameWindow object accepts the data and displays it in its caption.See alsoREMAP='BodyNoLead'TView::SetDocTitleStaticNameFORMAT="LINESPECIFIC"static const char far* StaticName( );REMAP='BodyNoLead'Overrides ROLE='italic'TView's function and returns a constant string, "ListView." This information is displayed in the user interface selection box.See alsoREMAP='BodyNoLead'TView::GetViewNameProtected data membersMaxWidthFORMAT="LINESPECIFIC"int MaxWidth;REMAP='BodyNoLead'Holds the maximum horizontal extent (the number of pixels by which the view can be scrolled horizontally).OriginFORMAT="LINESPECIFIC"long Origin;REMAP='BodyNoLead'Holds the file position at the beginning of the display.Protected member functionsCmEditAddFORMAT="LINESPECIFIC"void CmEditAdd( );REMAP='BodyNoLead'Automatically responds to CM_LISTADD message by getting the length of the input string and calling ROLE='italic'InsertString to insert the text string into the list view. Sets the data member ROLE='italic'DirtyFlag to true.CmEditClearFORMAT="LINESPECIFIC"void CmEditClear( );REMAP='BodyNoLead'Automatically responds to a menu selection with a menu ID of CM_EDITCLEAR by clearing the items in the list box using the functions in the ROLE='italic'TListBox.CmEditCopyFORMAT="LINESPECIFIC"void CmEditCopy( );REMAP='BodyNoLead'Automatically responds to a menu selection with a menu ID of CM_EDITCOPY and copies the selected text to the Clipboard.CmEditCutFORMAT="LINESPECIFIC"void CmEditCut( );REMAP='BodyNoLead'Automatically responds to a menu selection with a menu ID of CM_EDITCUT by calling ROLE='italic'CmEditCopy and ROLE='italic'CmEditDelete to delete a text string from the list view. Sets the data member ROLE='italic'DirtyFlag to true.CmEditDeleteFORMAT="LINESPECIFIC"void CmEditDelete( );REMAP='BodyNoLead'Automatically responds to a menu selection with a menu ID of CM_EDITDELETE and deletes the selected text.CmEditItemFORMAT="LINESPECIFIC"void CmEditItem( );REMAP='BodyNoLead'Automatically responds to a CM_LISTEDIT message by getting the input text and inserting into the list view. Sets the ROLE='italic'DirtyFlag to nonzero to indicate that the view has been changed and not saved.CmEditPasteFORMAT="LINESPECIFIC"void CmEditPaste( );REMAP='BodyNoLead'Automatically responds to a menu selection with a menu ID of CM_EDITPASTE by calling ROLE='italic'TListBox::Paste.CmEditUndoFORMAT="LINESPECIFIC"void CmEditUndo( );REMAP='BodyNoLead'Automatically responds to a menu selection with a menu ID of CM_EDITUNDO by inserting text into the list box using functions in ROLE='italic'TListBox.CmSelChangeFORMAT="LINESPECIFIC"void CmSelChange( );REMAP='BodyNoLead'Automatically responds to a LBN_SELCHANGE message (which indicates that the contents of the list view have changed) by calling ROLE='italic'DefaultProcessing.EvGetDlgCodeFORMAT="LINESPECIFIC"uint EvGetDlgCode(MSG far* msg);REMAP='BodyNoLead'Overrides ROLE='italic'TWindow's response to a WM_GETDLGCODE message (an input procedure associated with a control that isn't a check box) by calling ROLE='italic'DefaultProcessing. The msg parameter indicates the kind of message, for example a control or a command message, sent to the dialog box manager.REMAP='Body'ROLE='italic'EvGetDlgCode returns a code that indicates how the list box control message is to be treated.See alsoREMAP='BodyNoLead'TButton::EvGetDlgCode, TWindow::DefaultProcessing, DLGC_xxxx dialog control message constantsLoadDataFORMAT="LINESPECIFIC"bool LoadData(int top, int sel);REMAP='BodyNoLead'Reads the view from the stream and closes the file. Returns true if the view was successfully loaded.REMAP='Body'Throws an ROLE='italic'xmsg exception and displays the error message "TListView initial read error" if the file can't be read. Returns false if the view can't be loaded.SetExtentFORMAT="LINESPECIFIC"void SetExtent(LPSTR str);REMAP='BodyNoLead'Sets the maximum horizontal extent for the list view window.VnCommitFORMAT="LINESPECIFIC"bool VnCommit(bool force);REMAP='BodyNoLead'ROLE='italic'VnCommit commits changes made in the view to the document. If ROLE='italic'force is nonzero, all data, even if it's unchanged, is saved to the document.See alsoREMAP='BodyNoLead'TListView::vnRevert, vnxxxx view notification constantsVnDocClosedFORMAT="LINESPECIFIC"bool VnDocClosed(int omode);REMAP='BodyNoLead'ROLE='italic'VnDocClosed indicates that the document has been closed.See alsoREMAP='BodyNoLead'vnxxxx view notification constantsVnIsDirtyFORMAT="LINESPECIFIC"bool VnIsDirty( );REMAP='BodyNoLead'ROLE='italic'VnIsDirty returns nonzero if changes made to the data in the view have not been saved to the document; otherwise, returns 0.See alsoREMAP='BodyNoLead'vnxxxx view notification constantsVnIsWindowFORMAT="LINESPECIFIC"bool VnIsWindow(HWND hWnd);REMAP='BodyNoLead'ROLE='italic'VnIsWindow returns nonzero if the window's handle passed in ROLE='italic'hWnd is the same as that of the view's display window.See alsoREMAP='BodyNoLead'vnxxxx view notification constantsVnRevertFORMAT="LINESPECIFIC"bool VnRevert(bool clear);REMAP='BodyNoLead'ROLE='italic'VnRevert indicates if changes made to the view should be erased, and the data from the document should be restored to the view. If ROLE='italic'clear is nonzero, the data is cleared instead of restored to the view.See alsoREMAP='BodyNoLead'TListView::vnCommitResponse table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='233*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'EntryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_LISTUNDO, CmEditUndo)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditUndoCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_LISTCUT, CmEditCut)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditcutCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_LISTCOPY, CmEditCopy)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditCopyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_LISTPASTE, CmEditPaste)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditPasteCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_LISTCLEAR, CmEditClear)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditClearCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_LISTDELETE, CmEditDelete)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditDeleteCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_LISTADD, CmEditAdd)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditAddCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_LISTEDIT, CmEditItem)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditItemCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_GETDLGCODE COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvGetDlgCodeCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_NOTIFY_AT_CHILD(LBN_DBLCLK, CmEditItem)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditItemCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_NOTIFY_AT_CHILD(LBN_SELCHANGE, CmSelChange)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmSelchangeCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_DOCCLOSED COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VnDocClosedCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_ISWINDOW COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VnIsWindowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_ISDIRTY COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VnIsDirtyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_COMMIT COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VnCommitCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_REVERT COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VnRevertTLocaleString structMOREINFO="NONE"locale.hREMAP='BodyNoLead'Designed to provide support for localized registration parameters, the ROLE='italic'TLocaleString struct defines a localizable substitute for ROLE='bold'char* strings.These strings, which describe both OLE and non-OLE enabled objects to the user, are available in whatever language the user needs. This struct supports ObjectWindows' Doc/View as well as ObjectComponents, OLE-enabled applications.The public member functions, which supply information about the user's language, the native language, and a description of the string marked for localization, simplify the process of translating and comparing strings in a given language.REMAP='Body'To localize the string resource, ROLE='italic'TLocaleString uses several user-entered prefixes to determine what kind of string to translate. Each prefix must be followed by a valid resource identifier (a standard C identifier).The following table lists the the prefixes ROLE='italic'TLocaleString uses to localize strings. Each prefix is followed by a sample entry.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='60*'COLNAME='C2' COLWIDTH='315*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Prefix COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'@ TXYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The string is a series of characters interpreted as a resource ID and is accessed only from a resource file. It is never used directly.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'# 1045COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The string is a series of digits interpreted as a resource ID and is accessed from a resource file. It is never used directly.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'! MyWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The string is translated if it is not in the native language; otherwise, this string is used directly.REMAP='Body'See the section on localizing symbol names in the ROLE='italic'ObjectWindows Programmer's Guide for more information about localizing strings.Public member functionsCompareFORMAT="LINESPECIFIC"int Compare(const char far* str, TLangId lang);REMAP='BodyNoLead'Using the specified language (ROLE='italic'lang), ROLE='italic'Compare compares ROLE='italic'TLocaleString with another string. It uses the standard string compare and the language-specific collation scheme. It returns one of the following values.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='63*'COLNAME='C2' COLWIDTH='159*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Return valueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body.Center'0COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'There is no match between the two strings.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body.Center'1COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'This string is greater than the other string.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body.Center'-1COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'This string is less than the other string.GetSystemLangIdFORMAT="LINESPECIFIC"static TLangId GetSystemLangId( );REMAP='BodyNoLead'Returns the system language ID, which can be the same as the ROLE='italic'UserLangId.See alsoREMAP='BodyNoLead'TLocaleString::GetUserLangIdGetUserLangIdFORMAT="LINESPECIFIC"static TLangId GetUserLangId( );REMAP='BodyNoLead'Returns the user language ID. For single user systems, this is the same as ROLE='italic'LangSysDefault. The language ID is a predefined number that represents a base language and dialect. See alsoREMAP='BodyNoLead'TLocaleString::GetSystemLangIdIsNativeLangIdFORMAT="LINESPECIFIC"static int IsNativelangId(TLangId lang);REMAP='BodyNoLead'Returns ROLE='bold'true if ROLE='italic'lang equals the native system language.operator const char*FORMAT="LINESPECIFIC"operator const char* ( );REMAP='BodyNoLead'Returns the current character string in the translation.operator =FORMAT="LINESPECIFIC"void operator = (const char* str);REMAP='BodyNoLead'Assigns the string (ROLE='italic'str) to this locale string.TranslateFORMAT="LINESPECIFIC"const char* Translate(TLangId lang);REMAP='BodyNoLead'Translates the string to the given language. ROLE='italic'Translate follows this order of preference in order to choose a language for translation:NUMERATION='ARABIC' CONTINUATION="RESTARTS" INHERITNUM="IGNORE"REMAP='.NumList1'Base language and dialect.REMAP='.NumList1'Base language and no dialectREMAP='.NumList1'Base language and another dialectREMAP='.NumList1'The native language of the resource itself.REMAP='.NumList1'Returns 0 if unable to translate the string. (This can happen only if an @ or # prefix is used; otherwise, the ! prefix indicates that the string following is the native language itself.) See alsoREMAP='BodyNoLead'TLangId typedef, LangXxxx_ID constantsTLookupValidator classMOREINFO="NONE"validate.hREMAP='BodyNoLead'A streamable class, ROLE='italic'TLookupValidator compares the string typed by a user with a list of acceptable values. ROLE='italic'TLookupValidator is an abstract validator type from which you can derive useful lookup validators. You will never create an instance of ROLE='italic'TLookupValidator. When you create a lookup validator type, you need to specify a list of valid items and override the ROLE='italic'Lookup method to return true only if the user input matches an item in that list. One example of a working descendant of ROLE='italic'TLookupValidator is ROLE='italic'TStringLookupValidator.Public constructorConstructorFORMAT="LINESPECIFIC"TLookupValidator( );REMAP='BodyNoLead'Constructs a ROLE='italic'TLookupValidator object.Public member functionsIsValidFORMAT="LINESPECIFIC"bool IsValid(const char far* str);REMAP='BodyNoLead'ROLE='italic'IsValid overrides ROLE='italic'TValidator's virtual function and calls ROLE='italic'Lookup to find the string ROLE='italic'str in the list of valid input items. ROLE='italic'IsValid returns ROLE='bold'true if ROLE='italic'Lookup returns ROLE='bold'true, meaning ROLE='italic'Lookup found ROLE='italic'str in its list; otherwise, it returns ROLE='bold'false.LookupFORMAT="LINESPECIFIC"virtual bool Lookup(const char far* str);REMAP='BodyNoLead'Searches for the string ROLE='italic'str in the list of valid entries and returns ROLE='bold'true if it finds ROLE='italic'str; otherwise, returns ROLE='bold'false. ROLE='italic'TLookupValidator's Lookup is an abstract method that always returns ROLE='bold'false. Descendant lookup validator types must override ROLE='italic'Lookup to perform a search based on the actual list of acceptable items.TMDIChild classMOREINFO="NONE"mdichild.hREMAP='BodyNoLead'ROLE='italic'TMDIChild defines the basic behavior of all MDI child windows. Child windows can be created inside the client area of a parent window. Because child windows exist within, and are restricted to the parent window's borders, the parent window defined before the child is defined. For example, a dialog box is a window that contains child windows, often referred to as dialog box controls. REMAP='Body'To be used as MDI children, classes must be derived from ROLE='italic'TMDIChild. MDI children can inherit keyboard navigation, focus handling, and icon support from ROLE='italic'TFrameWindow. ROLE='italic'TMDIChild is a streamable class.Public constructors and destructorConstructorsFORMAT="LINESPECIFIC"FORMAT="LINESPECIFIC"TMDIChild(TMDIClient& parent, const char far* title = 0, TWindow* clientWnd = 0, bool shrinkToClient = false, TModule* module = 0);REMAP='BodyNoLead'Creates an MDI child window of the MDI client window specified by ROLE='italic'parent, using the specified ROLE='italic'title, client window (ROLE='italic'clientWnd) and instance (ROLE='italic'inst). Invokes the ROLE='italic'TFrameWindow base class constructor, supplying ROLE='italic'parent, title, clientWnd, inst, and indicating that the child window is not to be resized to fit. Invokes the ROLE='italic'TWindow base class constructor, specifying ROLE='italic'parent, title, and ROLE='italic'inst. The window attributes are then adjusted to include WS_VISIBLE, WS_CHILD, WS_CLIPSIBLINGS, WS_CLIPCHILDREN, WS_SYSMENU, WS_CAPTION, WS_THICKFRAME, WS_MINIMIZEBOX, and WS_MAXIMIZEBOX. The dimensions of the window are set to the system default values.FORMAT="LINESPECIFIC"TMDIChild(HWND hWnd, TModule* module = 0);REMAP='BodyNoLead'Creates an MDI child window object from a preexisting window, specified by ROLE='italic'hWnd. The base class ROLE='italic'TFrameWindow constructor is invoked, specifying this ROLE='italic'hWnd, as well as the specified ROLE='italic'inst. The base class ROLE='italic'TWindow constructor is invoked, supplying the ROLE='italic'hWnd and ROLE='italic'inst parameters.DestructorFORMAT="LINESPECIFIC"~TMDIChild( );REMAP='BodyNoLead'Destructs the MDI child window object.Public member functionsDestroyFORMAT="LINESPECIFIC"void Destroy(retVal = 0);REMAP='BodyNoLead'Destroys the interface element associated with the ROLE='italic'TMDIChild. Calls ROLE='italic'EnableAutoCreate for each window in the child list so that the children are also re-created when the parent window is re-created.See alsoREMAP='BodyNoLead'TWindow::EnableAutoCreateEnableWindowFORMAT="LINESPECIFIC"bool EnableWindow(bool enable);REMAP='BodyNoLead'Overrides ROLE='italic'TWindow's virtual function. ROLE='italic'Enables a child window.PreProcessMsgFORMAT="LINESPECIFIC"bool PreProcessMsg (MSG& msg);REMAP='BodyNoLead'Performs preprocessing of window messages for the MDI child window. If keyboard handling is enabled the parent client window's ROLE='italic'TMDIClient_PreProcessMsg member function is called to preprocess messages. In this case, the return value is true. Otherwise, ROLE='italic'TFrameWindow::PreProcessMsg is called and its return value becomes the return value of this member function.See alsoREMAP='BodyNoLead'TMDIClient::PreProcessMsg, TFrameWindow::PreprocessMsgShowWindowFORMAT="LINESPECIFIC"bool ShowWindow(int cmdShow);REMAP='BodyNoLead'Overrides ROLE='italic'TWindow's virtual function. Displays a child window according to the value of ROLE='italic'cmdShow.Protected member functionsDefWindowProcFORMAT="LINESPECIFIC"LRESULT DefWindowProc (uint msg, WPARAM wParam, LPARAM lParam);REMAP='BodyNoLead'Overrides ROLE='italic'TWindow::DefWindowProc to provide default processing for any incoming message the MDI child window does not process. In addition, DefWindowProc handles the following messages: WM_CHILDACTIVATE, WM_GETMINMAXINFO, WM_MENUCHAR, WM_MOVE, WM_SETFOCUS, WM_SIZE, and WM_SYSCOMMAND.See alsoREMAP='BodyNoLead'TWindow::DefWindowProcEvMDIActivateFORMAT="LINESPECIFIC"void EvMDIActivate(HWND hWndActivated, HWND hWndDeactivated);REMAP='BodyNoLead'Instructs a client window to activate or deactivate an MDI child window and then sends a message to the child window being activated and the child window being deactivated.EvNCActivateFORMAT="LINESPECIFIC"void EvNCActivate(bool activate);REMAP='BodyNoLead'Responds to a request to change a title bar or icon.PerformCreateFORMAT="LINESPECIFIC"void PerformCreate(int menuOrId);REMAP='BodyNoLead'Creates the interface element associated with the MDI child window. Notifies the parent MDI client window to create the child window's interface element. The supplied ROLE='italic'menuOrId parameter is ignored because MDI child windows cannot have menus.Response table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='105*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MDIACTIVATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvMDIActivateCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCACTIVATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvNCActivateTMDIClient classMOREINFO="NONE"mdi.hREMAP='BodyNoLead'Multiple Document Interface (MDI) client windows (represented by a ROLE='italic'TMDIClient object) manage the MDI child windows of a ROLE='italic'TMDIFrame parent. ROLE='italic'TMDIClient is a streamable class.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TMDIClient(TModule* module = 0);REMAP='BodyNoLead'Creates an MDI client window object by invoking the base class ROLE='italic'TWindow constructor, passing it a null parent window, a null title, and the specified library ID. Sets the default client window identifier (IDW_MDICLIENT) and sets the style to include MDIS_ALLCHILDSTYLES, WS_GROUP, WS_TABSTOP, WS_CLIPCHILDREN, WS_VSCROLL, and WS_HSCROLL. Initializes the ROLE='italic'ClientAttr data member, setting its ROLE='italic'idFirstChild member to IDW_FIRSTMDICHILD.DestructorFORMAT="LINESPECIFIC"~TMDIClient( );REMAP='BodyNoLead'Frees the ROLE='italic'ClientAttr structure.See alsoREMAP='BodyNoLead'TWindow::TWindow, TWindow::~TWindowPublic data memberClientAttrFORMAT="LINESPECIFIC"LPCLIENTCREATESTRUCT ClientAttr;REMAP='BodyNoLead'ROLE='italic'ClientAttr holds a pointer to a structure of the MDI client window's attributes.Public member functionsArrangeIconsFORMAT="LINESPECIFIC"virtual void ArrangeIcons( );REMAP='BodyNoLead'Arranges the MDI child window icons at the bottom of the MDI client window.CascadeChildrenFORMAT="LINESPECIFIC"virtual void CascadeChildren( );REMAP='BodyNoLead'Sizes and arranges all of the non-iconized MDI child windows within the MDI client window. The children are overlapped, although each title bar is visible.CloseChildrenFORMAT="LINESPECIFIC"virtual bool CloseChildren( );REMAP='BodyNoLead'First calls ROLE='italic'CanClose on each of the MDI child windows owned by this MDI client. Returns true if all MDI children are closed; otherwise returns false.See alsoREMAP='BodyNoLead'TWindow::CanCloseCreateFORMAT="LINESPECIFIC"bool Create( );REMAP='BodyNoLead'Creates the interface element associated with the MDI client window. Calls ROLE='italic'TWindow::Create after first setting the child window menu in ROLE='italic'ClientAttr to the parent frame window's child menu.See alsoREMAP='BodyNoLead'TWindow_Create, TFrameWindow_GetMenuDescrCreateChildFORMAT="LINESPECIFIC"virtual TWindow* CreateChild( );REMAP='BodyNoLead'Overrides member function defined by ROLE='italic'TWindow. Constructs and creates a new MDI child window by calling ROLE='italic'InitChild and ROLE='italic'Create. Returns a pointer to the new MDI child window.See alsoREMAP='BodyNoLead'TMDIClient::InitChild, TModule::MakeWindow, TWindow::CreateGetActiveMDIChildFORMAT="LINESPECIFIC"TMDIChild *GetActiveMDIChild( );REMAP='BodyNoLead'ROLE='italic'GetActiveMDIChild points to the ROLE='italic'TMDIClient's active MDI child window. ROLE='italic'GetActiveMDIChild is set by the child in its ROLE='italic'EvMDIActivate message response member function. ROLE='italic'TMDIClient's constructors initialize ROLE='italic'GetActiveChild.InitChildFORMAT="LINESPECIFIC"virtual TMDIChild *InitChild( );REMAP='BodyNoLead'Constructs an instance of ROLE='italic'TWindow as an MDI child window and returns a pointer to it. Children must be created with MDI client as the parent window. Redefine this member function in your derived MDI window class to construct an instance of a derived MDI child class. For example,FORMAT="LINESPECIFIC"PTWindowsObject TMyMDIClient::InitChild( )
{
return new TMyMDIChild(this, "");
}See alsoREMAP='BodyNoLead'TMDIClient::CreateChildPreProcessMsgFORMAT="LINESPECIFIC"bool PreProcessMsg(MSG &msg);REMAP='BodyNoLead'If the specified ROLE='italic'msg is one of WM_KEYDOWN or WM_SYSKEYDOWN, then the keyboard accelerators are translated for the MDI client.See alsoREMAP='BodyNoLead'TWindow::PreProcessMsgTileChildrenFORMAT="LINESPECIFIC"virtual void TileChildren(int tile = MDITILE_VERTICAL);REMAP='BodyNoLead'Sizes and arranges all of the non-iconized MDI child windows within the MDI client window. The children fill up the entire client area without overlapping.See alsoREMAP='BodyNoLead'TMDIClient::TileChildrenProtected member functionsCmArrangeIconsFORMAT="LINESPECIFIC"void CmArrangeIcons( );REMAP='BodyNoLead'Calls ROLE='italic'ArrangeIcons in response to a menu selection with an ID of CM_ARRANGEICONS.See alsoREMAP='BodyNoLead'TMDIClient::ArrangeIconsCmCascadeChildrenFORMAT="LINESPECIFIC"void CmCascadeChildren( );REMAP='BodyNoLead'Calls ROLE='italic'CascadeChildren in response to a menu selection with an ID of CM_CASCADECHILDREN.See alsoREMAP='BodyNoLead'TMDIClient::CascadeChildrenCmChildActionEnableFORMAT="LINESPECIFIC"void CmChildActionEnable(TCommandEnabler& commandEnabler);REMAP='BodyNoLead'If there are MDI child windows, ROLE='italic'CmChildActionEnalbe enables any one of the child window action menu items.CmCloseChildrenFORMAT="LINESPECIFIC"void CmCloseChildren( );REMAP='BodyNoLead'Calls ROLE='italic'CloseChildren in response to a menu selection with an ID of CM_CLOSECHILDREN.See alsoREMAP='BodyNoLead'TMDIClient::CloseChildrenCmCreateChildFORMAT="LINESPECIFIC"void CmCreateChild( );REMAP='BodyNoLead'Calls ROLE='italic'CreateChild to produce a new child window in response to a menu selection with a menu ID of CM_CREATECHILD.See alsoREMAP='BodyNoLead'TMDIClient::CreateChildCmTileChildrenFORMAT="LINESPECIFIC"void CmTileChildren( );REMAP='BodyNoLead'Calls ROLE='italic'TileChildren in response to a menu selection with an ID of CM_TILECHILDREN.See alsoREMAP='BodyNoLead'TMDIClient::TileChildrenCmTileChildrenHorizFORMAT="LINESPECIFIC"void CmTileChildrenHoriz( );REMAP='BodyNoLead'Calls ROLE='italic'TileChildren in response to a menu selection with an ID of CM_TILECHILDREN and passes MDI child tile flag as MDITILE_HORIZONTAL.EvMDICreateFORMAT="LINESPECIFIC"LRESULT EvMDICreate(MDICREATESTRUCT far& createStruct);REMAP='BodyNoLead'Intercepts the WM_MDICREATE message sent when MDI child windows are created, and, if the client's style includes MDIS_ALLCHILDSTYLES, and the child window's specified style is 0, then changes the child window style attributes to WS_VISIBLE, WS_CHILD, WS_CLIPSIBLINGS, WS_CLIPCHILDREN, WS_SYSMENU, WS_CAPTION, WS_THICKFRAME, WS_MINIMIZEBOX, and WS_MAXIMIZEBOX.See alsoREMAP='BodyNoLead'TWindow::DefaultProcessing, MDICREATE structEvMDIDestroyFORMAT="LINESPECIFIC"void EvMDIDestroy(HWND hWnd);REMAP='BodyNoLead'Intercepts the WM_MDIDESTROY message.GetClassNameFORMAT="LINESPECIFIC"char far *GetClassName( );REMAP='BodyNoLead'Returns ROLE='italic'TMDIClient's registration class name, "MDICLIENT."Response table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='285*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND (CM_ARRANGEICONS, CmArrangeIcons)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmArrangeIconsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND (CM_CASCADECHILDREN, CmCascadeChildren)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmCascadeChildrenCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND (CM_CLOSECHILDREN, CmCloseChildren)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmCloseChildrenCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND (CM_CREATECHILD, CmCreateChild)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmCreateChildCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND (CM_TILECHILDREN, CmTileChildren)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmTileChildrenCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_TILECHILDRENHORIZ,CmTileChildrenHoriz)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmTileChildrenHorizCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_TILECHILDREN, CmChildActionEnable)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmChildActionEnableCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_CASCADECHILDREN, CmChildActionEnable)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmChildActionEnableCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_ARRANGEICONS, CmChildActionEnable)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmChildActionEnableCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_CLOSECHILDREN, CmChildActionEnable)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmChildActionEnalbeCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MDICREATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvMDICreateCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MDIDESTROYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvMDIDestroyTMDIFrame classMOREINFO="NONE"mdi.hREMAP='BodyNoLead'Multiple Document Interface (MDI) frame windows, represented by ROLE='italic'TMDIFrame, are overlapped windows that serve as main windows of MDI-compliant applications. ROLE='italic'TMDIFrame objects automatically handle the creation and initialization of an MDI client "window" (represented by a ROLE='italic'TMDIClient object) required by Windows. ROLE='italic'TMDIFrame sets window style WS_CLIPCHILDREN by default so that minimal flicker occurs when the MDI frame erases its background and the backgrounds of its children. ROLE='italic'TMDIFrame is a streamable class.REMAP='Body'Because ROLE='italic'TMDIFrame is derived from ROLE='italic'TFrameWindow, it inherits keyboard navigation. As a result, all children of the MDI frame acquire keyboard navigation. However, it's best to enable keyboard navigation only for those children who require it. REMAP='Body'To create an OLE-enabled MDI frame window, use ROLE='italic'TOleMDIFrame, which inherits functionality from both ROLE='italic'TMDIFrame and and ROLE='italic'TOleFrame. See alsoREMAP='BodyNoLead'TOLEMDIFramePublic constructorsConstructorsFORMAT="LINESPECIFIC"TMDIFrame(const char far *title, TResId menuResId, TMDIClient &clientWnd = *new TMDIClient, TModule* module = 0);REMAP='BodyNoLead'Constructs an MDI frame window object using the caption (ROLE='italic'title) and resource ID (ROLE='italic'menuResId). If no client window is specified (ROLE='italic'clientWnd), then an instance of ROLE='italic'TMDIClient is created automatically and used as the client window of the frame. The supplied library ID (ROLE='italic'module) is passed to the ROLE='italic'TFrameWindow constructor along with a null parent window pointer, caption, client window, and a flag indicating that the client window is not to be resized to fit. The ROLE='italic'TWindow constructor is also invoked; it passes the supplied caption and library ID, as well as a null parent window pointer. Then the child menu position is initialized to be the leftmost menu item, and the supplied menu resource ID is used in a call to ROLE='italic'AssignMenu.FORMAT="LINESPECIFIC"TMDIFrame(HWND hWindow, HWND clientHWnd, TModule* module = 0);REMAP='BodyNoLead'Constructs an MDI frame window using an already created non-ObjectWindows window. Invokes the ROLE='italic'TFrameWindow TWindow constructors passing in the window handle (ROLE='italic'hWindow) library ID (ROLE='italic'module). Initializes the child menu position to the leftmost menu item and constructs a ROLE='italic'TMDIClient object that corresponds to the supplied ROLE='italic'clientHWnd.See alsoREMAP='BodyNoLead'TFrameWindow::AssignMenu, TFrameWindow::TFrameWindow, TMDIClient::TMDIClient, TWindow::TWindowPublic member functionsFindChildMenuFORMAT="LINESPECIFIC"static HMENU FindChildMenu(HMENU newMenu);REMAP='BodyNoLead'ROLE='italic'FindChildMenu searches, from right to left, the pop-up child menus contained in the ROLE='italic'newMenu menu resource for a child menu containing command items with one of the following identifiers: CM_CASCADECHILDREN, CM_TITLECHILDREN, or CM_ARRANGEICONS. The return value of ROLE='italic'FindChildMenu is the ROLE='italic'HMENU of the first child menu containing one of these identifiers. If one of these identifiers is not found, ROLE='italic'FindChildMenu returns 0.REMAP='Body'ROLE='italic'FindChildMenu is used to locate the menu to which the MDI child window list will be appended. This call to ROLE='italic'FindChildMenu is made from within the ROLE='italic'TMDIClient class.GetClientWindowFORMAT="LINESPECIFIC"TMDIClient *GetClientWindow( );REMAP='BodyNoLead'Returns a pointer to the MDI client window.See alsoREMAP='BodyNoLead'TFrameWindow::GetClientWindowGetCommandTargetFORMAT="LINESPECIFIC"virtual HWND GetCommandTarget( );REMAP='BodyNoLead'Locates and returns the child window that is the target of the command and command enable messages. If the current application does not have focus or if the focus is within a toolbar in the application, ROLE='italic'GetCommandTarget returns the most recently active child window. If an alternative form of command processing is desired, a user's main window class can override this function.PerformCreateFORMAT="LINESPECIFIC"void PerformCreate(int menuOrId);REMAP='BodyNoLead'Overrides ROLE='italic'TWindow's virtual function. Creates the interface element associated with the MDI frame window.SetMenuFORMAT="LINESPECIFIC"bool SetMenu (HMENU);REMAP='BodyNoLead'Looks for the MDI submenu in the new menu bar. Searches for the MDI child menu in the new menu bar and updates the child menu position with the specified menu ROLE='italic'index. Then sends the client window an WM_MDISETMENU message to set the new menu and invokes ROLE='italic'TWindow::DrawMenuBar to redraw the menu. Returns false if the MDI client indicates that there was no previous menu; otherwise, returns true.See alsoREMAP='BodyNoLead'TWindow::DrawMenuBarProtected member functionsDefWindowProcFORMAT="LINESPECIFIC"LRESULT DefWindowProc (uint message, WPARAM wParam, LPARAM lParam);REMAP='BodyNoLead'Overrides ROLE='italic'TWindow::DefWindowProc and provides default processing for any incoming message the MDI frame window does not process.See alsoREMAP='BodyNoLead'TWindow::DefWindowProcResponse table entriesREMAP='Body'The ROLE='italic'TMDIFrame response table has no entries.TMeasurementUnits enumMOREINFO="NONE"layoutco.hFORMAT="LINESPECIFIC"enum TMeasurementUnits{lmPixels,lmLayoutUnits};REMAP='BodyNoLead'Used by the ROLE='italic'TLayoutConstraint struct, ROLE='italic'TMeasurementUnits enumerates the measurement units (ROLE='italic'lmPixels or ROLE='italic'lmLayoutUnits) that control the dimension of the window. These can be either pixels or layout units that are obtained by dividing the font height into eight vertical and eight horizontal segments.See alsoREMAP='Body'TLayoutConstraint structTMemoryDC classMOREINFO="NONE"dc.hREMAP='BodyNoLead'A DC class derived from ROLE='italic'TDC, TMemoryDC provides access to a memory DC.Public constructorsConstructorsFORMAT="LINESPECIFIC"TMemoryDC( );REMAP='BodyNoLead'Default constructor for a memory DC object.FORMAT="LINESPECIFIC"TMemoryDC(const TDC& DC);REMAP='BodyNoLead'Creates a memory DC object compatible with the given ROLE='italic'DC argument.FORMAT="LINESPECIFIC"TMemoryDC(HDC handle, TAutoDelete AutoDelete);REMAP='BodyNoLead'Creates a memory DC object from an existing ROLE='italic'DC handle.See alsoREMAP='BodyNoLead'TDC::TDCPublic member functionsRestoreBitmapFORMAT="LINESPECIFIC"void RestoreBitmap( );REMAP='BodyNoLead'Restores the originally selected bitmap object for this DC.See alsoREMAP='BodyNoLead'TDC::RestoreObjectsRestoreObjectsFORMAT="LINESPECIFIC"void RestoreObjects( );REMAP='BodyNoLead'Restores the originally selected brush, pen, font, palette, and bitmap objects for this DC.See alsoREMAP='BodyNoLead'TDC::RestoreObjects, TMemoryDC::RestoreBitmapSelectObjectFORMAT="LINESPECIFIC"void SelectObject(const TBrush& brush);FORMAT="LINESPECIFIC"void SelectObject(const TPen& pen);FORMAT="LINESPECIFIC"void SelectObject(const TFont& font);FORMAT="LINESPECIFIC"void SelectObject(const TPalette& palette, bool forceBackground=false);FORMAT="LINESPECIFIC"void SelectObject(const TBitmap& bitmap);REMAP='BodyNoLead'Selects the given GDI object into this DC.See alsoREMAP='BodyNoLead'TDC::SelectObject, TMemoryDC::RestoreBitmap, TMemoryDC::RestoreObjectsProtected data memberOrgBitmapFORMAT="LINESPECIFIC"HBITMAP OrgBitmap;REMAP='BodyNoLead'The original bitmap selected into this DC.See alsoREMAP='BodyNoLead'TMemoryDC::SelectObject, TMemoryDC::RestoreBitmapTMenu classMOREINFO="NONE"menu.hREMAP='BodyNoLead'The ROLE='italic'TMenu class encapsulates window menus. You can use ROLE='italic'TMenu member functions to construct, modify, query, and create menu objects. You can also use ROLE='italic'TMenu to add bitmaps to your menu or to specify if a menu item is checked or unchecked. ROLE='italic'TMenu includes two versions of a helper function, ROLE='italic'DeepCopy, designed to make copies of menus and insert them at a specified position on the menu bar. See the ROLE='italic'ObjectWindowsROLE='italic' Programmer's Guide for information about how to create menu objects. Public constructors and destructorConstructorsFORMAT="LINESPECIFIC"TMenu(TAutoDelete autoDelete = AutoDelete);REMAP='BodyNoLead'Creates an empty menu and sets ROLE='italic'autoDelete, by default, so that the menu is automatically deleted when the object is destroyed.FORMAT="LINESPECIFIC"TMenu(const TMenu& original, TAutoDelete autoDelete = NoAutoDelete);REMAP='BodyNoLead'Creates a complete copy of an existing menu and sets ROLE='italic'autoDelete, by default, so that the menu is not automatically deleted when the object is destroyed.FORMAT="LINESPECIFIC"TMenu(HWND wnd, TAutoDelete autoDelete = NoAutoDelete);REMAP='BodyNoLead'Creates a menu object representing the window's current menu and sets ROLE='italic'autoDelete, by default, so that the menu is not automatically deleted when the object is destroyed.FORMAT="LINESPECIFIC"TMenu(HMENU handle, TAutoDelete autoDelete = NoAutoDelete);REMAP='BodyNoLead'Creates a menu object from an already loaded menu and sets ROLE='italic'autoDelete, by default, so the menu is not automatically deleted when the object is destroyed.FORMAT="LINESPECIFIC"TMenu(const void far* menuTemplate);REMAP='BodyNoLead'Creates a menu object from a menu template in memory. This constructor is not available under Presentation Manager.FORMAT="LINESPECIFIC"TMenu(HINSTANCE instance, TResId resId);REMAP='BodyNoLead'Creates a menu object from a specified resource ID.DestructorFORMAT="LINESPECIFIC"virtual ~TMenu( );REMAP='BodyNoLead'Destroys the menu.See alsoREMAP='BodyNoLead'TResId classPublic member functionsAppendMenuFORMAT="LINESPECIFIC"bool AppendMenu(uint flags, uint newItem, const TBitmap& newBmp);REMAP='BodyNoLead'Adds a bitmap menu item at the end of the menu. See ROLE='italic'TMenu::GetMenuState for a description of the flag values that specify the attributes of the menu, for example, menu item is checked, menu item is disabled, and so on.FORMAT="LINESPECIFIC"bool AppendMenu(uint flags, uint newItem = -1, const char far* newItem = 0);REMAP='BodyNoLead'Adds a text menu item to the end of the menu. See ROLE='italic'TMenu::GetMenuState for a description of the flag values that specify the attributes of the menu, for example, menu item is checked, menu item is a a bitmap, and so on.See alsoREMAP='BodyNoLead'TBitmap class, TMenu::GetMenuStateCheckMenuItemFORMAT="LINESPECIFIC"bool CheckMenuItem(uint item, uint check);REMAP='BodyNoLead'Checks or unchecks the menu item. By combining flags with the bitwise OR operator (|) ROLE='italic'check specifies both the position of ROLE='italic'item (MF_BYCOMMAND, MF_BYPOSITION) and whether ROLE='italic'item is to be checked (MF_CHECKED) or unchecked (MF_UNCHECKED).CheckValidFORMAT="LINESPECIFIC"void CheckValid(uint resId = IDS_MENUFAILURE);REMAP='BodyNoLead'Throws a ROLE='italic'TXMenu exception if the menu object is invalid.See alsoREMAP='BodyNoLead'TMenu::TXMenuDeleteMenuFORMAT="LINESPECIFIC"bool DeleteMenu(uint item, uint flags);REMAP='BodyNoLead'Removes the menu item (ROLE='italic'item) from the menu or deletes the menu item if it's a pop-up menu. ROLE='italic'flags is used to identify the position of the menu item by its relative position in the menu (MF_BYPOSITION) or by referencing the handle to the top-level menu (MF_BYCOMMAND).See alsoREMAP='BodyNoLead'TMenu::RemoveMenuDrawItemFORMAT="LINESPECIFIC"virtual void DrawItem(DRAWITEMSTRUCT far& drawItem);REMAP='BodyNoLead'ROLE='italic'DrawItem responds to a message forwarded to a drawable control by ROLE='italic'TWindow when the control needs to be drawn.See alsoREMAP='BodyNoLead'DRAWITEMSTRUCT structEnableMenuItemFORMAT="LINESPECIFIC"bool EnableMenuItem(uint item, uint enable);REMAP='BodyNoLead'Enables, disables, or grays the menu item specified in the ROLE='italic'item parameter. If a menu item is enabled (the default state), it can be selected and used as usual. If a menu item is grayed, it appears in grayed text and cannot be selected by the user. If a menu item is disabled, it is not displayed. Returns ROLE='bold'true if successful.GetHandleFORMAT="LINESPECIFIC"virtual HMENU GetHandle( );REMAP='BodyNoLead'Returns the handle to the menu.See alsoREMAP='BodyNoLead'TMenu::IsOKGetMenuCheckMarkDimensionsFORMAT="LINESPECIFIC"static bool GetMenuCheckMarkDimensions(TSize& size);REMAP='BodyNoLead'Gets the size of the bitmap used to display the default checkmark on checked menu items.See alsoREMAP='BodyNoLead'TMenu::SetMenuItemBitmaps, TSize classGetMenuItemCountFORMAT="LINESPECIFIC"uint GetMenuItemCount( ) const;REMAP='BodyNoLead'Returns the number of items in a top-level or pop-up menu.GetMenuItemIDFORMAT="LINESPECIFIC"uint GetMenuItemID(int posItem) const;REMAP='BodyNoLead'Returns the ID of the menu item at the position specified by ROLE='italic'posItem. If this is a pop-up menu, returns the ID of the menu's first item minus one.GetMenuStateFORMAT="LINESPECIFIC"uint GetMenuState(uint item, uint flags) const;REMAP='BodyNoLead'Returns the menu flags for the menu item specified byROLE='italic' item. flags specifies how the ROLE='italic'item is interpreted, and is one of the following values:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='81*'COLNAME='C2' COLWIDTH='293*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'FlagCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MF_BYCOMMANDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Interpret ROLE='italic'item as a menu command ID. Default it neither MF_BYCOMMAND nor MF_BYPOSITION is specified.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MF_BYPOSITIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Interpret ROLE='italic'item as the zero-base relative postion of the menu item within the menu.REMAP='Body'If ROLE='italic'item is found, and is a pop-up menu, the low-order byte of the return value contains the flags associated with ROLE='italic'item, and the high-order byte contains the number of items in the pop-up menu. If item is not a pop-up menu, the return value specifies a combination of these flags:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='94*'COLNAME='C2' COLWIDTH='280*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'FlagCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MF_BITMAPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Menu item is a a bitmap.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MF_CHECKEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Menu item is checked (pop-up menus only).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MF_DISABLEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Menu item is disabled.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MF_ENABLEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Menu item is enabled. Note: this constant's value is 0.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MF_GRAYEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Menu item is disabled and grayed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MF_MENUBARBREAKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Same as MF_MENUBREAK except pop-up menu columns are separated by a vertical dividing line.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MF_MENUBREAKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Static menu items are placed on a new line, pop-up menu items are placed in a new column, without separating columns.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MF_SEPARATORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A horizontal dividing line is drawn, which cannot be enabled, checked, grayed, or highlighted. Both ROLE='italic'item and ROLE='italic'flags are ignored.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MF_UNCHECKEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Menu item check mark is removed (default). Note: this constant value is 0. Returns -1 if item doesn't exist.GetMenuStringFORMAT="LINESPECIFIC"uint GetMenuString(uint item, char* str, int count, uint flags) const;REMAP='BodyNoLead'Returns the label (ROLE='italic'str) of the menu item (ROLE='italic'item).GetSubMenuFORMAT="LINESPECIFIC"HMENU GetSubMenu(int posItem) const;REMAP='BodyNoLead'Returns the handle of the menu specified by ROLE='italic'posItem.InsertMenuFORMAT="LINESPECIFIC"bool InsertMenu(uint item, uint flags, uint newItem, const TBitmap& newBmp);REMAP='BodyNoLead'Adds a bitmap menu item after the menu item specified in ROLE='italic'item. The ROLE='italic'flags parameter contains either the MF_BYCOMMAND or MF_BYPOSITION values that indicate how to interpret the item parameter. If MF_BYCOMMAND, item is a command ID; if MF_BYPOSITION, item holds a relative position within the menu.FORMAT="LINESPECIFIC"bool InsertMenu(uint item, uint flags, uint newItem = -1, const char far* newItem = 0);REMAP='BodyNoLead'Inserts a new text menu item or pop-up menu into the menu after the menu item specified in ROLE='italic'item. The ROLE='italic'flagsparameter contains either the MF_BYCOMMAND or MF_BYPOSITION values that indicate how to interpret the item parameter. If MF_BYCOMMAND, item is a command ID; if MF_BYPOSITION, item holds a relative position within the menu.See alsoREMAP='BodyNoLead'TMenu::GetMenuStateIsOKFORMAT="LINESPECIFIC"bool IsOK( ) const;REMAP='BodyNoLead'Returns ROLE='bold'true if the menu has a valid handle.See alsoREMAP='BodyNoLead'TMenu::GetHandleMeasureItemFORMAT="LINESPECIFIC"virtual void MeasureItem(MEASUREITEMSTRUCT far& measureItem);REMAP='BodyNoLead'ROLE='italic'measureItem is used by owner-drawn controls to store the dimensions of the specified item.See alsoREMAP='BodyNoLead'MEASUREITEMSTRUCT structModifyMenuFORMAT="LINESPECIFIC"bool ModifyMenu(uint item, uint flags, uint newItem, const TBitmap& newBmp);REMAP='BodyNoLead'Changes an existing menu item into a bitmap. The ROLE='italic'flags parameter contains either the MF_BYCOMMAND or MF_BYPOSITION values that indicate how to interpret the item parameter. If MF_BYCOMMAND, item is a command ID; if MF_BYPOSITION, item holds a relative position within the menu.FORMAT="LINESPECIFIC"bool ModifyMenu(uint item, uint flags, uint newItem = -1, const char far* newItem = 0);REMAP='BodyNoLead'Changes an existing menu item from the item specified in ROLE='italic'item to ROLE='italic'newItem. The ROLE='italic'flags parameter contains either the MF_BYCOMMAND or MF_BYPOSITION values that indicate how to interpret the item parameter. If MF_BYCOMMAND, item is a command ID; if MF_BYPOSITION, item holds a relative position within the menu.See alsoREMAP='BodyNoLead'TMenu::GetMenuStateoperator HMENUFORMAT="LINESPECIFIC"operator HMENU( );REMAP='BodyNoLead'Returns the menu's handle.See alsoREMAP='BodyNoLead'TMenu::operator uintoperator =FORMAT="LINESPECIFIC"TMenu& operator =(const TMenu& original);REMAP='BodyNoLead'Returns the ROLE='italic'TMenu object.See alsoREMAP='BodyNoLead'TMenu::operator uintoperator uintFORMAT="LINESPECIFIC"operator uint( );REMAP='BodyNoLead'Returns the menu's handle. This function provides compatibility with functions that require a ROLE='bold'uint menu parameter.See alsoREMAP='BodyNoLead'TMenu::operator HMenuRemoveMenuFORMAT="LINESPECIFIC"bool RemoveMenu(uint item, uint flags);REMAP='BodyNoLead'Removes the menu item from the menu but does not delete it if it is a submenu.See alsoREMAP='BodyNoLead'TMenu::DeleteMenuSetMenuItemBitmapsFORMAT="LINESPECIFIC"bool SetMenuItemBitmaps(uint item, uint flags, const TBitmap* bmpUnchecked=0, const TBitmap* bmpChecked=0);REMAP='BodyNoLead'Specifies the bitmap to be displayed when the menu item is checked and unchecked. ROLE='italic'item indicates the menu item to be associated with the bitmap. ROLE='italic'flags indicates how the ROLE='italic'size parameter is interpreted (whether by MF_BYPOSITION or by MF_BYCOMMAND). GetMenuCheckMarkDimensions gets the size of the bitmap.See alsoREMAP='BodyNoLead'TMenu::GetMenuCheckmarkDimensions, TBitmapProtected data membersHandleFORMAT="LINESPECIFIC"HMENU Handle;REMAP='BodyNoLead'Holds the handle to the menu.ShouldDeleteFORMAT="LINESPECIFIC"bool ShouldDelete;REMAP='BodyNoLead'ROLE='italic'ShouldDelete is set to ROLE='bold'true if the destructor needs to delete the handle to the menu.See alsoREMAP='BodyNoLead'TMenu::DeleteMenu, TMenu::RemoveMenuProtected member functionsDeepCopyFORMAT="LINESPECIFIC"static void DeepCopy(TMenu& dest, const TMenu& source, int offset = 0, int count = -1);REMAP='BodyNoLead'Makes a deep copy (that is, an actual copy of the menu, not just a copy of pointers or handles to a menu) of the menu. This form of ROLE='italic'DeepCopy copies count number of pop-up menus or menu items from ROLE='italic'src beginning at offset and appends the items or menus to the destination menu. If count is passed as -1, all source menu items are copied. FORMAT="LINESPECIFIC"static void DeepCopy(TMenu& dst, int dstOff, const TMenu& src, int srcOff = 0, int count = -1);REMAP='BodyNoLead'Makes a deep copy (that is, an actual copy of the menu, not just a copy of pointers or handles to a menu) of the menu. This form of ROLE='italic'DeepCopy copies count number of pop-up menus or menu items from ROLE='italic'source beginning at ROLE='italic'offset and inserts the items or menus at the ROLE='italic'dstOffset position specified in the destination menu (ROLE='italic'dest). If ROLE='italic'count is passed as -1, all source menu items are copied. TMenuDescr classMOREINFO="NONE"menu.hREMAP='BodyNoLead'Derived from ROLE='italic'TMenu, TMenuDescr describes your menu bar and its functional groups. ROLE='italic'TMenuDescr provides an easy way for you to group menus on your menu bar and to add new groups to an existing menu bar. It uses a resource ID to identify the menu resource and an array of count values to indicate the number of pop-up menus in each group on the menu bar.REMAP='Body'The ROLE='italic'TGroup enum enumerates the six basic functional groups on a menu bar: File, Edit, Container, Object, Window, and Help. ROLE='italic'TMenuDescr's constructors simply initialize the members based on the arguments passed: ROLE='italic'TFrameWindow's ROLE='italic'MergeMenu function actually performs the real work of merging the menu groups.REMAP='Body'One method you can use to create a menu involves invoking the ROLE='italic'TMenuDescr constructor and passing the number of group counts for each menu selection.REMAP='Body'For example, if your original menu looked like this:FILEREF='smenu_1.gif'REMAP='Body'you might use the following group counts:COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='72*'COLNAME='C2' COLWIDTH='42*'COLNAME='C3' COLWIDTH='87*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'GroupCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'CountCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'MenuVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FileGroupCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'1COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'FileCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EditGroupCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'2COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Edit SearchCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ContainerGroupCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'1COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'ViewCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ObjectGroupCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'3COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Page Paragraph WordCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WindowGroupCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'1COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'WindowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HelpGroupCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'1COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'HelpREMAP='Body'You would then invoke the constructor this way:FORMAT="LINESPECIFIC"TMenuDescr(IDM_MYMENU, 1,2, 1, 3, 1, 1)REMAP='Body'You can build the previous menu by merging two menus. Set your application's frame menu bar this way:FILEREF='smenu_2.gif'FORMAT="LINESPECIFIC"TMenuDescr(IDM_FRAME, 1, 0, 1, 0, 1, 1)REMAP='Body'and the word-processor child menu bar this way:FILEREF='smenu_3.gif'FORMAT="LINESPECIFIC"TMenuDescr(IDM_WPROC, 0, 2, 0, 3, 0, 1)REMAP='Body'If no child is active, only the frame menu will be active. When the word processor's child window becomes active, the child menu bar is merged with the frame menu. Every group that is 0 in the child menu bar leaves the parent's group intact. The previous example interleaves every group except for the last group, the Help group, in which the child replaces the frame menu.REMAP='Body'By convention, the even groups (File, Container, Window) usually belong to the outside frame or container, and the odd groups (Edit, Object, Help) belong to the child or contained group.REMAP='Body'If a -1 is used in a group count, the merger eliminates the parent's group without replacing it. For example, another child menu bar, such as a calculator, could be added to your application in this way.FILEREF='smenu_4.gif'FORMAT="LINESPECIFIC"TMenuDescr(IDM_WCALC, 0, 1, -1, 1, 0, 1)REMAP='Body'This produces a merged menu (with the View menu selection eliminated as a result of the -1) that looks like this:FILEREF='smenu_5.gif'REMAP='Body'You could add a paint window in this way:FILEREF='smenu_6.gif'FORMAT="LINESPECIFIC"TMenuDescr(IDM_WPAINT, 0, 1, 0, 2, 0, 1)REMAP='Body'This produces the following merged menu:FILEREF='smenu_7.gif'REMAP='Body'The simplest way to add groups to a menu bar involves defining the menu groups and adding separators in a resource file. Insert the term MENUITEM SEPARATOR between each menu group and an additional separator if one of the menu groups is not present. For example, the resource file for Step14 of the ObjectWindows tutorial defines the following menu groups and separators:FORMAT="LINESPECIFIC"IDM_MDICMNDS MENU
{
// Display a grayed File menu
MENUITEM "File", 0,GRAYED ;placeholder for File menu from DocManager
MENUITEM SEPARATOR
MENUITEM "Edit", CM_NOEDIT ;placeholder for Edit menu from View
MENUITEM SEPARATOR
MENUITEM SEPARATOR
MENUITEM SEPARATOR
POPUP "&Window"
{
// Options within the Window menu group
MENUITEM "&Cascade", CM_CASCADECHILDREN
MENUITEM "&Tile", CM_TILECHILDREN
MENUITEM "Arrange &Icons", CM_ARRANGEICONS
MENUITEM "C&lose All", CM_CLOSECHILDREN
MENUITEM "Add &View", CM_VIEWCREATE
}
MENUITEM SEPARATOR
POPUP "&Help"
{
MENUITEM "&About", CM_ABOUT
}
}REMAP='Body'(You can see the separators by loading Step14.rc into Resource Workshop and disabling the View as Popup Option in the View menu.REMAP='Body'This resource file defines an Edit group, a File group, a Window group, and a Help group, but no entries for Container or Object groups.REMAP='Body'Then, step14.cpp uses these commands from the resource file to set the main window and its menu, passing IDM_MDICMNDS as the parmeter to ROLE='italic'SetMenuDescr function, thusFORMAT="LINESPECIFIC"SetMainWindow(frame);
GetMainWindow( )->SetMenuDescr(TMenuDescr(IDM_MDICMNDS));REMAP='Body'and produces the following menu groups:FILEREF='smenu_8.gif'REMAP='Body'ROLE='italic'TMenuDescr's functions let you perform OLE2-like menu merging. That is, you can merge menus from a container's document (the MDI frame window) with those of an embedded object (the MDI child window). When the embedded object is activated in-place by double-clicking the mouse, the menu of the child window merges with that of the frame window.Public constructors and destructorConstructorsFORMAT="LINESPECIFIC"TMenuDescr( );REMAP='BodyNoLead'Default constructor for a ROLE='italic'TMenuDescr object. No menu resources or groups are specified. Constructs an empty menu bar.FORMAT="LINESPECIFIC"TMenuDescr(TResId id, int fg, int eg, int cg, int og, int wg, int hg, TModule* module = ::Module);REMAP='BodyNoLead'Constructs a menu descriptor from the resource indicated by the ROLE='italic'id. and ROLE='italic'module parameters. Places the pop-up menus in groups according the values of the ROLE='italic'fg, eg, cg, of, wg, and ROLE='italic'hg parameters. The ROLE='italic'fg, eg, cg, of, wg, and ROLE='italic'hg parameters represent the functional groups identified by the ROLE='italic'TGroup enum. Calls the function ROLE='italic'ExtractGroups to extract the group counts based on the separator items in the menu bar.FORMAT="LINESPECIFIC"TMenuDescr(const TMenuDescr& original);REMAP='BodyNoLead'Copies the menu descriptor object specified in the ROLE='italic'original parameter. FORMAT="LINESPECIFIC"TMenuDescr(TResId id, TModule* module = ::Module);REMAP='BodyNoLead'Creates a menu descriptor from the menu resource specified in the ROLE='italic'id parameter. Calls the function ROLE='italic'ExtractGroups to extract the group counts based on the separator items in the menu bar.FORMAT="LINESPECIFIC"TMenuDescr(HMENU hMenu, int fg, int eg, int cg, int og, int wg, int hg, TModule* module = ::Module);REMAP='BodyNoLead'Constructs a menu descriptor from the menu handle indicated in the ROLE='italic'hMenu parameter. The menu descriptor can have zero or more pop-up menus in more than one functional group. TheROLE='italic' fg, eg, cg, of, wg, and ROLE='italic'hg parameters represent the functional groups identified by the ROLE='italic'TGroup enum. Calls the function ROLE='italic'ExtractGroups to extract the group counts based on the separator items in the menu bar or uses the group count parameters specified if there are no separators in the menubar. DestructorFORMAT="LINESPECIFIC"~TMenuDescr( );REMAP='BodyNoLead'Destroys the ROLE='italic'TMenuDescr object.Type definitionsTGroup enumFORMAT="LINESPECIFIC"enum TGroup{FileGroup, EditGroup, ContainerGroup, ObjectGroup, WindowGroup, HelpGroup, NumGroups};REMAP='BodyNoLead'Used by ROLE='italic'TMenuDescr, the ROLE='italic'TGroup enum describes the following constants that define the index of the entry in the ROLE='italic'GroupCount array.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='75*'COLNAME='C2' COLWIDTH='162*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FileGroupCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Index of the File menu group countCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EditGroupCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Index of the Edit menu group countCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ContainerGroupCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Index of the Container menu group countCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ObjectGroupCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Index of the Object group countCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WindowGroupCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Index of the Window menu group countCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HelpGroupCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Index of the Help menu group countCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'NumGroupsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Total number of groupsSee alsoREMAP='BodyNoLead'TMenuDescr::GroupCountPublic member functionsGetHandleFORMAT="LINESPECIFIC"HMENU GetHandle( ) const;REMAP='BodyNoLead'Gets the handle to the menu, possibly causing any deferred menu acquisition to occur.GetModuleFORMAT="LINESPECIFIC"TModule* GetModule( ) const;REMAP='BodyNoLead'Returns a pointer to the module object.SetModuleFORMAT="LINESPECIFIC"void SetModule(TModule* module);REMAP='BodyNoLead'Sets the default module object for this menu descriptor.GetIdFORMAT="LINESPECIFIC"TResId GetId( ) const;REMAP='BodyNoLead'Gets the menu resource ID used to construct the menu descriptor.GetGroupCountFORMAT="LINESPECIFIC"int GetGroupCount(int group) const;REMAP='BodyNoLead'Gets the number of menus in a specified group within the menu bar. There are a maximum of six functional groups as defined by the ROLE='italic'TGroup enum. These groups include ROLE='italic'FileGroup, EditGroup, ContainerGroup, ObjectGroup, WindowGroup, and ROLE='italic'HelpGroup. See also REMAP='BodyNoLead'TGroup enumClearServerGroupCountFORMAT="LINESPECIFIC"void ClearServerGroupCount( );;REMAP='BodyNoLead'Clears the odd groups (that is, 1, 3, 5 or Edit Group, Object Group, and Help Group) in the menu bar for a server application.See also REMAP='BodyNoLead'TGroup enum, TOcMenuDescrClearContainerGroupCountFORMAT="LINESPECIFIC"void ClearContainerGroupCount( );REMAP='BodyNoLead'Clears the even groups (that is, 0, 2, 4 or File Group, Container Group, Window Group) in the menu bar for a container application.See also REMAP='BodyNoLead'TGroup enum, TOcMenuDescrMergeFORMAT="LINESPECIFIC"bool Merge(const TMenuDescr& sourceMenuDescr);REMAP='BodyNoLead'Merges the functional groups of another menu descriptor into this menu descriptor.FORMAT="LINESPECIFIC"bool Merge(const TMenuDescr& sourceMenuDescr, TMenu& destMenu);REMAP='BodyNoLead'Merges the functional groups of this menu descriptor and another menu descriptor into an empty menu.See also REMAP='BodyNoLead'TMenuDesc::TGroup enumProtected data membersIdFORMAT="LINESPECIFIC"TResId Id;REMAP='BodyNoLead'Resource ID for the menu. The resource ID is passed in the constructors to identify the menu resource.GroupCountFORMAT="LINESPECIFIC"int GroupCount[NumGroups];REMAP='BodyNoLead'An array of values indicating the number of pop-up menus in each group on the menu bar.See alsoREMAP='BodyNoLead'TGroup enumModuleFORMAT="LINESPECIFIC"TModule* ModuleREMAP='BodyNoLead'Points to the ROLE='italic'TModule object that owns this ROLE='italic'TMenuDescr.Protected member functionsExtractGroupsFORMAT="LINESPECIFIC"bool ExtractGroups( );REMAP='BodyNoLead'Extracts the group counts from the loaded menu bar by counting the number of menus between separator items. After the group counts are extracted, the separators are removed.See also REMAP='BodyNoLead'TMenu, TOcMenuDescrTMenuItemEnabler classMOREINFO="NONE"framewin.hREMAP='Body'Derived from ROLE='italic'TCommandEnabler, TMenuItemEnabler is a command enabler for menu items. The functions in this class modify the text, check state, and appearance of a menu item.Public constructorConstructorFORMAT="LINESPECIFIC"TMenuItemEnabler(HMENU hMenu, uint id, HWND hWndReceiver, int position);REMAP='BodyNoLead'Constructs a ROLE='italic'TMenuItemEnabler with the specified command ID, for the menu item, message responder (ROLE='italic'hWndReceiver), and position on the menu.Protected data memberHMenuFORMAT="LINESPECIFIC"HMENU HMenu;REMAP='BodyNoLead'The menu that holds the item being enabled or disabled.PositionFORMAT="LINESPECIFIC"int Position;REMAP='BodyNoLead'The position of the menu item.Public member functionsEnableFORMAT="LINESPECIFIC"void Enable(bool enable);REMAP='BodyNoLead'Overrides ROLE='italic'TCommandEnable::Enable. Enables or disables the menu options that control the appearance of the corresponding menu item.GetMenuFORMAT="LINESPECIFIC"HMENU GetMenu( );REMAP='BodyNoLead'Returns the menu that holds the item being enabled or disabled.GetPositionFORMAT="LINESPECIFIC"int GetPosition( );REMAP='BodyNoLead'Returns the position of the menu item.SetTextFORMAT="LINESPECIFIC"void SetText(LPCSTR);REMAP='BodyNoLead'Overrides ROLE='italic'TCommandEnable::SetText. Changes the text of the corresponding menu item.SetCheckFORMAT="LINESPECIFIC"void SetCheck(int state);REMAP='BodyNoLead'Overrides ROLE='italic'TCommandEnable::SetCheck. Checks or unchecks the corresponding menu item. The state parameter reflects the menu item's state, which can be checked, unchecked, or indeterminate. TMessageBar classMOREINFO="NONE"messageb.hREMAP='BodyNoLead'Derived from ROLE='italic'TGadgetWindow, ROLE='italic'TMessageBar implements a message bar with one text gadget as wide as the window and no border. Normally positioned at the bottom of the window, the message bar uses the default gadget window font and draws a highlighted line at the top.Public constructorConstructorFORMAT="LINESPECIFIC"TMessageBar(TWindow* parent = 0, TFont* font = new TGadgetWindowFont, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TMessageBar object with the gadget window font. Sets IDW_STATUSBAR, ROLE='italic'HighlightLine to ROLE='bold'true, and ROLE='italic'TTextGadget's member ROLE='italic'WideAsPossible to ROLE='bold'true, making the text gadget as wide as the window.See alsoREMAP='BodyNoLead'TGadgetWindowFont::TGadgetWindowFontPublic member functionsSetHintTextFORMAT="LINESPECIFIC"virtual void SetHintText(const char* text);REMAP='BodyNoLead'Sets or clears the menu hint text for the message bar. Hint text is displayed over all other gadgets and is used for menu and control bar button help.SetTextFORMAT="LINESPECIFIC"void SetText(const char* text);REMAP='BodyNoLead'Forwards the message in the message bar to the text gadget for formatting.See alsoREMAP='BodyNoLead'TTextGadget::SetTextProtected data membersHighlightLineFORMAT="LINESPECIFIC"bool HighlightLine;REMAP='BodyNoLead'Is ROLE='bold'true if a highlighted line is drawn.HintTextFORMAT="LINESPECIFIC"char* HintText;REMAP='BodyNoLead'Stores the command hint text, if any, that's currently being displayed.Protected member functionsGetDesiredSizeFORMAT="LINESPECIFIC"void GetDesiredSize(TSize& rect);REMAP='BodyNoLead'Calls ROLE='italic'TGadgetWindow's GetDesiredSize to get the size of the message bar. Then, if a highlighting line is drawn, adjusts the size of the message bar.See alsoREMAP='BodyNoLead'TGadgetWindow::GetDesiredSizeGetInnerRectFORMAT="LINESPECIFIC"void GetInnerRect(TRect& rect);REMAP='BodyNoLead'ROLE='italic'GetInnerRect computes the rectangle inside the borders and margins of the message bar.See alsoREMAP='BodyNoLead'TGadgetWindow::GetInnerRectPaintGadgetsFORMAT="LINESPECIFIC"void PaintGadgets(TDC& dc, bool erase, TRect& rect);REMAP='BodyNoLead'Adjusts the message bar and paints a highlight line. Then, ROLE='italic'PaintGadgets either paints the hint text if any is set or calls ROLE='italic'TGadgetWindow::PaintGadgets to repaint each gadget.See alsoREMAP='BodyNoLead'TGadgetWindow::PaintGadgetsTMetaFileDC classMOREINFO="NONE"dc.hREMAP='Body'ROLE='italic'Derived from TDC, ROLE='italic'TMetaFileDC provides access to a device context with a metafile selected for drawing.Public constructor and destructorConstructor FORMAT="LINESPECIFIC"TMetaFileDC(const char far* filename = 0);REMAP='BodyNoLead'Creates a ROLE='italic'TMetaFileDC object with the data written to the named file if one is provided.DestructorFORMAT="LINESPECIFIC"~TMetaFileDC( );REMAP='BodyNoLead'Destroys this object.See alsoREMAP='BodyNoLead'TDC::TDCPublic member functionCloseFORMAT="LINESPECIFIC"HMETAFILE Close( );REMAP='BodyNoLead'Closes this metafile DC object. Sets the ROLE='italic'Handle data member to 0 and returns a pointer to a new ROLE='italic'TMetaFilePict object.See alsoREMAP='BodyNoLead'TMetaFilePictTMetaFilePict classMOREINFO="NONE"metafile.hREMAP='BodyNoLead'ROLE='italic'TMetaFilePict is a support class used with ROLE='italic'TMetaFileDC to simplify metafile operations, such as playing into a DC or storing data on the clipboard. ROLE='italic'TMetaFilePict automatically handles the conversion between a metafile and a metafilepict.Public constructors and destructorConstructorsFORMAT="LINESPECIFIC"TMetaFilePict(HMETAFILE handle, TAutoDelete autoDelete);REMAP='BodyNoLead'Creates a ROLE='italic'TMetaFilePict object using the given ROLE='italic'handle argument.FORMAT="LINESPECIFIC"TMetaFilePict(const TClipboard& clipboard);REMAP='BodyNoLead'Creates a ROLE='italic'TMetaFilePict object from the contents of the specified clipboard.FORMAT="LINESPECIFIC"TMetaFilePict(const char* filename);REMAP='BodyNoLead'Creates a ROLE='italic'TMetaFilePict object for the metafile stored in the named file.FORMAT="LINESPECIFIC"TMetaFilePict(uint size, void far* data);REMAP='BodyNoLead'Creates a ROLE='italic'TMetaFilePict object for the memory-based metafile specified by ROLE='italic'data. The ROLE='italic'data buffer must hold a metafile of length ROLE='italic'size bytes.FORMAT="LINESPECIFIC"TMetaFilePict(HGLOBAL data);REMAP='BodyNoLead'Creates a ROLE='italic'TMetaFilePict object for the memory-based metafile specified by ROLE='italic'data.The ROLE='italic'data global memory block must hold a metafile.FORMAT="LINESPECIFIC"TMetaFilePict(const TMetaFilePict& orig, const char far* fileName = 0);REMAP='BodyNoLead'Copies the metafile, ROLE='italic'orig, to the named file. If ROLE='italic'filename is 0 (the default), the metafile is copied to a memory-based metafile.DestructorFORMAT="LINESPECIFIC"~TMetaFilePict( )REMAP='BodyNoLead'Destroys this object.See alsoREMAP='BodyNoLead'TClipboardPublic member functionsCalcPlaySizeFORMAT="LINESPECIFIC"TSize CalcPlaySize(TDC& dc, const TSize& defSize) const;REMAP='BodyNoLead'Calculates the size of this metafile when played on a given DC.See alsoREMAP='BodyNoLead'TDC, TSizeGetMetaFileBitsFORMAT="LINESPECIFIC"HANDLE GetMetaFileBits( );REMAP='BodyNoLead'Returns a handle to a global memory block containing this metafile as a collection of bits. The memory block can be used to determine the size of the metafile or to save the metafile as a file.GetMetaFileBitsExFORMAT="LINESPECIFIC"uint32 GetMetaFileBitsEx(uint size, void* data);REMAP='BodyNoLead'32-bit only. Retrieves the contents of the metafile associated with this object and copies them (up to ROLE='italic'size bytes) to the ROLE='italic'data buffer. If ROLE='italic'data is nonzero and the call succeeds, the actual number of bytes copied is returned. If ROLE='italic'data is 0, a successful call returns the number of bytes required by the buffer. A return value of 0 always indicates a failure.HeightFORMAT="LINESPECIFIC"int Height( ) const;REMAP='BodyNoLead'Retrieves the height of this metafile.operator HMETAFILE( )FORMAT="LINESPECIFIC"operator HMETAFILE( ) const;REMAP='BodyNoLead'Type-conversion operator.operator <<FORMAT="LINESPECIFIC"TClipboard& operator <<(TClipboard& clipboard, TMetaFilePict& mfp);REMAP='BodyNoLead'Places the ROLE='italic'TMetaFilePict object onto the Clipboard. Returns a reference to the resulting Clipboard, allowing the usual chaining of << operations.See alsoREMAP='BodyNoLead'TClipboardMappingModeFORMAT="LINESPECIFIC"unsigned MappingMode( )const;REMAP='BodyNoLead'Retrieves the mapping mode of this metafile.PlayOntoFORMAT="LINESPECIFIC"bool PlayOnto(TDC& dc, const TSize& defSize) const;REMAP='BodyNoLead'Plays the metafile into a DC.See alsoREMAP='BodyNoLead'TDC, TSizeSetMappingModeFORMAT="LINESPECIFIC"void SetMappingMode(unsigned mm);REMAP='BodyNoLead'Sets the mapping mode of this metafile.SetSizeFORMAT="LINESPECIFIC"void SetSize(const TSize& size);REMAP='BodyNoLead'Sets the size of this metafile.SizeFORMAT="LINESPECIFIC"TSize Size( ) const;REMAP='BodyNoLead'Retrieves the size of this metafile.ToClipboardFORMAT="LINESPECIFIC"void ToClipboard(TClipboard& clipboard, unsigned mapMode = MM_ANISOTROPIC, const TSize& extent=TSize(0,0));REMAP='BodyNoLead'Puts this metafile onto the Clipboard.See alsoREMAP='BodyNoLead'TClipboard, TSizeWidthFORMAT="LINESPECIFIC"int Width( ) const;REMAP='BodyNoLead'Retrieves the width of this metafile.Protected data membersExtentFORMAT="LINESPECIFIC"TSize Extent;REMAP='BodyNoLead'Holds the extent or size of the metafile.MmFORMAT="LINESPECIFIC"int Mm;REMAP='BodyNoLead'Stores the mapping mode for the metafile.TModule classMOREINFO="NONE"module.hREMAP='BodyNoLead'ObjectWindows dynamic-link libraries (DLLs) construct an instance of ROLE='italic'TModule, which acts as an object-oriented stand-in for the library (DLL) module. ROLE='italic'TModule defines behavior shared by both library and application modules. ObjectWindows applications construct an instance of ROLE='italic'TApplication, derived from ROLE='italic'TModule. ROLE='italic'TModule's constructors manage loading and freeing of external DLLs, and the member functions provide support for default error handling.Public constructors and destructorConstructors FORMAT="LINESPECIFIC"TModule(const char far* name, HINSTANCE hInstance, const char far* cmdLine);REMAP='BodyNoLead'Constructs a ROLE='italic'TModule object for an ObjectWindows DLL or program from within ROLE='italic'LibMain or ROLE='italic'WinMain. Calls ROLE='italic'InitModule to initialize ROLE='italic'hInstance and ROLE='italic'cmdLine.FORMAT="LINESPECIFIC"TModule(const char far* name, HINSTANCE hInstance);REMAP='BodyNoLead'Constructs a ROLE='italic'TModule object that is an alias for an already loaded DLL or program with an available ROLE='italic'HInstance. When the ROLE='italic'TModule is destructed, the instance isn't automatically freed. ROLE='italic'name, which is optional, can be 0.FORMAT="LINESPECIFIC"TModule(const char far* name, bool shouldLoad = true);REMAP='BodyNoLead'Constructs a ROLE='italic'TModule object that is used as an alias for a DLL. If ROLE='italic'shouldLoad is ROLE='bold'true, ROLE='italic'TModule will automatically load and free the DLL. If ROLE='italic'shouldLoad is ROLE='bold'false, then the ROLE='italic'HInstance needs to be set later using ROLE='italic'InitModule.DestructorFORMAT="LINESPECIFIC"virtual ~TModule( );REMAP='BodyNoLead'Destroys a ROLE='italic'TModule object and deletes ROLE='italic'lpCmdLine.Public data memberslpCmdLineFORMAT="LINESPECIFIC"char far* lpCmdLine;REMAP='BodyNoLead'A null-terminated string, ROLE='italic'lpCmdLine points to a copy of the command-line arguments passed when the module is loaded. Notice that ROLE='italic'lpCmdLine is different from the WIN32 ROLE='italic'lpCmdLine in which the full path name of the module is appended to the command-line arguments. Whether running under WIN16 or WIN32, ObjectWindows ROLE='italic'TModule::lpCmdLine data member includes only the command-line arguments. Note that the run-time library global variables ROLE='bold'_argv*[] and ROLE='bold'_argc contain identical information for both WIN16 and WIN32 APIs, and that ROLE='bold'_argv[0] points to the full path name of the module.See alsoREMAP='BodyNoLead'TApplicationModuleFORMAT="LINESPECIFIC"extern TModule *Module;REMAP='BodyNoLead'Holds a global pointer to the current module.See alsoREMAP='BodyNoLead'TApplicationStatusFORMAT="LINESPECIFIC"TStatus Status;REMAP='BodyNoLead'ROLE='italic'Status contains the module status and is included for backward compatibility with ObjectWindows 1.0 applications. ObjectWindows 2.0 instead uses exceptions to handle errors. Setting ROLE='italic'Status to any nonzero value will throw a ROLE='italic'TXCompatibility exception.See alsoREMAP='BodyNoLead'TXCompatibility::MapStatusCodeToStringPublic member functionsAccessResourceFORMAT="LINESPECIFIC"int AccessResource(HRSRC hRsrc) const;REMAP='BodyNoLead'Used for 16-bit applications, ROLE='italic'AccessResource finds the specified resource. The preferred method is to use ROLE='italic'FindResource.See alsoREMAP='BodyNoLead'TModule::FindResourceAllocResourceFORMAT="LINESPECIFIC"HGLOBAL AllocResource(HRSRC hRsrc, uint32 size) const;REMAP='BodyNoLead'Used for 16-bit applications, ROLE='italic'AllocResource loads a resource into memory. The preferred method is to use ROLE='italic'LoadResource.See alsoREMAP='BodyNoLead'TModule::LoadResourceCopyCursorFORMAT="LINESPECIFIC"HCURSOR CopyCursor(HCURSOR hCursor) const;REMAP='BodyNoLead'Used for 16-bit applications, ROLE='italic'CopyCursor copies the cursor specified in ROLE='italic'hCursor. The return value is a handle to the duplicate cursor.See alsoREMAP='BodyNoLead'TIconCopyIconFORMAT="LINESPECIFIC"HICON CopyIcon(HICON hIcon) const;REMAP='BodyNoLead'Copies the icon specified in ROLE='italic'hIcon. The return value is a handle to the icon or 0 if unsuccessful. When no longer required, the duplicate icon should be destroyed.ErrorFORMAT="LINESPECIFIC"virtual void Error(int errorCode);REMAP='BodyNoLead'Processes errors identified by the error value supplied in ROLE='italic'errorCode. ROLE='italic'Error displays the error code in a message box and asks the user if it is OK to continue. If the user does continue, the program might or might not be able to recover. If the user does not continue, the program terminates. ROLE='italic'Error can be overridden with another kind of exception handler. This function is included only for backward compatibility with ObjectWindows 1.0. If you are writing ObjectWindows 2.0 applications, use the following ROLE='italic'Error function instead.FORMAT="LINESPECIFIC"virtual int Error(xmsg& x, unsigned captionResId, unsigned promptResId=0);REMAP='BodyNoLead'Called when fatal exceptions occur, ROLE='italic'Error takes an ROLE='italic'xmsg exception object, a resource ID for a message box caption, and an optional resource ID for a user prompt. By default, ROLE='italic'Error calls ROLE='italic'HandleGlobalException with the ROLE='italic'xmsg object and the strings obtained from the resources. An application (derived from ROLE='italic'TApplication which is derived from ROLE='italic'TModule) can reimplement this function to provide alternative behavior.REMAP='Body'A nonzero status code is returned to indicate that an error condition is to be propagated; a zero status indicates that the condition has been handled and that it is OK to proceed. ObjectWindows uses this status code inside its message loop to allow the program to resume. The global error handler (defined in except.h), which displays the message text, isFORMAT="LINESPECIFIC"int _OWLFUNC HandleGlobalException(xmsg& x, char* caption, char* canResume);ExecDialogFORMAT="LINESPECIFIC"int ExecDialog(TDialog* dialog);REMAP='BodyNoLead'Executes a dialog box. This function is included only for backward compatibility. Use ROLE='italic'TDialog::Execute instead.FindResourceFORMAT="LINESPECIFIC"HRSRC FindResource(TResId id, const char far* type) const;REMAP='BodyNoLead'Finds the resource indicated by ROLE='italic'id and ROLE='italic'type and, if successful, returns a handle to the specified resource. If the resource cannot be found, the return value is zero. The ROLE='italic'id and ROLE='italic'type parameters either point to zero-terminated strings or specify an integer value. ROLE='italic'type can be one of the standard resource types defined below.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Value of typeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'ResourceVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RT_ACCELERATORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Accelerator tableCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RT_BITMAPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BitmapCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RT_CURSORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CursorCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RT_DIALOG COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Dialog boxCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RT_FONTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FontCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RT_FONTDIRCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Font directoryCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RT_ICONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'IconCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RT_MENUCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MenuCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RT_RCDATACOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'User-defined resourceCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RT_STRINGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'StringSee alsoREMAP='BodyNoLead'TResIDGetClientHandleFORMAT="LINESPECIFIC"HWND GetClientHandle(HWND hWnd);REMAP='BodyNoLead'Gets the handle to the client window. This function is included only for backward compatibility with ObjectWindows 1.0.GetClassInfoFORMAT="LINESPECIFIC"bool GetClassInfo(const char far* name, WNDCLASS far* wndclass) const;REMAP='BodyNoLead'Used particularly for subclassing, ROLE='italic'GetClassInfo gets information about the window class specified in ROLE='italic'wndclass. ROLE='italic'name points to a 0-terminated string that contains the name of the class. ROLE='italic'wndclass points to the WNDCLASS structure that receives information about the class. If successful, ROLE='italic'GetClassInfo returns nonzero. If a matching class cannot be found, ROLE='italic'GetClassInfo returns zero.See alsoREMAP='BodyNoLead'WNDCLASS structGetInstanceFORMAT="LINESPECIFIC"HINSTANCE GetInstance( ) const;REMAP='BodyNoLead'Returns the instance handle for this module.GetInstanceDataFORMAT="LINESPECIFIC"int GetInstanceData(void* data, int len) const;REMAP='BodyNoLead'Used only for 16-bit applications, ROLE='italic'GetInstanceData gets data from an already running instance of an application. ROLE='italic'len is the size of the buffer.GetModuleFileNameFORMAT="LINESPECIFIC"int GetModuleFileName(char far* buff, int maxChars);REMAP='BodyNoLead'Returns the expanded file name (path and file name) of the file from which this module was loaded. ROLE='italic'buff points to a buffer that holds the path and file name. ROLE='italic'maxChars specifies the length of the buffer. The expanded file name is truncated if it exceeds this limit. ROLE='italic'GetModeFileName returns 0 if an error occurs.GetModuleUsageFORMAT="LINESPECIFIC"int GetModuleUsage( ) const;REMAP='BodyNoLead'Used only for 16-bit applications, ROLE='italic'GetModuleUsage returns the reference count of the module, if successful. The reference count is incremented by one each time a module is loaded, and decremented by one each time a module is freed.GetNameFORMAT="LINESPECIFIC"const char far* GetName( ) const;REMAP='BodyNoLead'Gets the name of the module.See alsoREMAP='BodyNoLead'::GetName (Windows API)GetParentObjectFORMAT="LINESPECIFIC"TWindow* GetParentObject(HWND hWndParent);REMAP='BodyNoLead'Gets a handle to the parent window. This function is included only for backward compatibility with ObjectWindows 1.0.See alsoREMAP='BodyNoLead'::GetParentObject (Windows API)GetProcAddressFORMAT="LINESPECIFIC"FARPROC GetProcAddress(const char far* fcnName) const;REMAP='BodyNoLead'Returns the entry-point address of the exported function ROLE='italic'fcnName if the function is found. Returns NULL otherwise.InitModuleFORMAT="LINESPECIFIC"void InitModule(HINSTANCE hInstance, const char far* cmdLine);REMAP='BodyNoLead'Performs any instance initialization necessary for the module. If the module cannot be created, a ROLE='italic'TXInvalidModule exception is thrown.IsLoadedFORMAT="LINESPECIFIC"bool IsLoaded( ) const;REMAP='BodyNoLead'Returns a nonzero value if the instance handle is loaded. Use this function primarily to ensure that a given instance is loaded.LoadAcceleratorsFORMAT="LINESPECIFIC"HACCEL LoadAccelerators(TResId id) const;REMAP='BodyNoLead'Loads the accelerator table resource specified by ROLE='italic'id. ROLE='italic'LoadAccelerators loads the table only if it has not been previously loaded. If the table has already been loaded, ROLE='italic'LoadAccelerators returns a handle to the loaded table.LoadBitmapFORMAT="LINESPECIFIC"HBITMAP LoadBitmap(TResId id) const;REMAP='BodyNoLead'Loads the bitmap resource specified by ROLE='italic'id. If the bitmap cannot be found, ROLE='italic'LoadBitmap returns 0.See alsoREMAP='BodyNoLead'TBitMap, TResID, ::LoadBitmap (Windows API), OBM_XXXX values (Windows API)LoadCursorFORMAT="LINESPECIFIC"HCURSOR LoadCursor(TResId id) constREMAP='BodyNoLead'Loads the cursor resource specified by ROLE='italic'id into memory and returns a handle to the cursor resource. If the cursor resource cannot be found or identifies a resource that is not a cursor, ROLE='italic'LoadCursor returns 0.See alsoREMAP='BodyNoLead'TCursor, TResID, ::LoadCursor (Windows API)LoadIconFORMAT="LINESPECIFIC"HICON LoadIcon(const char far* name) const;REMAP='BodyNoLead'Loads the icon resource indicated by the parameter, ROLE='italic'name, into memory. ROLE='italic'LoadIcon loads the icon only if it has not been previously loaded. If the icon resource cannot be found, ROLE='italic'LoadIcon returns 0.REMAP='Body'ROLE='italic'LoadIcon can be used to load a predefined Windows icon if ROLE='italic'name points to one of the Windows IDI_XXXX values.See alsoREMAP='BodyNoLead'TIcon, ::LoadIcon (Windows API), IDI_XXXX values (Windows API)LoadMenuFORMAT="LINESPECIFIC"HMENU LoadMenu(TResId id) const;REMAP='BodyNoLead'Loads the menu resource indicated by ROLE='italic'id into memory. If the menu resource cannot be found, ROLE='italic'LoadMenu returns 0.See alsoREMAP='BodyNoLead'TMenu, ::LoadMenu (Windows API)LoadResourceFORMAT="LINESPECIFIC"HGLOBAL LoadResource(HRSRC hRsrc) const;REMAP='BodyNoLead'Loads a resource indicated by ROLE='italic'hRsrc into memory and returns a handle to the memory block that contains the resource. If the resource cannot be found, the return value is 0. The ROLE='italic'hRsrc parameter must be a handle created by ROLE='italic'FindResource.REMAP='Body'ROLE='italic'LoadResource loads the resource into memory only if it has not been previously loaded. If the resource has already been loaded, ROLE='italic'LoadResource increments the reference count by one and returns a handle to the existing resource. The resource remains loaded until it is discarded.LoadStringFORMAT="LINESPECIFIC"int LoadString(uint id, char far* buff, int maxChars) const;REMAP='BodyNoLead'Loads a string resource identified by ROLE='italic'id into the buffer pointed to by ROLE='italic'buff. ROLE='italic'maxChars indicates the size of the buffer to which the zero-terminated string is copied. A string longer than the length specified in ROLE='italic'maxChars is truncated. The return value is the number of characters copied into the buffer, or 0 if the string resource does not exist.FORMAT="LINESPECIFIC"string LoadString(uint id) const;REMAP='BodyNoLead'Loads a string resource identified by ROLE='italic'id LowMemoryFORMAT="LINESPECIFIC"bool LowMemory( );REMAP='BodyNoLead'This function, which is obsolete, always returns 0.MakeWindowFORMAT="LINESPECIFIC"TWindow* MakeWindow(TWindow* win);REMAP='BodyNoLead'This function is obsolete. Use the ROLE='italic'TWindow::Create function instead.operator HINSTANCEFORMAT="LINESPECIFIC"operator HINSTANCE( ) const;REMAP='BodyNoLead'Returns the handle of the application or DLL module represented by this ROLE='italic'TModule. The handle must be supplied as a parameter to Windows when loading resources.operator ==FORMAT="LINESPECIFIC"bool operator ==(const TModule& other) const;REMAP='BodyNoLead'Returns ROLE='bold'true if this instance is equal to the other instance; otherwise, returns ROLE='bold'false.RestoreMemoryFORMAT="LINESPECIFIC"void RestoreMemory( );REMAP='BodyNoLead'This function, which is obsolete, restores memory.SetInstanceFORMAT="LINESPECIFIC"void SetInstance(HINSTANCE hInstance);REMAP='BodyNoLead'Sets the instance handle for this ROLE='italic'TModule. ROLE='italic'SetInstance is used for special cases in which the ROLE='italic'hInstance is not known when the module is constructed.SetNameFORMAT="LINESPECIFIC"void SetName(const char far* name);REMAP='BodyNoLead'Accessor function that sets the name of the module.SetResourceHandlerFORMAT="LINESPECIFIC"const RSRCHDLRPROC SetResourceHandler(const char far* type, RSRCHDLRPROC loadProc) const;REMAP='BodyNoLead'Used for 16-bit applications, ROLE='italic'SetResourceHandler installs a callback function that loads resources. ROLE='italic'type points to a resource type. ROLE='italic'loadProc is the address of the callback procedure. If successful, ROLE='italic'SetResourceHandler returns a pointer to a previously installed resource handler. If no resource handler has been installed, ROLE='italic'SetResourceHandler returns a pointer to the default handler. This function is useful for handling user-defined resource types.SizeofResourceFORMAT="LINESPECIFIC"uint32 SizeofResource(HRSRC hRsrc) const;REMAP='BodyNoLead'Returns the size, in bytes, of the resource indicated by ROLE='italic'hRscr. The resource must be a resource handle created by ROLE='italic'FindResource. If the resource cannot be found, the return value is 0.REMAP='Body'Because of alignment in the executable file, the returned size might be larger than the actual size of the resource. An application cannot rely on ROLE='italic'SizeofResource for the exact size of a resource.ValidWindowFORMAT="LINESPECIFIC"TWindow* ValidWindow(TWindow* win);REMAP='BodyNoLead'This function, which is obsolete, returns a handle to the valid window.Protected data membersHInstanceFORMAT="LINESPECIFIC"HINSTANCE HInstance;REMAP='BodyNoLead'Contains the executing instance of either the application or DLL module. The instance must be supplied as a parameter to Windows when loading resources.NameFORMAT="LINESPECIFIC"int GetModuleFileName(char far* buff, int maxChars);REMAP='BodyNoLead'Returns the expanded file name (path and file name) of the file from which this module was loaded. ROLE='italic'buff points to a buffer that holds the path and file name. ROLE='italic'maxChars specifies the length of the buffer. The expanded file name is truncated if it exceeds this limit. ROLE='italic'GetModeFileName returns 0 if an error occurs.TModule::TXInvalidModule classMOREINFO="NONE"module.hREMAP='BodyNoLead'A nested class, ROLE='italic'TXInvalidModule describes an exception that results from an invalid module. A window throws this exception if it can't create a valid ROLE='italic'TModule object.Public constructorConstructorFORMAT="LINESPECIFIC"TXInvalidModule( );REMAP='BodyNoLead'Constructs a ROLE='italic'TXInvalidModule object.Public member functionsCloneFORMAT="LINESPECIFIC"TXOwl* Clone( );REMAP='BodyNoLead'Copies the ROLE='italic'TXInvalidModule exception object.ThrowFORMAT="LINESPECIFIC"void Throw( );REMAP='BodyNoLead'Throws the ROLE='italic'TXInvalidModule exception object.TOleClientDC classMOREINFO="NONE"olewindo.hREMAP='Body'Derived from ROLE='italic'TClientDC, ROLE='italic'TOleClientDC is a helper class that translates between two different coordinate systems. For example, the window's logical points may be measured in HIMETRIC or ROLE='italic'twips whereas the actual ouput device's (the viewport) coordinates may be measured in pixels. Without the help of this class, you would need to create a client DC and then set up the window's logical coordinates (its ROLE='italic'origin) and its width and height (its ROLE='italic'extent) as well as the viewport's origin (measured in device coordinates) and extent. Instead, ROLE='italic'TOleClientDC performs these calculations for you by mapping logical points to device points and vice versa. REMAP='Body'ROLE='italic'TOleClientDC works with a ROLE='italic'TOleWindow object. By default, ROLE='italic'TOleClientDC takes care of both scaling (adjusting the extents of the window and the viewport) and scrolling (adjusting the origins of the window and the viewport). Public constructorConstructorFORMAT="LINESPECIFIC"TOleClientDC(TOleWindow& win, bool scale = true);REMAP='BodyNoLead'Constructs a ROLE='italic'TOleClientDC object . The parameter ROLE='italic'win references the window that ROLE='italic'TOleClientDC uses to create a DC. If the ROLE='italic'scale parameter is ROLE='bold'true, ROLE='italic'TOleClientDC takes care of scaling. However, if your application handles scaling, you can pass ROLE='italic'scale as ROLE='bold'false. REMAP='Body'Scrolling is controlled by the presence of a scroller (ROLE='italic'TScroller). ROLE='italic'TOleClientDC, by default, takes care of both scaling and scrolling.See alsoREMAP='BodyNoLead'TClientDC, TOleWindowTOleDocument classMOREINFO="NONE"oledoc.hREMAP='Body'Derived from ROLE='italic'TStorageDocument, ROLE='italic'TOleDocument implements the Document half of the Doc/View pair. That is, ROLE='italic'TOleDocument manages the document's data while the corresponding ROLE='italic'TOleView object determines how the data is displayed on the screen. Basically, ROLE='italic'TOleDocument is a ROLE='italic'TStorageDocument with a knowledge of ROLE='italic'TOcDocument through its pointer to ROLE='italic'TOcDocument.REMAP='Body'ROLE='italic'TOleDocument is responsible for creating compound documents (documents that can hold a variety of embedded objects from various source applications), closing documents, reading documents from storage (an area within a file where data is stored), and writing documents to storage. In the case of a server, the document consists of a single object. In the case of a container, the document can consist of one or more embedded objects (also referred to as ROLE='italic'parts). REMAP='Body'To accomplish these tasks, ROLE='italic'TOleDocument talks to the underlying ObjectComponents classes through the use of functions such as ROLE='italic'GetOcApp, ROLE='italic'GetOcDoc, and ROLE='italic'SetOcDoc.See also REMAP='Body'TOleView, TStorageDocument, TOcDocument, TOcRemViewPublic constructor and destructorConstructorFORMAT="LINESPECIFIC"TOleDocument(TDocument* parent = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TOleDocument object associated with the given parent ROLE='italic'TDocument object.DestructorFORMAT="LINESPECIFIC"~TOleDocument( );REMAP='BodyNoLead'Destroys the ROLE='italic'TOleDocument object. In the case of an OLE container, the compound file remains open until all of the views shut down.Public member functionsCanCloseFORMAT="LINESPECIFIC"virtual bool CanClose( );REMAP='BodyNoLead'Prepares the document for closing. Before closing the current document, checks to see if all child documents can be closed. If any child returns ROLE='bold'false, ROLE='italic'CanClose returns ROLE='bold'false and aborts the process. If all children return ROLE='bold'true, ROLE='italic'CanClose checks to see if the document has been changed. If so, it asks the user to save the document, discard any changes, or cancel the operation. If the document has not been changed, and all child documents return ROLE='bold'true, this ROLE='italic'CanClose function returns ROLE='bold'true, thus indicating that the document can be closed. REMAP='Body'ROLE='italic'CanClose also calls ROLE='italic'ReleaseDoc on its associated ObjectComponents document to make sure that all the embedded objects are closed properly.See alsoREMAP='Body'TOleDocument::ReleaseDocCloseFORMAT="LINESPECIFIC"bool Close();REMAP='Body'Ensures that the IStorage is released properly and disconnects any active server in the document. A compound file must be closed before it is reopenedSee alsoREMAP='Body'TTOleDocument::OpenCommitFORMAT="LINESPECIFIC"bool Commit(bool force);REMAP='BodyNoLead'Commits the current document's data to storage. If ROLE='italic'force is ROLE='bold'true and the data is not dirty, all data is written to storage and ROLE='italic'Commit returns ROLE='bold'true. If ROLE='italic'force is ROLE='bold'false, the data is written only if it is dirty.REMAP='Body'The data has been changed since the last save operation.See alsoREMAP='Body'TTOleDocument::RevertGetNewStorageFORMAT="LINESPECIFIC"virtual IStorage*GetNewStorage( );REMAP='BodyNoLead'Typically used in a SaveAs menu selection, ROLE='italic'GetNewStorage gets a new storage for the document.REMAP='Body' If the document's path changes, for example, use this function to create a new storage. GetOcAppFORMAT="LINESPECIFIC"TOcApp* GetOcApp( );REMAP='BodyNoLead'Returns the ObjectComponents application associated with this ROLE='italic'TOleDocument object. See alsoREMAP='Body'TOcAppGetOcDocFORMAT="LINESPECIFIC"TOcDocument*GetOcDoc( );REMAP='BodyNoLead'Returns the ObjectComponents document associated with this ROLE='italic'TOleDocument object. See alsoREMAP='Body'TOleDocument::SetOcDocInitDocFORMAT="LINESPECIFIC"virtual bool InitDoc( );REMAP='BodyNoLead'Overrides ROLE='italic'TDocument's ROLE='italic'InitDoc function and creates or opens a compound file so that there is an ROLE='italic'IStorage associated with this document's embedded objects. Uses a ROLE='italic'TOcDocument object to perform the the actual interaction with the OLE ROLE='italic'IStorage and ROLE='italic'IStream interfaces, which are ultimately responsible for establishing the relationship between a compound file and its storage.See alsoREMAP='Body'TOcDocument, TDocument::InitDocOpenFORMAT="LINESPECIFIC"bool Open(int mode, const char far* path);REMAP='BodyNoLead'Loads the embedded objects, if any, using the path specified in ROLE='italic'path. ROLE='italic'mode is a combination of bits that specify how the embedded objects are opened (for example, read only, read/write, and so on). See alsoREMAP='Body'TTOleDocument::ClosePathChangedFORMAT="LINESPECIFIC"bool PathChanged( );REMAP='BodyNoLead'Checks if the current document's path is the same as the ROLE='italic'TOcDocument's path. If the paths are not the same, ROLE='italic'PathChanged returns ROLE='bold'true.See alsoREMAP='Body'TOcDocumentPreOpenFORMAT="LINESPECIFIC"virtual void PreOpen( );REMAP='BodyNoLead'Before the document is actually opened, PreOpen gives the derived class a chance to perform a particular operation, for example, setting a different open mode for the compound document.See alsoREMAP='Body'dtxxxx document constantsReadFORMAT="LINESPECIFIC"virtual bool Read( );REMAP='BodyNoLead'Loads the embedded objects from the compound file. A container should call this function when it wants to loads any embedded objects.See alsoREMAP='Body'TOleDocument::WriteReleaseDocFORMAT="LINESPECIFIC"virtual bool ReleaseDoc( );REMAP='BodyNoLead'Releases the ObjectComponents document when the server is finished using the document.See alsoREMAP='Body'TOleDocument::CanCloseRevertFORMAT="LINESPECIFIC"bool Revert (bool clear);REMAP='Body'Performs the reverse of Commit. Cancels any changes made to the document since the last time the document was saved to storage.See alsoREMAP='Body'TTOleDocument::CommitSetOcDocFORMAT="LINESPECIFIC"void SetOcDoc(TOcDocument* doc);REMAP='BodyNoLead'Sets the ObjectComponents document associated with this ROLE='italic'TOleDocument object.See alsoREMAP='Body'TOleDocument::GetOcDocSetStorageFORMAT="LINESPECIFIC"virtual bool SetStorage(IStorage* stg);REMAP='BodyNoLead'Attaches the ROLE='italic'IStorage pointer (ROLE='italic'stg) to this document. If successful, ROLE='italic'SetStorage returns ROLE='bold'true.REMAP='Body'An OLE storage interface that ObjectComponents implements when it needs to assign storage to a documentWriteFORMAT="LINESPECIFIC"virtual bool Write( );REMAP='BodyNoLead'Saves the embedded objects to the compound file. A container should call this function when it wants to save its embedded objects to storage.See alsoREMAP='Body'TOleDocument::ReadTOleFactoryBase<> classMOREINFO="NONE"olefacto.hREMAP='BodyNoLead'A template class, ROLE='italic'TOleFactoryBase<> creates callback code for ObjectWindows classes. The main purpose of the factory code is to provide a callback function, ROLE='italic'Create, that ObjectComponents calls to create objects.REMAP='Body'Just as a recipe consists of a list of instructions about how to make a particular kind of food, a template, such as ROLE='italic'TOleFactoryBase<>, contains instructions about how to make an object, in this case, a factory object. ROLE='italic'TOleFactoryBase<> includes two public member functions. The three additional functions are passed as template arguments. Although these template arguments actually belong to the class that is instantiated when you fill in the arguments to ROLE='italic'TOleFactoryBase<>, they are described here for convenience.REMAP='Body'Use ROLE='italic'TOleFactoryBase<> to manufacture objects in general, whether or not they are embedded, OLE-enabled, or use the Doc/View model. These objects might or might not be connected to OLE. REMAP='Body'The callouts are supplied through the arguments passed to the template class. The factory base class takes three template parameters: the application type, a set of functions to create the object, and a set of functions to create an automation object. Depending on the arguments passed, you can make the following OLE-enabled components:MARK='bullet'REMAP='Bullet1'Doc/View components that are automatedREMAP='Bullet1'Doc/View components that are not automatedREMAP='Bullet1'Non-Doc/View components that are automatedREMAP='Bullet1'Non-Doc/View components that are not automatedREMAP='Body'ObjectWindows provides a standard implementation for object creation and automation. Factory Template Classes gives an overview of these classes.REMAP='Body'By using ROLE='italic'TOleFactoryBase<> to obtain an OLE interface for your application, you can make objects that are accessible to OLE. That is, ROLE='italic'TOleFactoryBase<> handles any relationships with ROLE='italic'IUnknown, a standard OLE interface. See also REMAP='BodyNoLead'TComponentFactory typedef, TOcRegistrar class, TAutoFactory classPublic member functionsTComponentFactoryFORMAT="LINESPECIFIC"operator TComponentFactory( );REMAP='BodyNoLead'Converts the object into a pointer to the factory. ObjectComponents uses this pointer to create the object.CreateFORMAT="LINESPECIFIC"static IUnknown* Create(IUnknown* outer, uint32 options, uint32 id);REMAP='BodyNoLead'A ROLE='italic'TComponentFactory callback function that creates or destroys the application or creates objects. If an application object does not already exist, ROLE='italic'Create creates a new one. The ROLE='italic'outer argument points to the OLE2 ROLE='italic'IUnknown interface with which this object aggregates itself. If ROLE='italic'outer is 0, If ROLE='italic'outer is 0, the object will become an independent object.REMAP='Body'The ROLE='italic'options argument indicates the application's mode while it is running. The values for ROLE='italic'options are either set from the command line or set by ObjectComponents. They are passed in by the ROLE='italic'Registrar to this callback. The application looks at these flags in order to know how to operate, and the factory callback looks at them in order to know what to do. For example, a value of ROLE='italic'amExeMode indicates that the server is running as an .EXE either because it was built as an .EXE or because it is a .DLL that was launched by an .EXE stub and is now running as an executable program. The ROLE='italic'TOcAppModeROLE='italic' enum description shows the possible values for the ROLE='italic'options argument. REMAP='Body'If the application already exists and the object ID (ROLE='italic'id) equals 0, ROLE='italic'Create returns the application's OLE interface. Otherwise, it calls ROLE='italic'OCInit to create a new ROLE='italic'TOcApp and register the options from ROLE='italic'TOcAppMode enum, which contains OLE-related flags used in the application's command line. (These flags tell the application whether it has been run as a server, whether it needs to register itself, and so on.) If a component ID was passed, that becomes the component; otherwise, ROLE='italic'Create runs the application itself based on the values of the ROLE='italic'TOcAppMode enum and returns the OLE interface.See also REMAP='BodyNoLead'TOleFactoryBase::DestroyApp, TOcAppMode enumTemplate argumentsCreateAppFORMAT="LINESPECIFIC"static T* CreateApp(options);REMAP='BodyNoLead'Creates a new application. By default, it creates a new application of template type ROLE='italic'T with no arguments. This is a static function that you can override in your application.REMAP='Body'The ROLE='italic'options are those passed to the factory. They can be one of the ROLE='italic'TOcAppMode enum values (for example, ROLE='italic'amRun, ROLE='italic'amEmbedding, and so on) that indicate the application's mode when running and indicate the options to the factory.See also REMAP='BodyNoLead'TOleFactoryBase::DestroyAppCreateObjectFORMAT="LINESPECIFIC"static IUnknown* CreateObject(TApplication* app, TDocTemplate* tpl, IUnknown* outer);REMAP='BodyNoLead'Creates an object using the document template referred to in ROLE='italic'tpl and the application specified in ROLE='italic'app. The ROLE='italic'outer parameter refers to the controlling ROLE='italic'IUnknown interface of the object with which this object is going to be aggregated. If ROLE='italic'outer is 0, the object is an independent object.REMAP='Body'You can override this static function to create your own object at run time.See alsoREMAP='BodyNoLead'TOleFactoryBase::DestroyAppREMAP='Body'TOcView classDestroyAppFORMAT="LINESPECIFIC"static void DestroyApp(T* app);REMAP='BodyNoLead'Destroys the application (ROLE='italic'app) by unregistering the object and deleting it.See alsoREMAP='BodyNoLead'TOleFactoryBase::CreateAppTOleFrame classMOREINFO="NONE"oleframe.hREMAP='BodyNoLead'Derived from ROLE='italic'TDecoratedFrame, ROLE='italic'TOleFrame provides user-interface support for the main window of a Single Document Interface (SDI) OLE application. Because it inherits ROLE='italic'TDecoratedFrame's functionality, ROLE='italic'TOleFrame is able to position decorations, such as toolbars, around the client window. Because of its OLE frame functionality, you will always want to create a ROLE='italic'TOleFrame as a main frame. For example, ROLE='italic'TOleFrame supports basic container operations, such asMARK='bullet'REMAP='Bullet1'Creating space in a container's frame window that the server has requestedREMAP='Bullet1'Merging the container's menu and the server's menuREMAP='Bullet1'Processing accelerators and other messages from the server's message queueREMAP='Body'In addition to supporting the customary frame window operations and event-handling, ROLE='italic'TOleFrame provides functionality that supports OLE 2 menu merging for pop-up menus. REMAP='Body'Through the use of the EvOcXxxx event-handling member functions, ROLE='italic'TOleFrame responds to ObjectComponents messages sent to both the server and the container applications. Although most of the messages and functions provide container support, one message, ROLE='italic'EvOcAppShutDown, is server related, and one function, ROLE='italic'GetRemViewBucket, supplies server support. Whether ROLE='italic'TOleFrame functions as a container or a server, it always has a pointer to a corresponding ROLE='italic'TOcApp.See alsoREMAP='BodyNoLead'TOcApp, TDecoratedFramePublic constructor and destructorConstructor FORMAT="LINESPECIFIC"TOleFrame(const char far* title, TWindow* clientWnd, bool trackMenuSelection = false, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TOleFrame object with the specified caption for the frame window (ROLE='italic'title), the client window (ROLE='italic'clientWnd), and module instance. The ROLE='italic'trackMenuSelection parameter indicates whether or not the frame window should track menu selections (that is, display hint text in the status bar of the window when a menu item is highlighted).DestructorFORMAT="LINESPECIFIC"~TOleFrame( );REMAP='BodyNoLead'Destroys a ROLE='italic'TOleFrame object.Public member functionsAddUserFormatNameFORMAT="LINESPECIFIC"void AddUserFormatName(char far* name, char far* resultName, char far* id);REMAP='BodyNoLead'Adds user defined formats and the corresponding names to the list of Clipboard formats. Use this function if you want to associate a clipboard data format (ROLE='italic'name) with the description of the data format as it appears to users in the Help text of the Paste Special dialog box (ROLE='italic'resultName). To use a standard Clipboard format, set the ROLE='italic'id parameter to an appropriate constant (for example, CF_TEXT). Otherwise, if the format is identified by a string, pass the string as the name and omit the ID.See alsoREMAP='BodyNoLead'TOcApp::AddUserFormatNameGetOcAppFORMAT="LINESPECIFIC"TOcApp* GetOcApp( );REMAP='BodyNoLead'Gets the ObjectComponents application associated with this frame window.See alsoREMAP='BodyNoLead'TOcApp, TOleFrame::SetOcAppGetRemViewBucketFORMAT="LINESPECIFIC"TWindow* GetRemViewBucket( );REMAP='BodyNoLead'Returns a pointer to the OLE frame's hidden helper window that holds all inactive server windows. It can also hold in-place tool bars and ROLE='italic'TOleView windows.SetOcAppFORMAT="LINESPECIFIC"void SetOcApp(TOcApp* app);REMAP='BodyNoLead'Sets the ObjectComponents application associated with this frame window to the applications specified in the ROLE='italic'app parameter.See alsoREMAP='BodyNoLead'TOcApp, TOleFrame::GetOcAppProtected member functionsCanCloseFORMAT="LINESPECIFIC"bool CanClose( );REMAP='BodyNoLead'Returns ROLE='bold'true if the frame window can be closed. Tests to see if both the ROLE='italic'TOcApp and all child windows can close. If the application and all child windows return ROLE='bold'true, ROLE='italic'CanClose closes the frame window.See alsoREMAP='BodyNoLead'TOcAppCleanupWindowFORMAT="LINESPECIFIC"void CleanupWindow( );REMAP='BodyNoLead'Performs normal window cleanup of any HWND-related resources. For DLL servers, ROLE='italic'CleanupWindow destroys the idle timer.See alsoREMAP='BodyNoLead'TWindow::CleanupWindow, TOleFrame::EvTimerDestroyFORMAT="LINESPECIFIC"void Destroy(int retVal);REMAP='BodyNoLead'Checks with all the connected servers to ensure that they can close before destroying the frame window. If the user closes the application with objects still embedded, ROLE='italic'Destroy hides the frame window instead of destroying it. DestroyStashedPopupsFORMAT="LINESPECIFIC"void DestroyStashedPopups( );REMAP='BodyNoLead'Destroys the previously stored shared pop-up menus. Checks to see if ROLE='italic'StashCount is 0 before destroying the menus.See alsoREMAP='BodyNoLead'TOleFrame::StashContainerPopups, TOleFrame::StashCountEvActivateAppFORMAT="LINESPECIFIC"void EvActivateApp(bool active, HTASK hTask);REMAP='BodyNoLead'Responds to a WM_ACTIVATEAPP message sent when a window is activated or deactivated. If active is ROLE='bold'true, the window is being activated.REMAP='Body'This message is sent to the top-level window being deactivated before it is sent to the top-level window being activated. ROLE='italic'hTask is a handle to the current process. REMAP='Body'This event is forwarded to the ROLE='italic'TOcApp object, which activates an in-place server if one exists.See alsoREMAP='BodyNoLead'TOcAppEvOcAppBorderSpaceReqFORMAT="LINESPECIFIC"bool EvOcAppBorderSpaceReq(TRect far* rect);REMAP='BodyNoLead'Responds to an OC_APPBORDERSPACEREQ message sent to a container. The response is to ask the container if it can give border space in its frame window to the server.See alsoREMAP='BodyNoLead'TOcApp::BorderSpaceSetEvOcAppBorderSpaceSetFORMAT="LINESPECIFIC"bool EvOcAppBorderSpaceSet(TRect far* rect);REMAP='BodyNoLead'Responds to an OC_APPBORDERSPACESET message by making room in the container's frame window for the border space that the server has requested.See alsoREMAP='BodyNoLead'TOcApp::BorderSpaceReqEvOcAppDialogHelpFORMAT="LINESPECIFIC"void EvOcAppDialogHelp(TOcDialogHelp far& dh);REMAP='BodyNoLead'Responds to an OC_APPDIALOGHELP message. The ROLE='italic'dh parameter refers to one of the ROLE='italic'TOcDialogHelp enum constants that indicate the kind of dialog box the user has open. For example, ROLE='italic'dhBrowseLinks indicates that the Links dialog box is open. The ROLE='italic'TOcDialogHelp enum lists the help constants and their dialog box equivalents. See alsoREMAP='BodyNoLead'TOcDialogHelp enumEvOcAppFrameRectFORMAT="LINESPECIFIC"bool EvOcAppFrameRect(TRect far* rect);REMAP='BodyNoLead'Responds to an OC_APPFRAMERECT message sent to a container. The response is to get the coordinates of the client area rectangle of the application's main window.EvOcAppInsMenusFORMAT="LINESPECIFIC"bool EvOcAppInsMenus(TOcMenuDescr far& sharedMenu);REMAP='BodyNoLead'Responds to an OC_APPINSMENUS message by merging the container's menu into the shared menu. The ROLE='italic'sharedMenu parameter refers to this merged menu.EvOcAppMenusFORMAT="LINESPECIFIC"bool EvOcAppMenus(TOcMenuDescr far& md);REMAP='BodyNoLead'Responds to an OC_OCAPPMENUS sent to the container. The response is to install a merged menu bar.EvOcAppProcessMsgFORMAT="LINESPECIFIC"bool EvOcAppProcessMsg(MSG far* msg);REMAP='BodyNoLead'Responds to an OC_APPROCESSMSG message sent to the container asking the server to process accelerators and other messages from the container's message queue.EvOcAppRestoreUIFORMAT="LINESPECIFIC"void EvOcAppRestoreUI( );REMAP='BodyNoLead'Responds to an OC_APPRESTOREUI message by restoring the container's normal menu and borders because in-place editing has finished.EvOcAppShutdownFORMAT="LINESPECIFIC"bool EvOcAppShutdown( );REMAP='BodyNoLead'Responds to an OC_APPSHUTDOWN message indicating that the last embedded object has been closed. The response is to shut down the server. EvOcAppStatusTextFORMAT="LINESPECIFIC"void EvOcAppStatusText(const char far*);REMAP='BodyNoLead'Responds to an OC_APPSTATUSTEXT message by displaying text from the server on this container's status bar.EvOcEventFORMAT="LINESPECIFIC"LRESULT EvOcEvent(WPARAM wParam, LPARAM lParam);REMAP='BodyNoLead'Responds to a WM_OCEVENT message and subdispatches it to one of the EvOcXxxx event-handling functions based on the value of ROLE='italic'wParam. WM_OCEVENT messages are sent by ObjectComponents when it needs to communicate with an OLE-generated event; for example, if a server wants to display toolbars.EvSizeFORMAT="LINESPECIFIC"void EvSize(uint sizeType, TSize& size);REMAP='BodyNoLead'Responds to an EV_WM_SIZE message indicating a change in the frame window's size and forwards this information to the MOREINFO="NONE"TOcApp, which then notifies any in-place server. The server uses this information to change the size of its tool bar, if necessary.See alsoREMAP='BodyNoLead'TOcApp::EvActivateEvTimerFORMAT="LINESPECIFIC"void EvTimer(uint timerId);REMAP='BodyNoLead'If this is a .DLL server, ROLE='italic'EvTimer responds to a timer message by running an idle loop if the message queue is empty.See alsoREMAP='BodyNoLead'TOleFrame::CleanupWindowSetupWindowFORMAT="LINESPECIFIC"void SetupWindow( );REMAP='BodyNoLead'Associates the ObjectComponents application with the window's HWND so that the ROLE='italic'TOcApp and the window can communicate. Prepares a place to insert the server's toolbars when in-place editing of the embedded object occurs.See alsoREMAP='BodyNoLead'TOcAppStashContainerPopupsFORMAT="LINESPECIFIC"void StashContainerPopups(const TMenuDescr& shMenuDescr);REMAP='BodyNoLead'Stores a local copy of the pop-up menus so they can be used for menu merging and then destroyed later by ROLE='italic'DestroyStashedPopups. ROLE='italic'shMenuDescr is the shared menu descriptor to be stored. Increments ROLE='italic'StashCount each time the pop-up menus are saved.See alsoREMAP='BodyNoLead'TOleFrame::DestroyStashedPopups, TMenuDescrProtected data membersHoldMenuFORMAT="LINESPECIFIC"HMENU HoldMenu;REMAP='BodyNoLead'Holds the handle to the container's previously saved copy of the menu.OcAppFORMAT="LINESPECIFIC"TOcApp* OcApp;REMAP='BodyNoLead'Points to the ObjectComponents application associated with this frame window.See alsoREMAP='BodyNoLead'TOcAppStashCountFORMAT="LINESPECIFIC"int StashCount;REMAP='BodyNoLead'Holds the number of menu bars that have been stored. This number indicates how many active in-place editing sessions you have open. See alsoREMAP='BodyNoLead'StashContainerPopups, TOleFrame::DestroyStashedPopupsStashedContainerPopupsFORMAT="LINESPECIFIC"TMenu StashedContainerPopups;REMAP='BodyNoLead'Holds the stored, shared popup menus.See alsoREMAP='BodyNoLead'StashContainerPopups, TOleFrame::StashCountResponse table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='171*'COLNAME='C2' COLWIDTH='106*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvSizeCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_ACTIVATEAPPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvActivateAppCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_MESSAGE(WM_OCEVENT, EvOcEvent)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcEventCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPINSMENUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcAppInsMenusCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPMENUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcAppMenusCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPROCESSMSGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcAppProcessMsgCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPFRAMERECTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcAppFrameRectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPBORDERSPACEREQCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcAppBorderspaceReqCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPBORDERSPACESETCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcAppBorderSpaceSetCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPSTATUSTEXTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcAppStatusTextCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPRESTOREUICOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcAppRestoreUICOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPSHUTDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcAppShutDownTOleMDIFrame classMOREINFO="NONE"olemdifr.hREMAP='BodyNoLead'Derived from ROLE='italic'TMDIFrame and ROLE='italic'TOleFrame, ROLE='italic'TOleMDIFrame provides OLE user-interface support for the main window of a Multiple Document Interface (MDI) application. ROLE='italic'TOleMDIFrame also talks directly to the ObjectComponents classes through the use of a pointer to the ROLE='italic'OcApp object. REMAP='Body'ROLE='italic' TOleMDIFrame inherits from ROLE='italic'TMDIFrame functionality that supports the use of MDI frame windows designed to serve as the main windows of an MDI-compliant application. From ROLE='italic'TOleFrame, ROLE='italic'TOleMDIFrame inherits decorated frame window functionality that supports the addition of decorations (such as toolbars and status lines) to the frame window. ROLE='italic'TOleMDIFrame also inherits the ability toMARK='bullet'REMAP='Bullet1'Create space that the server has requested in a container's frame window REMAP='Bullet1'Merge the container's menu into the server's menuREMAP='Bullet1'Process accelerators and other messages from the server's message queueREMAP='Bullet1'Support OLE 2 menu merging for pop-up menusREMAP='Body'ROLE='italic'TOleMDIFrame also inherits from ROLE='italic'TOleFrame the ability to talk directly to the ObjectComponents classes through the use of a pointer to the ROLE='italic'OcApp object. REMAP='Body'See Step 14 of the ObjectWindows tutorial for an example of a program that uses ROLE='italic'TOleMDIFrame to create an OLE-enabled decorated MDI frame window.See alsoREMAP='BodyNoLead'TMDIFrame, TDecoratedMDIFrame, TOleFrame, TOleFrame::SetOcAppPublic constructor and destructorConstructorFORMAT="LINESPECIFIC"TOleMDIFrame(const char far* title, TResIdmenuResId, TMDIClient& clientWnd = *new TMDIClient, bool trackMenuSelection = false, TModule*module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TOleMDIFrame object with the indicated title, menu resource ID, client window, and module instance. By default, because ROLE='italic'trackMenuSelection is false, menu hint text is not displayed. (These parameters coincide with those of ROLE='italic'TMDIFrame's constructor.) DestructorFORMAT="LINESPECIFIC"~TOleMDIFrame( );REMAP='BodyNoLead'Destroys the OLE MDI frame window object.See alsoREMAP='BodyNoLead'TDecoratedMDIFrameProtected member functionsDefWindowProcFORMAT="LINESPECIFIC"LRESULT DefWindowProc(uint message, WPARAM wParam, LPARAM lParam);REMAP='BodyNoLead'Allows default processing for all messages except for a resizing message concerning the frame window, in which case, ROLE='italic'DefWindowProc returns nothing.EvActivateAppFORMAT="LINESPECIFIC"void EvActivateApp(bool active, HTASK hTask);REMAP='BodyNoLead'Responds to a message indicating that the frame window of this application (ROLE='italic'hTask) is going to be either activated (ROLE='italic'active is ROLE='bold'true) or deactivated (ROLE='italic'active is ROLE='bold'false), and forwards this information to the ROLE='italic'TOcApp object.See alsoREMAP='BodyNoLead'TOcAppEvOcAppInsMenusFORMAT="LINESPECIFIC"bool EvOcAppInsMenus(TOcMenuDescr far*);REMAP='BodyNoLead'Inserts menus into a provided menu bar, or merges them with a child window and servers. To do this, ROLE='italic'EvOcAppInsMenus creates a temporary composite menu for the frame and MDI child windows, then copies the shared menu widths to the ObjectComponents structure. It saves the container popups so they can be destroyed later.Response table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='102*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_ACTIVATEAPPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvActivateAppCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPINSMENUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvOcAppInsMenusTOleView classMOREINFO="NONE"oleview.hREMAP='BodyNoLead'Derived from ROLE='italic'TWindowView and ROLE='italic'TView, ROLE='italic'TOleView supports the View half of the Doc/View pair and creates a window with a view that can display an associated document. Documents use views to display themselves to a user. Regardless of whether a view belongs to a server or a container, ROLE='italic'TOleView sets up a corresponding ROLE='italic'TOcDocument object (an entire compound document).REMAP='Body'In the case of an OLE-enabled container application, ROLE='italic'view refers to the window where the container application draws the compound document, which may consist of one or more linked and embedded objects. To display these objects in different formats, a container can be associated with more than one view. Similarly, to display the data properly, each embedded object can also have its own view. Each container view creates a corresponding ObjectComponents ROLE='italic'TOcViewROLE='italic' object. REMAP='Body'If the view belongs to an OLE-enabled server application, ROLE='italic'TOleView creates a remote view on the server's document (a ROLE='italic'TOcRemView object). TOleView takes care of transmitting messages from the server to the container, specifically in the case of merging menus and redrawing embedded objects. TOleView supports merging the server's and the container's pop-up menu items to form a composite menu. Because it knows the dimensions of the server's view, TOleView is responsible for telling the container how to redraw the embedded object.REMAP='Body'Similarly to ROLE='italic'TView, ROLE='italic'TOleView supports the creation of views and provides several event handling functions that allow the view to query, commit, and close views. ROLE='italic'TOleView also manages the writing to storage of documents that belong to a container or a server.See alsoREMAP='BodyNoLead'TOcDocument, TOcView, TOcRemView, TOleWindow, TViewPublic constructor and destructorConstructorFORMAT="LINESPECIFIC"TOleView(TDocument& doc, TWindow* parent = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TOleView object associated with the given document object (ROLE='italic'doc) and parent window (ROLE='italic'parent).DestructorFORMAT="LINESPECIFIC"~TOleView( );REMAP='BodyNoLead'Destroys the ROLE='italic'TOleView object and detaches the view from the associated document.Public member functionsGetViewnameFORMAT="LINESPECIFIC"const char far* GetViewName( );REMAP='BodyNoLead'Overrides ROLE='italic'TView's virtual ROLE='italic'GetViewName function and returns the name of the class (ROLE='italic'TOleView).See alsoREMAP='BodyNoLead'TView::GetViewNameGetWindowFORMAT="LINESPECIFIC"TWindow* GetWindow( );REMAP='BodyNoLead'Overrides TView's virtual ROLE='italic'GetWindow function and returns the ROLE='italic'TWindow instance associated with this view.See alsoREMAP='BodyNoLead'TView::GetWindowSetDocTitleFORMAT="LINESPECIFIC"bool SetDocTitle(const char far* docname, int index);REMAP='BodyNoLead'Overrides ROLE='italic'TView's and ROLE='italic'TWindow's virtual ROLE='italic'SetDocTitle function and stores the title of the document associated with this view.See alsoREMAP='BodyNoLead'TView::SetdocTitleStaticNameFORMAT="LINESPECIFIC"static const char far* StaticName( );REMAP='BodyNoLead'Returns the constant string "ROLE='italic'Ole View" that is displayed in the user interface selection box.See alsoREMAP='BodyNoLead'TListView::StaticNameProtected member functionsCanCloseFORMAT="LINESPECIFIC"bool CanClose( );REMAP='BodyNoLead'A view uses this function to verify whether or not it can shut down. If this is a server's view window , ROLE='italic'CanClose checks to see if any open-editing. is occurring on any of the embedded objects in the frame window. If so, ROLE='italic'CanClose closes this open-editing session by disconnecting the embedded object from its server. Then, hides the server's frame window and returns ROLE='bold'true when appropriate. If this is a container, ROLE='italic'CanClose queries all documents and views and returns ROLE='bold'true when all documents and views can be closed.REMAP='Body'Unlike in-place editing, which takes place in the container's window, open-editing occurs in the server's frame window.CreateOcViewFORMAT="LINESPECIFIC"TOcView* CreateOCView(TDocTemplate* tpl, bool isEmbedded, IUnknown* outer);REMAP='BodyNoLead'Creates an ObjectComponents view associated with the embedded object. Associates the view with the document template specified in ROLE='italic'tpl. The ROLE='italic'isEmbedded parameter is true if the view is an embedded object. The ROLE='italic'outer parameter refers to the ROLE='italic'IUnknown interface with which the view will aggregate itself.EvOcViewAttachWindowFORMAT="LINESPECIFIC"bool EvOcViewAttachWindow(bool attach);REMAP='BodyNoLead'Attaches this view to its ObjectWindows parent window so the embedded object can be either opened and edited or deactivated. To attach a view to an embedded object, set the ROLE='italic'attach parameter to true. To detatch the embedded object, set the ROLE='italic'attach parameter to false.EvOcViewCloseFORMAT="LINESPECIFIC"bool EvOcViewClose( );REMAP='BodyNoLead'Asks the server to close the view associated with this document. Tests to see if the document has been changed since it was last saved. Returns ROLE='bold'true if the document and its associated view are closed.See alsoREMAP='BodyNoLead'TOleView::EvOcViewSavePartEvOcViewInsMenusFORMAT="LINESPECIFIC"bool EvOcViewInsMenus(TOcMenuDescr far& sharedMenu);REMAP='BodyNoLead'Inserts the server's menu into the composite menu. Determines the number of groups and the number of pop-up menu items to insert within each group. The shared menu (ROLE='italic'sharedMenu) is the container's menu merged with the server's menu groups.See alsoREMAP='BodyNoLead'TMenuDescr has more information about menu merging, TOcMenuDescr structEvOcViewLoadPartFORMAT="LINESPECIFIC"bool EvOcViewLoadPart(TOcSaveLoad far& ocLoad);REMAP='BodyNoLead'Asks the server to load itself from storage. Loads the document and its associated view. EvOcViewOpenDocFORMAT="LINESPECIFIC"bool EvOcViewOpenDoc(const char far* path);REMAP='BodyNoLead'Asks the container application to open an existing document so the document can receive embedded and linked objects. (Actually, ROLE='italic'TOleView calls on the ROLE='italic'TOleDocument object to read the document from storage, using the standard OLE ROLE='italic'IStorage and ROLE='italic'IStream interfaces). Assigns a unique string identifier to the document and returns ROLE='bold'true if successful.See alsoREMAP='BodyNoLead'TOleView::EvOcViewCloseEvOcViewPartInvalidFORMAT="LINESPECIFIC"bool EvOcViewPartInvalid(TOcChangeInfo far& changeInfo);REMAP='BodyNoLead'Notifies the active view of any changes made to the embedded object's data (ROLE='italic'changeInfo). Also, notifies any other views associated with this document that the bounding rectangle for the document is invalid and needs to be repainted. ROLE='italic'EvOcViewPartInvalid always returns ROLE='bold'true.EvOcViewSavePartFORMAT="LINESPECIFIC"bool EvOcViewSavePart(TOcSaveLoad far& ocSave);REMAP='BodyNoLead'Asks the server to save the embedded object's data to storage. To save the object, ROLE='italic'EvOcViewSavePart calls upon the ROLE='italic'TOleDocument object, which creates storage as necessary for each embedded object. Saves the dimensions of the server's view, which the server uses to tell the container how to redraw the embedded object in the container's window. See alsoREMAP='BodyNoLead'TOleView::EvOcViewClose, TOleView::EvOcViewOpenDoc, TOleDocumentVnDocOpenedFORMAT="LINESPECIFIC"bool VnDocOpened (int omode);REMAP='Body'Ensures that TOleView's data members such as DragPart, Pos, and Scale are initialized properly after a revert operation, which cancels any changes made to the document since the last time the document was saved to storage.VnInvalidateRectFORMAT="LINESPECIFIC"bool VnInvalidateRect(LPARAM p);REMAP='BodyNoLead'Invalidates the view region specified by ROLE='italic'p. Use this function to invalidate the bounding rectangle surrounding an embedded object if the object has been changed, usually as a result of in-place editing. If successful, returns ROLE='bold'true.Response table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='136*'COLNAME='C2' COLWIDTH='104*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWOPENDOCCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvOcViewOpenDocCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWINSMENUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EVOcViewInsMenusCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWCLOSECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvOcViewCloseCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWSAVEPARTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvOcViewSavePartCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWLOADPARTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvOcViewLoadPartCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWATTACHWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvOcViewAttachWindowTOleWindow classMOREINFO="NONE"olewindo.hREMAP='BodyNoLead'Derived from ROLE='italic'TWindow, ROLE='italic'TOleWindow provides support for embedding objects in a compound document and serves as the client of a frame window. A compound document, such as the one ROLE='italic'TOleWindow supports, can contain many different types of embedded objects, from spreadsheets to bitmaps. In addition to providing support for a variety of basic window operations, ROLE='italic'TOleWindow also implements several OLE-related operations, among them,MARK='bullet'REMAP='Bullet1'Responding to drag and drop eventsREMAP='Bullet1'In-place editing (the process whereby an embedded object can be edited without having to switch to its associated server application)REMAP='Bullet1'Activating an embedded object's server applicationREMAP='Bullet1'Creating views for the container application.REMAP='Bullet1'Transmitting a document's scaling information between a container's and a server's view windows.REMAP='Body'ROLE='italic'TOleWindow has the ability to determine whether it's actiing as a server or a container. If it is a container, ROLE='italic'TOleWindow has a pointer to aROLE='italic'TOcView or if it is a server, ROLE='italic'TOleWindow establishes a pointer to a ROLE='italic'TOcRemView. From the server's point of view, every remote view has a corresponding ROLE='italic'TOleWindow.REMAP='Body'Through its many event-handling member functions, ROLE='italic'TOleWindow communicates with ObjectComponents to implement container and server support for embedded objects, update views, and respond to a variety of menu commands associated with the typical command identifiers (for example, CM_FILEMENU). It also supports OLE-specific verbs such as those activated from the Edit menu (for example, Edit and Open). These commands and verbs can originate from various sources such as a menu selection, a radio button, or even an internal program message. REMAP='Body'Conversely, ObjectComponents talks to ObjectWindows by means of the various EV_OC_Xxxx messages. Some of these messages, such as EV_OC_VIEWPARTINVALID, implement container support while others, such as EV_OC_VIEWCLOSE, implement server support. REMAP='Body'For any user-defined classes derived from ROLE='italic'TOleWindow, you need to choose which functions are appropriate. If you want to provide additional server support, you need to define only those functions that implement server messages; if you want to provide container support, you need to define only those functions that provide additional container support.REMAP='Body'For example, the data embedded in the container application (a compound document having one or more embedded objects) and the data embedded in the server application (a single OLE object with or without other embedded objects) can be written to storage and loaded from storage. If you're using ROLE='italic'TOleWindow without ROLE='italic'TOleView, you have to manipulate the storage by talking directly to the ObjectComponents class, ROLE='italic'TOcDocument.REMAP='Body'In addition to communicating with ObjectComponents classes, ROLE='italic'TOleWindow supports many transactions as a result of its interaction with other ObjectWindows classes. By virtue of its derivation from ROLE='italic'TWindow, naturally it inherits much of ROLE='italic'TWindow's functionality.See alsoREMAP='BodyNoLead'TOcView, TWindowView, TWindowPublic constructor and destructorConstructorFORMAT="LINESPECIFIC"Constructor TOleWindow(TWindow* parent = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TOleWindow object associated with the specified parent window and module instance.DestructorFORMAT="LINESPECIFIC"~TOleWindow( );REMAP='BodyNoLead'Checks to see if there are any open views, and, if no open views exist, destroys the ROLE='italic'TOleWindow object.Public member functionsDeactivateFORMAT="LINESPECIFIC"virtual bool Deactivate( );REMAP='BodyNoLead'If an embedded object is no longer the active embedded object, either because the user has ended an in-place editing session or because the user has clicked outside the embedded object, call ROLE='italic'Deactivate to unselect the object. Returns ROLE='bold'true if successful.GetOcAppFORMAT="LINESPECIFIC"TOcApp* GetOcApp( );REMAP='BodyNoLead'Returns the ObjectComponents application associated with this window. Every ObjectComponents application that supports linking and embedding has an associated ROLE='italic'TOcApp object.See also REMAP='BodyNoLead'TOcAppGetOcDocFORMAT="LINESPECIFIC"TOcDocument* GetOcDoc( );REMAP='BodyNoLead'Returns the ObjectComponents document associated with this window. This document can be either a container's or a server's document. If this is a ROLE='italic'TOcDocument created by the container, the document is an entire compound document, which may consist of one or more embedded objects. If this is a ROLE='italic'TOcDocument created by the server, the document is a single OLE object's data.See also REMAP='BodyNoLead'TOcDocumentGetOcRemViewFORMAT="LINESPECIFIC"TOcRemView* GetOcRemView( );REMAP='BodyNoLead'Returns the server's view associated with this window. In order to draw the OLE object in the container's window, the server creates a remote view.See also REMAP='BodyNoLead'TOcRemViewGetOcViewFORMAT="LINESPECIFIC"TOcView* GetOcView( );REMAP='BodyNoLead'Points to the ObjectComponents container view associated with this window. The container view holds the compound document (that is a document containing one or more embedded objects).See also REMAP='BodyNoLead'TOcViewHasActivePartFORMAT="LINESPECIFIC"bool HasActivePart( );REMAP='BodyNoLead'Returns ROLE='bold'true if the container's view holds an in-place active embedded object.See also REMAP='BodyNoLead'TOcView::GetActivePart, InvalidatePartPaintMetafileFORMAT="LINESPECIFIC"virtual void PaintMetafile(TDC& dc, bool erase, TRect& rect);REMAP='BodyNoLead'Repaints the area of the server where the embedded object resides. The ROLE='italic'dc parameter points to the device context. ROLE='italic'erase is ROLE='bold'true if the background of the embedded object is to be repainted. ROLE='italic'rect refers to the area to be repainted.See alsoREMAP='BodyNoLead'InvalidatePartProtected data membersContainerNameFORMAT="LINESPECIFIC"string ContainerName;REMAP='BodyNoLead'Holds the name of the container. The server displays the container's name when an embedded object is being edited in the server's window (referred to as ROLE='italic'out-of-place editing).DragDCFORMAT="LINESPECIFIC"TDC* DragDC;REMAP='BodyNoLead'Points to the DC used while an object is being dragged.See alsoREMAP='BodyNoLead'DragPtDragHitFORMAT="LINESPECIFIC"TUIHandle::TWhere DragHit;REMAP='BodyNoLead'Indicates the position in the embedded object where the user points and clicks the mouse. This can be any one of the ROLE='italic'TUIHandle::TWhere enumerated values, for example, TopLeft, TopCenter, TopRight, MidLeft, MidCenter, MidRight, BottomLeft, BottomCenter, BottomRight, or Outside when no dragging is taking place.See also:REMAP='BodyNoLead'TUIHandle::TWhere enumDragPartFORMAT="LINESPECIFIC"TOcPart* DragPart;REMAP='BodyNoLead'Points to the embedded object (the part) being dragged.DragPtFORMAT="LINESPECIFIC"TPoint DragPt;REMAP='BodyNoLead'Indicates the point (in logical units) where the mouse is over the dragged object.See alsoREMAP='BodyNoLead'DragDCDragRectFORMAT="LINESPECIFIC"TRect DragRect;REMAP='BodyNoLead'Holds the rectangle being dragged. See alsoREMAP='BodyNoLead'DragDCDragStartFORMAT="LINESPECIFIC"TPoint DragStart;REMAP='BodyNoLead'Holds the point where the dragging of the embedded object began.See alsoREMAP='BodyNoLead'DragPtEmbeddedFORMAT="LINESPECIFIC"bool Embedded;REMAP='BodyNoLead'Is ROLE='bold'true if this ROLE='italic'TOleWindow is an embedded window. As a result, a ROLE='italic'TocRemView is created because the data is being displayed in a server's window.OcAppFORMAT="LINESPECIFIC"TOcApp* OcApp;REMAP='BodyNoLead'Holds the ObjectComponents application associated with this TOleWindow.See alsoREMAP='BodyNoLead'TOcView::OcApp, TOcAppOcDocFORMAT="LINESPECIFIC"TOcDocument* OcDoc;REMAP='BodyNoLead'Holds the ObjectComponents document associated with this TOleWindow.See alsoREMAP='BodyNoLead'TOcDocument, TOcView::OcDocumentOcViewFORMAT="LINESPECIFIC"TOcView* OcView;REMAP='BodyNoLead'Holds the ObjectComponents view or remote view (the server's) associated with the ROLE='italic'TOleWindow view.See alsoREMAP='BodyNoLead'TOcViewPosFORMAT="LINESPECIFIC"TRect Pos;REMAP='BodyNoLead'Holds the current area in the window where the object is embedded. ROLE='italic'Pos reflects the area where the object is moved if you move the object.ScaleFORMAT="LINESPECIFIC"TOcScaleFactor Scale;REMAP='BodyNoLead'Holds the current scaling factor. The server uses this information to determine how to scale the document.See alsoREMAP='BodyNoLead'TOcScaleFactor, EvOcViewGetScale, SetScaleTOleWindow::ShowObjectsFORMAT="LINESPECIFIC"bool ShowObjects;REMAP='BodyNoLead'Is ROLE='bold'true if the embedded object's frame (the grey or shaded brushes around the object) is displayed. The frame can be turned on or off depending on how you want the object to appear.Protected member functionsCanCloseFORMAT="LINESPECIFIC"bool CanClose( );REMAP='BodyNoLead'Returns ROLE='bold'true if the window can be closed. Checks all the server's child windows' CanClose functions, which must return true before the window can be closed. Terminates any open editing transactions before closing the window; otherwise, passes control to ROLE='italic'TWindow::ROLE='italic'CanClose.CeEditConvertFORMAT="LINESPECIFIC"void CeEditConvert(TCommandEnabler&);REMAP='BodyNoLead'Enables a command with an ID of CM_EDITCONVERT, which lets the user convert the selected object from one format to another. This is an OLE-specific pop-up menu option.CeEditCopyFORMAT="LINESPECIFIC"void CeEditCopy(TCommandEnabler&);REMAP='BodyNoLead'Enables a command with an ID of CM_EDITCOPY, which lets the user copy selected object to the Clipboard.CeEditCutFORMAT="LINESPECIFIC"void CeEditCut(TCommandEnabler&);REMAP='BodyNoLead'Enables a command with an ID of CM_EDITCUT, which lets a user copy and delete the selected object from the view. CeEditDeleteFORMAT="LINESPECIFIC"void CeEditDelete(TCommandEnabler&);REMAP='BodyNoLead'Enables a command with an ID of CM_EDITDELETE, which lets the user delete the selected object from the view.CeEditInsertObjectFORMAT="LINESPECIFIC"void CeEditInsertObject(TCommandEnabler&);REMAP='BodyNoLead'Enables a command with an ID of CM_EDITCUT, which lets the user cut a section of text from the view.CeEditLinksFORMAT="LINESPECIFIC"void CeEditLinks(TCommandEnabler&);REMAP='BodyNoLead'Enables a command with an ID of CM_EDITLINKS, which lets the user manually update the list of linked items in the current view. CeEditObjectFORMAT="LINESPECIFIC"void CeEditObject(TCommandEnabler&);REMAP='BodyNoLead'Enables a command with an ID of CM_EDITOBJECT, which lets the user edit the embedded object.CeEditPasteFORMAT="LINESPECIFIC"void CeEditPaste(TCommandEnabler&);REMAP='BodyNoLead'Enables a command with an ID of CM_EDITPASTE, which lets the user paste the embedded object from the Clipboard.CeEditPasteLinkFORMAT="LINESPECIFIC"void CeEditPasteLink(TCommandEnabler&);REMAP='BodyNoLead'Enables a PasteLink command with an ID of CM_EDITPASTELINK, which lets the user link to the embedded object on the Clipboard. See the ocrxxxx Clipboard constants for a description of the available Clipboard formats.See also REMAP='BodyNoLead'TOleWindow::CeEditPasteSpecial, ocrxxxx Clipboard constantsCeEditPasteSpecialFORMAT="LINESPECIFIC"void CeEditPasteSpecial(TCommandEnabler&);REMAP='BodyNoLead'Enables the PasteSpecial command, which lets the user select a Clipboard format to be pasted or paste linked. See the ocrxxxx Clipboard constants for a description of the available Clipboard formats.See also REMAP='BodyNoLead'TOleWindow::CeEditPasteLink, ocrxxxx Clipboard ConstantsCeEditVerbsFORMAT="LINESPECIFIC"void CeEditVerbs(TCommandEnabler& ce);REMAP='BodyNoLead'Enables the Edit|Verbs command, which lets the user select one of the OLE-specific verbs from the Edit menu: for example, Edit, Open, or Play.CeFileCloseFORMAT="LINESPECIFIC"void CeFileClose(TCommandEnabler& ce);REMAP='BodyNoLead'Enables the FileClose command, which lets the user exit from the window view.CleanupWindowFORMAT="LINESPECIFIC"void CleanupWindow( );REMAP='BodyNoLead'Performs normal window cleanup and informs the TOcView object that the window is closed.See also REMAP='BodyNoLead'TWindow::CleanupWindow, TOcViewCmEditConvertFORMAT="LINESPECIFIC"void CmEditConvert( );REMAP='BodyNoLead'Responds to a command with an ID of CM_EDITCONVERT by converting an object from one type to another.CmEditCopyFORMAT="LINESPECIFIC"void CmEditCopy( );REMAP='BodyNoLead'Responds to a command with an ID of CM_EDITCOPY by copying the selected text to the Clipboard.CmEditCutFORMAT="LINESPECIFIC"void CmEditCut( );REMAP='BodyNoLead'Responds to a command with an ID of CM_EDITCUT by copying the selected text to the Clipboard before cutting the text.CmEditDeleteFORMAT="LINESPECIFIC"void CmEditDelete( );REMAP='BodyNoLead'Responds to a command with an ID of CM_EDITDELETE by deleting the selected text.CmEditInsertObjectFORMAT="LINESPECIFIC"void CmEditInsertObject( );REMAP='BodyNoLead'Responds to a command with an ID of CM_EDITINSERTOBJECT by inserting an object that a user selects from a list of object types.CmEditLinksFORMAT="LINESPECIFIC"void CmEditLinks( );REMAP='BodyNoLead'Responds to a command with an ID of CM_EDITLINKS by updating the user-selected list of linked items in the current view. CmEditPasteFORMAT="LINESPECIFIC"void CmEditPaste( );REMAP='BodyNoLead'Responds to a command with an ID of CM_EDITPASTE by pasting an object from the Clipboard into the document.CmEditPasteLinkFORMAT="LINESPECIFIC"void CmEditPasteLink( );REMAP='BodyNoLead'Responds to a command with an ID of CM_EDITPASTELINK by creating a link between the current document and the object on the Clipboard.See also REMAP='BodyNoLead'TOleWindow::CmEditPasteSpecial, ocrxxxx Clipboard constantsCmEditPasteSpecialFORMAT="LINESPECIFIC"void CmEditPasteSpecial( );REMAP='BodyNoLead'Responds to a command with an ID of CM_EDITPASTESPECIAL by letting the user select an object from a list of available formats for pasting from the Clipboard onto the document.See also REMAP='BodyNoLead'TOleWindow::CmEditPasteLink, ocrxxxx Clipboard constantsCmFileCloseFORMAT="LINESPECIFIC"void CmFileClose( );REMAP='BodyNoLead'Responds to a command with an ID of CM_FILECLOSE by posting a WM_CLOSE message to the parent window to close the application.CreateOcViewFORMAT="LINESPECIFIC"virtual TOcView* CreateOcView(TDocTemplate* tpl, bool isEmbedded, IUnknown* outer);REMAP='BodyNoLead'Creates an ObjectComponents view associated with the embedded object. Associates the view with the document template specified in ROLE='italic'tpl. If ROLE='italic'isEmbedded is ROLE='bold'true, a remote view is created (that is, a ROLE='italic'TOcRemView instead of a ROLE='italic'TOcView). The ROLE='italic'outer parameter refers to the ROLE='italic'IUnknown interface with which the view will aggregate itself.See alsoREMAP='BodyNoLead'TOcView, TOcRemViewCreateVerbPopupFORMAT="LINESPECIFIC"TPopupMenu* CreateVerbPopup(const TOcVerb& ocVerb);REMAP='BodyNoLead'Creates and enables a pop-up menu option (ROLE='italic'ocVerb) on the Edit menu. The verb describes an action (for example, Edit, Open, Play) that is appropriate for the embedded object.See alsoREMAP='BodyNoLead'EvDoVerbEvCommandFORMAT="LINESPECIFIC"LRESULT EvCommand(uint id, HWND hWndCtl, uint notifyCode);REMAP='BodyNoLead'Overrides the usual EvCommand message to handle the OLE verbs from CM_EDITFIRSTVERB to CM_EDITLASTVERB. These commands, which are defined in oleview.rh, correspond to the OLE-specific Edit menu selections such as Edit, Open, and Play. All of the other commands are passed toROLE='italic' TWindow::EvCommand for normal processing.See alsoREMAP='BodyNoLead'CM_xxxx edit view constants, TOleWindow::EvCommandEnable, TWindow::EvCommandEvCommandEnableFORMAT="LINESPECIFIC"void EvCommandEnable(TCommandEnabler& commandEnabler);REMAP='BodyNoLead'Overrides the usual EvCommandEnable message in order to enable the OLE verbs from CM_EDITFIRSTVERB to CM_EDITLASTVERB. These commands enable the OLE-specific Edit menu selections, such as Edit, Open, and Play. All of the other commands are passed to ROLE='italic'TWindow::EvCommand for normal processing.See alsoREMAP='BodyNoLead'TOleWindow::EvCommand, TWindow::EvCommandEvDoVerbFORMAT="LINESPECIFIC"void EvDoVerb(uint whichVerb);REMAP='BodyNoLead'Executes an OLE-related menu option from the Edit menu (for example, Edit, Copy, or Play) that is associated with the selected object.See alsoREMAP='BodyNoLead'CreateVerbPopupEvLButtonDblClkFORMAT="LINESPECIFIC"void EvLButtonDblClk(uint modKeys, TPoint& point);REMAP='BodyNoLead'Responds to a mouse button double-click message. ROLE='italic'EvLButtonDblClk performs hit testing to see which embedded object, if any, is being clicked on, then in-place activates the embedded object.EvLButtonDownFORMAT="LINESPECIFIC"void EvLButtonDown(uint modkeys, TPoint& point);REMAP='BodyNoLead'Responds to a left button down message by beginning a mouse drag transaction at the given point. Performs additional hit testing to see which embedded object, if any, is being clicked on. The ROLE='italic'modKeys parameter holds the values for a key combination such as a shift and double click of the mouse button.See alsoREMAP='Body'EvRButtonDownEvLButtonUpFORMAT="LINESPECIFIC"void EvLButtonUp(uint modKeys, TPoint& point);REMAP='BodyNoLead'Responds to a left button up message by ending a mouse drag action. ROLE='italic'point refers to the place where the mouse is located. ROLE='italic'modKeys holds the values for a combined key and mouse transaction.EvMDIActivateFORMAT="LINESPECIFIC"void EvMDIActivate(HWND hWndActivated, HWND hWndDeactivated);REMAP='BodyNoLead'Responds to a message forwarded from the MDI child window (if one exists) and lets the ROLE='italic'TOcView class know that the view window child window frame has been activated or deactivated. REMAP='Body'The ROLE='italic'hWndActivated parameter contains a handle to the MDI child window being activated. Both the child window being activated being activated and the child window (ROLE='italic'hWndDeactivated) being deactivated receive this message.See alsoREMAP='BodyNoLead'TOcViewEvMouseMoveFORMAT="LINESPECIFIC"void EvMouseMove(uint, TPoint& point);REMAP='BodyNoLead'Responds to a mouse move message with the appropriate transaction. If the mouse is being dragged, the embedded object is moved. If a resizing operation occurs, then the embedded object is resized. This message is handled only when a mouse dragging or resizing action involving the embedded object occurs.EvOcEventFORMAT="LINESPECIFIC"LRESULT EvOcEvent(WPARAM wParam, LPARAM lParam);REMAP='BodyNoLead'Responds to a WM_OCEVENT message and subdispatches the message based on ROLE='italic'wParam. ObjectComponents sends WM_OCEVENT messages when it needs to communicate with an OLE-generated event; for example, if a server wants to display toolbars.EvOcPartInvalidFORMAT="LINESPECIFIC"bool EvOcPartInvalid(TOcPart far&);REMAP='BodyNoLead'Handles a WM_OCEVENT message concerning the embedded or linked object in the document and invalidates the part.REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcPartInvalid returns ROLE='bold'false. EvOcViewAttachWindowFORMAT="LINESPECIFIC"bool EvOcViewAttachWindow(bool attach);REMAP='BodyNoLead'Attaches the view to its ObjectWindows parent window so that the user can perform open editing on the embedded object, or if the embedded object has been deactivated while in-place editing was occurring. REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewAttachWindow returns ROLE='bold'false. EvOcViewBorderSpaceReqFORMAT="LINESPECIFIC"bool EvOcViewBorderSpaceReq(TRect far*);REMAP='BodyNoLead'Requests that the server create space for a tool bar in the view of an embedded object. REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewBorderSpaceReq returns ROLE='bold'false, the default value. See alsoREMAP='BodyNoLead'EvOcViewBorderSpaceSetEvOcViewBorderSpaceSetFORMAT="LINESPECIFIC"bool EvOcViewBorderSpaceSet(TRect far*);REMAP='BodyNoLead'Requests that the server's tool bar be placed in the container's view of an embedded object.REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewBorderSpaceSet returns false, the default value.See alsoREMAP='BodyNoLead'EvOcViewBorderSpaceReqEvOcViewClipDataFORMAT="LINESPECIFIC"HANDLE EvOcViewClipData(TOcFormat far&);REMAP='BodyNoLead'Requests Clipboard data in the format specified.REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewClipData returns ROLE='bold'false. EvOcViewCloseFORMAT="LINESPECIFIC"bool EvOcViewClose( );REMAP='BodyNoLead'Asks the server to close a currently open document and its associated view.REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewClose returns ROLE='bold'false. EvOcViewDragFORMAT="LINESPECIFIC"bool EvOcViewDrag(TOcDragDrop far&);REMAP='BodyNoLead'Handles an OC_VIEWDRAG message asking the container to provide visual feedback while the user is dragging the embedded object.REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewDrag returns ROLE='bold'false. EvOcViewDropFORMAT="LINESPECIFIC"bool EvOcViewDrop(TOcDragDrop far&);REMAP='BodyNoLead'Requests a given object be dropped at a specified place on the container's window. REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewDrop returns ROLE='bold'false.EvOcViewGetPaletteFORMAT="LINESPECIFIC"bool EvOcViewGetPalette(LOGPALETTE far* far* palette);REMAP='BodyNoLead'Requests the color palette to draw the object. REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewGetPalette returns ROLE='bold'false. EvOcViewGetScaleFORMAT="LINESPECIFIC"bool EvOcViewGetScale(TOcScaleFactor& scaleFactor);REMAP='BodyNoLead'Responds to an OC_VIEWGETSCALE message and gets the scaling for the server objectj, causing the embedded object to be displayed using the correct scaling value (for example, 120%). ROLE='italic'scaleFactor indicates the scaling factor, the ratio between the size of the embedded object and the size of the site where the object is to be displayed.REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewGetScale returns ROLE='bold'false. See alsoREMAP='BodyNoLead'Scale, TOcScaleFactorEvOcViewGetSiteRectFORMAT="LINESPECIFIC"bool EvOcViewGetSiteRect(TRect far* rect);REMAP='BodyNoLead'Gets the size of the rectangle (the site) where the embedded object is to be placed. ROLE='italic'rect refers to the size of the bounding rectangle that encloses the embedded object.See alsoREMAP='BodyNoLead'EvOcViewSetSiteRectEvOcViewInsMenusFORMAT="LINESPECIFIC"bool EvOcViewInsMenus(TOcMenuDescr far&);REMAP='BodyNoLead'Requests that the menus in a composite menu (a menu composed of both the server's and the container's menus). REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewInsMenus returns ROLE='bold'false. EvOcViewLoadPartFORMAT="LINESPECIFIC"bool EvOcViewLoadPart(TOcSaveLoad far* ocLoad);REMAP='BodyNoLead'Requests that an embedded object load itself.REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewLoadPart returns ROLE='bold'false. EvOcViewOpenDocFORMAT="LINESPECIFIC"bool EvOcViewOpenDoc(const char far*);REMAP='BodyNoLead'Asks the container to open an existing document, which will be used for linking from the embedding site. REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewOpenDoc returns ROLE='bold'false. EvOcViewPaintFORMAT="LINESPECIFIC"bool EvOcViewPaint(TOcViewPaint far&);REMAP='BodyNoLead'Asks the server to paint an object at a given position on a specified device context. REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewPaint returns ROLE='bold'false. EvOcViewPartInvalidFORMAT="LINESPECIFIC"bool EvOcViewPartInvalid(TOcChangeInfo far& changeInfo);REMAP='BodyNoLead'Informs an active container that one of its embedded objects needs to be redrawn. Changes in the container's part should be reflected in any other, non-active views. Returns ROLE='bold'true after all views have been notified of the necessary changes. REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewPartInvalid returns ROLE='bold'false. EvOcViewPartSizeFORMAT="LINESPECIFIC"bool EvOcViewPartSize(TRect far*);REMAP='BodyNoLead'The server asks itself the size of its current rectangle and lets the container know about the size of the server's view in pixels. REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewPartSize returns ROLE='bold'false. EvOcViewSavePartFORMAT="LINESPECIFIC"bool EvOcViewSavePart(TOcSaveLoad far& ocSave);REMAP='BodyNoLead'Asks the server to write an embedded object's data (the part as represented by the ROLE='italic'ocSave parameter) into storage.REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewSavePart returns ROLE='bold'false. EvOcViewScrollFORMAT="LINESPECIFIC"bool EvOcViewScroll(TOcScrollDir);REMAP='BodyNoLead'Asks the container to scroll the view window and updates any internal state as needed. ROLE='italic'EvOcViewScroll is called when the server is resizing or a drop interaction occurs near the edge of the window. REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewScroll returns ROLE='bold'false. EvOcViewSetScaleFORMAT="LINESPECIFIC"bool EvOcViewSetScale(TOcScaleFactor& scaleFactor);REMAP='BodyNoLead'Responds to an OC_VIEWSETSCALE message and handles the scaling for server application, ensuring that the embedded object is displayed using the correct scaling values (for example, 120%). The server uses this value in its paint procedure when the embedded object needs to be redrawn. ROLE='italic'scaleFactor indicates the scaling factor, the ratio between the size of the embedded object and the size of the site where the object is to be displayed.REMAP='Body'If the ROLE='italic'TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewSetScale returns ROLE='bold'false. See alsoREMAP='BodyNoLead'EvOcViewGetScale, TOcScaleFactorEvOcViewSetSiteRectFORMAT="LINESPECIFIC"bool EvOcViewSetSiteRect(TRect far* rect);REMAP='BodyNoLead'Converts the ROLE='italic'rect to logical units. This area, referred to as the ROLE='italic'site, is measured in logical units that take into account any scaling factor. ROLE='italic'rect refers to the size of the bounding rectangle that encloses the embedded object.See alsoREMAP='BodyNoLead'EvOcViewGetSiteRectEvOcViewSetTitleFORMAT="LINESPECIFIC"void EvOcViewSetTitle(const char far* title);REMAP='Body'Sets the window's caption to title. The new caption is the name of the in-place active server merged with the caption of the container's window. REMAP='Body'In the case of an MDI child window, the new caption is the in-place server's name merged with the caption of the MDI child window. When the child window is maximized, the merged caption is appended to the end of the main frame window's caption.EvOcViewShowToolsFORMAT="LINESPECIFIC"bool EvOcViewShowTools(TOcToolBarInfo far& tbi);REMAP='BodyNoLead'Asks the server to provide its tool bars for display in the container's window. Returns ROLE='bold'true if tool bars are supplied. REMAP='Body'If the TOleWindow object is unable to handle the message, ROLE='italic'EvOcViewShowTools returns ROLE='bold'false. EvOcViewTitleFORMAT="LINESPECIFIC"const char far* EvOcViewTitle( );REMAP='BodyNoLead'Asks the container for the caption in its frame window. Returns the frame window's caption.EvRButtonDownFORMAT="LINESPECIFIC"void EvRButtonDown(uint modKeys, TPoint& point);REMAP='BodyNoLead'Responds to a right button down message. Performs additional hit testing to see which embedded object, if any, is being clicked and displays a local menu with appropriate options for the embedded object.REMAP='Body'ROLE='italic'point refers to the place where the mouse is located. ROLE='italic'modKeys holds the values for a combined key and transaction, such as a MOREINFO="NONE"Shift+double-click of the mouse button.See alsoREMAP='BodyNoLead'EvLButtonDownEvSetCursorFORMAT="LINESPECIFIC"bool EvSetCursor(HWND, uint hitTest, uint);REMAP='BodyNoLead'Performs hit testing to tell where the cursor is located within the window and what object the cursor is moving over. If the cursor is within an embedded object, ROLE='italic'EvSetCursor changes the shape of the cursor. REMAP='Body'When the cursor is over an inactive part and not on a handle, ROLE='italic'EvSetCursor uses an arrow cursor. If the cursor is on one of the handles of the embedded part, ROLE='italic'EvSetCursor changes the cursor to a resizing cursor.EvSetFocusFORMAT="LINESPECIFIC"void EvSetFocus(HWND hWndLostFocus);REMAP='BodyNoLead'Responds to a change in focus of the window. ROLE='italic'hWndLostFocus contains a handle to the window losing the focus. ROLE='italic'EvSetFocus checks to see if an in-place server exists and, if so, passes the focus to the in-place server. EvSizeFORMAT="LINESPECIFIC"void EvSize(uint sizeType, TSize& size);REMAP='BodyNoLead'Passes the event to ROLE='italic'TWindow::EvSize for normal processing and forwards the event to ROLE='italic'TOcView::EvResize to let a possible in-place server adjust its size. See alsoREMAP='BodyNoLead'TOcView::EvSizeGetInsertPositionFORMAT="LINESPECIFIC"virtual void GetInsertPosition(TRect& rect);REMAP='BodyNoLead'Gets the position (ROLE='italic'rect) where the embedded object is inserted. You need to override this function if you want to override any default position.GetLogPerUnitFORMAT="LINESPECIFIC"virtual void GetLogPerUnit(TSize& logPerUnit);REMAP='BodyNoLead'Gets the logical units (typically pixels) per inch for a document so that the document's embedded objects can be painted correctly on the screen DC.InitFORMAT="LINESPECIFIC"void Init( );REMAP='BodyNoLead'Initializes the ROLE='italic'TOleWindow object with the appropriate window style and initializes the necessary data members (for example, sets the accelerator ID to IDA_OLEVIEW).InvalidatePartFORMAT="LINESPECIFIC"virtual void InvalidatePart(TOcInvalidate invalid);REMAP='BodyNoLead'Invalidates the area where the embedded object exists.The server uses this function to tell OLE that the part (the embedded object), has changed. OLE then asks the server to redraw the part into a new metafile so that OLE can redraw the object for the container application even when the server application is not active.See alsoREMAP='BodyNoLead'PaintMetafile, TOcView_GetActivePartPaintFORMAT="LINESPECIFIC"void Paint(TDC& dc, bool erase, TRect& rect);REMAP='BodyNoLead'Repaints the window's contents and tells each embedded object to repaint itself. REMAP='Body'ROLE='italic'dc points to the paint DC. ROLE='italic'erase indicates whether the background should be erased. ROLE='italic'rect is a reference to the bounding rectangle of the area that needs repainting.PaintPartsFORMAT="LINESPECIFIC"virtual bool PaintParts(TDC& dc, bool erase, TRect& rect, bool metafile);REMAP='BodyNoLead'Repaints the embedded objects on the given DC. The ROLE='italic'erase parameter is true if the background of the embedded object is to be repainted. ROLE='italic'rect indicates the area that needs repainting. ROLE='italic'metafile indicates whether or not the DC represents a metafile.SelectFORMAT="LINESPECIFIC"virtual bool Select(uint modKeys, TPoint& point);REMAP='BodyNoLead'Selects the embedded object at the specified point (measured in logical units). Returns ROLE='bold'true if the object is captured by the mouse drag; otherwise, returns ROLE='bold'false.SelectEmbeddedFORMAT="LINESPECIFIC"bool SelectEmbedded( );REMAP='BodyNoLead'Selects the embedded object and returns ROLE='bold'true to indicate that the object has been selected. SetScaleFORMAT="LINESPECIFIC"virtual void SetScale(uint16 percent);REMAP='BodyNoLead'Sets the ratio of the embedded object's size to the size of the site.See alsoREMAP='BodyNoLead'SetupDCREMAP='Body'The area inside the container where the embedded object will be drawnSetSelectionFORMAT="LINESPECIFIC"void SetSelection(TOcPart* part);REMAP='BodyNoLead'Selects the embedded object indicated in the ROLE='italic'part parameter. When the embedded object is selected, a selection box is drawn around the area. After an embedded object is selected, the user can perform operations on the embedded object: for example, moving, sizing, or copying the embedded object to the Clipboard.Setup DCFORMAT="LINESPECIFIC"virtual void SetupDC(TDC& dc, bool scale = true);REMAP='BodyNoLead'Determines the viewport's origin and extent (the logical coordinates and the size of the DC). Sets up the device context (DC) before painting the embedded object. ROLE='italic'dc refers to the DC and ROLE='italic'scale indicates that the scaling factor to use when painting the embedded object is a ratio between the site and the embedded object.See alsoREMAP='BodyNoLead'TOcScaleFactor, SetScaleREMAP='BodyNoLead'SetupWindowFORMAT="LINESPECIFIC"void SetupWindow( );REMAP='BodyNoLead'Establishes a connection between the ROLE='italic'TOcView object and the view's HWND so the view can send notification messsages to the window.REMAP='BodyNoLead'VnInvalidate RectFORMAT="LINESPECIFIC"bool VnInvalidateRect(LPARAM p);REMAP='BodyNoLead'When the embedded object is modified, ROLE='italic'VnInvalidateRect sends a message to the View portion of the Doc/View pair. When ROLE='italic'TOleWindow receives this message, the view region is marked for erasing. ROLE='italic'VnInvalidateRect always returns ROLE='bold'true.Response table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='273*'COLNAME='C2' COLWIDTH='103*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_LBUTTONDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvLButtonDownCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_RBUTTONDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvRButtonDownCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_LBUTTONDBLCLKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvLButtonDblClkCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MOUSEMOVECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvMouseMoveCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_LBUTTONUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvLButtonUpCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvSizeCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MDIACTIVATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvMDIActivateCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SETFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvSetFocusCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SETCURSORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvSetCursorCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_EDITDELETE, CmEditDelete)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditDeleteCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_EDITDELETE, CeEditDelete)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CeEditDeleteCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_EDITCUT, CmEditCut)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditCutCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_EDITCUT, CeEditCut)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CeEditCutCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_EDITCOPY, CmEditCopy)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditCopyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_EDITCOPY, CeEditCopy)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CeEditCopyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_EDITPASTE, CmEditPaste)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditPasteCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_EDITPASTE, CeEditPaste)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CeEditPasteCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_EDITPASTESPECIAL, CmEditPasteSpecial)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditPasteSpecialCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_EDITPASTESPECIAL, CeEditPasteSpecial)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CeEditPasteSpecialCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_EDITPASTELINK, CmEditPasteLink)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditPasteLinkCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_EDITPASTELINK, CeEditPasteLink)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CeEditPasteLinkCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_EDITINSERTOBJECT, CmEditInsertObject)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditInsertObjectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_EDITINSERTOBJECT, CeEditInsertObject)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CeEditInsertObjectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_EDITLINKS, CeEditLinks)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CeEditLinksCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_EDITLINKS, CmEditLinks)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditLinksCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_EDITOBJECT, CeEditObject)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CeEditObjectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_EDITCONVERT, CeEditConvert)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CeEditConvertCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_EDITCONVERT, CmEditConvert)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmEditConvertCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_EXIT, CmFileClose)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmFileCloseCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLE(CM_EXIT, CeFileClose)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CeFileCloseCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_MESSAGE(WM_OCEVENT, EvOcEvent)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcEventCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OWLNOTIFY(vnInvalidate)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VnInvalidateRectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWPARTINVALIDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewPartInvalidCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWSETTITLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body' EvOcViewSetTitleCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWTITLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewTitleCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWBORDERSPACEREQCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewBorderSpaceReqCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWBORDERSPACESETCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewBorderSpaceSetCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWDROPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewDropCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWDRAGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewDragCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWSCROLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewScrollCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWGETSCALECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewGetScaleCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWGETSITERECTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewGetSiteRectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWSETSITERECTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewSetSiteRectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWPAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewPaintCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWSAVEPARTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewSavePartCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWLOADPARTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewLoadPartCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWINSMENUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewInsMenusCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWSHOWTOOLS,COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewshowToolsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWGETPALETTECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewGetPaletteCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWCLIPDATA,COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewclipDataCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWCLOSECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewCloseCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWPARTSIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewPartSizeCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWOPENDOCCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewOpenDocCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWATTACHWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewAttachWindowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWSETSCALECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvOcViewSetScaleTOpenSaveDialog classMOREINFO="NONE"opensave.hREMAP='Body'ROLE='italic'TOpenSaveDialog is the base class for modal dialogs that let you open and save a file under a specified name. ROLE='italic'TOpenSaveDialog constructs a ROLE='italic'TData structure and passes it the ROLE='italic'TOpenSaveDialog constructor. Then the dialog is executed (modal) or created (modeless). Upon return, the necessary fields are updated, including an error field that contains 0, or a common dialog extended error.Public constructorConstructorFORMAT="LINESPECIFIC"TOpenSaveDialog(TWindow* parent, TData& data, TResId templateId = 0, const char far* title = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs an open save dialog box object with the supplied parent window, data, resource ID, title, and current module object.See alsoREMAP='BodyNoLead'TData structPublic member functionsGetFileTitleFORMAT="LINESPECIFIC"static int GetFileTitle(const char far* fileName, char far* fileTitle, int fileTitleLen)REMAP='BodyNoLead'Stores the name of the file to be saved or opened.GetFileTitleLenFORMAT="LINESPECIFIC"static int GetFileTitleLen(const char far* fileName);REMAP='BodyNoLead'Stores the length of the file name to be saved or opened.Protected data membersDataFORMAT="LINESPECIFIC"TData& Data;REMAP='BodyNoLead'Stores the file name, its length, extension, filter, initial directory, default file name, extension, and any error messages.ofnFORMAT="LINESPECIFIC"OPENFILENAME ofn;REMAP='BodyNoLead'Contains the attributes of the file name such as length, extension, and directory. ofn is initialized using the fields in the ROLE='italic'TOpenSaveDialog::ROLE='italic'TData class. This member is not available under Presentation Manager.See alsoREMAP='BodyNoLead'TData structShareViMsgIdFORMAT="LINESPECIFIC"static uint ShareViMsgId;REMAP='BodyNoLead'Contains the message ID of the registered ROLE='italic'ShareViolation message. This member is not available under Presentation Manager.See alsoREMAP='BodyNoLead'TData struct, ShareViolationProtected constructorConstructorFORMAT="LINESPECIFIC"TOpenSaveDialog(TWindow* parent, TData& data, TModule* module);REMAP='BodyNoLead'Constructs a ROLE='italic'TOpenSaveDialog box object with the supplied parent, data, and current module object.See alsoREMAP='BodyNoLead'TData structProtected member functionsCmLbSelChangedFORMAT="LINESPECIFIC"void CmLbSelChanged( );REMAP='BodyNoLead'Indicates that the selection state of the file name list box in the ROLE='italic'GetOpenFileName or ROLE='italic'GetSaveFileName dialog boxes has changed. ROLE='italic'CmLbSelChanged is a default handler for command messages sent by ROLE='italic'lst1 or ROLE='italic'lst2 (the file and directory list boxes, respectively).CmOkFORMAT="LINESPECIFIC"void CmOk( );REMAP='BodyNoLead'Responds to a click on the dialog box's OK button (with the identifier IDOK). Calls ROLE='italic'CloseWindow (passing IDOK).See alsoREMAP='BodyNoLead'TDialog::CloseWindowDialogFunctionFORMAT="LINESPECIFIC"bool DialogFunction(uint message, WPARAM, LPARAM);REMAP='BodyNoLead'Returns ROLE='bold'true if a message is handled, returns ROLE='italic'ShareViMsgId if a sharing violation occurs, otherwise returns ROLE='bold'false.DoExecuteFORMAT="LINESPECIFIC"int DoExecute( );REMAP='BodyNoLead'Creates and executes a modal dialog box.InitFORMAT="LINESPECIFIC"void Init(TResId templateId);REMAP='BodyNoLead'Initializes a ROLE='italic'TOpenSaveDialog object with the current resource ID.ShareViolationFORMAT="LINESPECIFIC"virtual int ShareViolation( );REMAP='BodyNoLead'If a sharing violation occurs when a file is opened or saved, ROLE='italic'ShareViolation is called to obtain a response. The default return value is OFN_SHAREWARN. Other sharing violation responses are listed in the following table. This member is not available under Presentation Manager.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='123*'COLNAME='C2' COLWIDTH='252*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_SHAREFALLTHROUGHCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies that the file name can be used and that the dialog box should return it to the application.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_OFN_SHARENOWARNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Instructs the dialog box to perform no further action with the file name and not to warn the user of the situation.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_SHAREWARNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'This is the default response that is defined as 0. Instructs the dialog box to display a standard warning message.See alsoREMAP='BodyNoLead'TData struct, ShareViMsgIdResponse table entriesREMAP='Body'The ROLE='italic'TOpenSaveDialog response table has no entries.TOpenSaveDialog::TData structMOREINFO="NONE"opensave.hREMAP='BodyNoLead'ROLE='italic'TOpenSaveDialog structure contains information about the user's file open or save selection. Specifically, this structure stores a user-specified file name filter, file extension, file name, the initial directory to use when displaying file names, any error codes, and various file attributes that determine, for example, if the file is a read-only file. The classes ROLE='italic'TFileOpenDialog and ROLE='italic'TFileSaveDialog use the information stored in this structure when a file is opened or saved.Public constructors and destructorConstructorFORMAT="LINESPECIFIC"TData(uint32 flags=0, const char* filter=0, char* customFilter=0, char* initialDir=0, char* defExt=0);REMAP='BodyNoLead'Constructs a ROLE='italic'TOpenSaveDialog::TData structure.DestructorFORMAT="LINESPECIFIC"~TData( );REMAP='BodyNoLead'Destructs a ROLE='italic'TOpenSaveDialog::TData structure.See alsoREMAP='BodyNoLead'TEditFile::FileDataData membersCustomFilterFORMAT="LINESPECIFIC"char* CustomFilter;REMAP='BodyNoLead'ROLE='italic'CustomFilter stores the user-specified file filter; for example, *.CPP.DefExtFORMAT="LINESPECIFIC"char* DefExt;REMAP='BodyNoLead'ROLE='italic'DefExt stores the default extension.ErrorFORMAT="LINESPECIFIC"uint32 Error;REMAP='BodyNoLead'Error contains one or more of the following error codes:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='149*'COLNAME='C2' COLWIDTH='137*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_DIALOGFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to create a dialog box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_LOCKRESOURCEFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to lock a specified resource.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_LOADRESFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to load a specified resource.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_LOADSTRFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to load a specified string.FileNameFORMAT="LINESPECIFIC"char* FileName;REMAP='BodyNoLead'Holds the name of the file to be saved or opened.FilterFORMAT="LINESPECIFIC"char* Filter;REMAP='BodyNoLead'ROLE='italic'Filter holds the filter to use initially when displaying file names.FilterIndexFORMAT="LINESPECIFIC"int FilterIndex;REMAP='BodyNoLead'ROLE='italic'FilterIndex indicates which filter to use initially when displaying file names.FlagsFORMAT="LINESPECIFIC"uint32 Flags;REMAP='BodyNoLead'ROLE='italic'Flag contains one or more of the following constants:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='121*'COLNAME='C2' COLWIDTH='252*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_HIDEREADONLYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Hides the read-only check box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_FILEMUSTEXISTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Lets the user enter only names of existing files in the File Name entry field. If an invalid file name is entered, a warning message is displayed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_PATHMUSTEXISTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Lets the user enter only valid path names. If an invalid path name is entered, a warning message is displayed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_NOVALIDATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Performs no check of the file name and requires the owner of a derived class to perform validation.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_NOCHANGEDIRCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Sets the current directory back to what it was when the dialog was initiated.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_ALLOWMULTISELECTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Allows multiple selections in the File Name list box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_CREATEPROMPTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks if the user wants to create a file that does not currently exist.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_EXTENSIONDIFFERENTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Idicates the user entered a file name different from the specified in ROLE='italic'DefExt. This message is returned to the caller.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_NOREADONLYRETURNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The returned file does not have the Read Only attribute set and is not in a write-protected directory. This message is returned to the caller.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_NOTESTFILECREATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The file is created after the dialog box is closed. If the application sets this flag, there is no check against write protection, a full disk, an open drive door, or network protection. For certain network environments, this flag should be set.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_OVERWRITEPROMPTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The Save As dialog box displays a message asking the user if it's OK to overwrite an existing file.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_SHAREAWARECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'If this flag is set and a call to open a file fails because of a sharing violation, the error is ignored and the dialog box returns the given file name. If this flag is not set, the virtual function ROLE='italic'ShareViolation is called, which returns OFN_SHAREWARN (by default) or one of the following values:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_SHAREFALLTHROUGHCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'File name is returned from the dialog box. OFN_SHARENOWARN No further action is taken.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_SHAREWARNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'User receives the standard warning message for this type of error.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OFN_SHOWHELPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Shows the Help button in the dialog box.InitialDirFORMAT="LINESPECIFIC"char* InitialDir;REMAP='BodyNoLead'ROLE='italic'InitialDir holds the directory to use initially when displaying file names.Public member functionsSetFilterFORMAT="LINESPECIFIC"void SetFilter(const char*filter = 0);REMAP='BodyNoLead'Makes a copy of the filter list used to display the file names.TOutStream classMOREINFO="NONE"docview.hREMAP='Body'Derived from ROLE='italic'TStream and ROLE='italic'ostream, ROLE='italic'TOutStream is a base class used to create output storage streams for a document.Public constructorConstructorFORMAT="LINESPECIFIC"TOutStream(TDocument& doc, const char far* name, int mode);REMAP='BodyNoLead'Constructs a ROLE='italic'TOutStream object. doc refers to the document object, ROLE='italic'name is the user-defined name of the stream, and ROLE='italic'mode is the mode of opening the stream.See alsoREMAP='BodyNoLead'TInStream, of XXXX document open enum, shxxx document sharing enumTPaintDC classMOREINFO="NONE"dc.hREMAP='Body'A DC class derived from ROLE='italic'TWindowDC that wraps begin and end paint calls for use in a WM_PAINT response function.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TPaintDC(HWND wnd);REMAP='BodyNoLead'Creates a ROLE='italic'TPaintDC object with the given owned window. The data member ROLE='italic'Wnd is set to ROLE='italic'wnd.See alsoREMAP='BodyNoLead'TWindowDC::Wnd, TDC::TDCDestructorFORMAT="LINESPECIFIC"~TPaintDC( );REMAP='BodyNoLead'Destroys this object.Public data memberPsFORMAT="LINESPECIFIC"PAINTSTRUCT Ps;REMAP='BodyNoLead'The paint structure associated with this ROLE='italic'TPaintDC object.See alsoREMAP='BodyNoLead'PAINTSTRUCT structProtected data memberWndFORMAT="LINESPECIFIC"HWND WndREMAP='BodyNoLead'The associated window handle.TPalette classMOREINFO="NONE"gdiobjec.hREMAP='Body'ROLE='italic'TPalette is the GDI Palette class derived from ROLE='italic'TGdiObect. The ROLE='italic'TPalette constructors can create palettes from explicit information or indirectly from various color table types that are used by DIBs.Public constructorsConstructorsFORMAT="LINESPECIFIC"TPalette(HPALETTE handle, TAutoDelete autoDelete = NoAutoDelete);REMAP='BodyNoLead'Creates a ROLE='italic'TPalette object and sets the ROLE='italic'Handle data member to the given borrowed ROLE='italic'handle. The ROLE='italic'ShouldDelete data member defaults to false, ensuring that the borrowed handle will not be deleted when the C++ object is destroyed.FORMAT="LINESPECIFIC"TPalette(const TClipboard&);REMAP='BodyNoLead'Creates a ROLE='italic'TPalette object with values taken from the given clipboard.FORMAT="LINESPECIFIC"TPalette(const TPalette& palette);REMAP='BodyNoLead'This public copy constructor creates a complete copy of the given ROLE='italic'palette object as inFORMAT="LINESPECIFIC"TPalette myPalette = yourPalette;FORMAT="LINESPECIFIC"TPalette(const LOGPALETTE far* logPalette);REMAP='BodyNoLead'Creates a ROLE='italic'TPalette object from the given ROLE='italic'logPalette array.FORMAT="LINESPECIFIC"TPalette(const PALETTEENTRY far* entries, int count);REMAP='BodyNoLead'Creates a ROLE='italic'TPalette object with ROLE='italic'count entries from the given ROLE='italic'entries arrray.FORMAT="LINESPECIFIC"TPalette(const BITMAPINFO far* info, uint flags = 0);REMAP='BodyNoLead'Creates a ROLE='italic'TPalette object from the color table following the given BITMAPINFO structure. This constructor works only for 2-, 16-, and 256-color bitmaps. A 0 handle is returned for other bitmaps including 24-bit DIBs.FORMAT="LINESPECIFIC"TPalette(const BITMAPCOREINFO far* core, uint flags = 0);REMAP='BodyNoLead'Presentation Manager (PM) 1.x DIBs only. Creates a ROLE='italic'TPalette object from the color table following the given BITMAPCOREINFO structure. This constructor works only for 2-, 16-, and 256-color bitmaps. A 0 handle is returned for other bitmaps including 24-bit DIBs. Note that every color in a PM 1.x table must be present because there is no ROLE='italic'ClrUsed field in the DIB header.FORMAT="LINESPECIFIC"TPalette(const TDib& dib, uint flags = 0);REMAP='BodyNoLead'Creates a ROLE='italic'TPalette object from the given DIB object. The ROLE='italic'flags argument represents the values of the data structure used to create the palette.FORMAT="LINESPECIFIC"TPalette( );REMAP='BodyNoLead'(ROLE='italic'PresentationROLE='italic' ManagerROLE='italic' only) Creates a ROLE='italic'TPalette object that uses the default system palette .See alsoREMAP='BodyNoLead'TClipboard::GetClipboardData, TGdiObject::Handle, TGdiObject::ShouldDelete, TPalette::GetPaletteEntries, BITMAPCOREINFO struct, BITMAPINFO struct, LOGPALETTE struct, PALETTEENTRY structPublic member functionsAnimatePaletteFORMAT="LINESPECIFIC"void AnimatePalette(uint start, uint count, const PALETTEENTRY far* entries);REMAP='BodyNoLead'Replaces entries in this logical palette from the ROLE='italic'entries array of PALETTEENTRY structures. ROLE='italic'start specifies the first entry to be animated, and ROLE='italic'count gives the number of entries to be animated. The new entries are mapped into the system palette immediately.See alsoREMAP='BodyNoLead'PALETTEENTRY structGetNearestPaletteIndexFORMAT="LINESPECIFIC"uint GetNearestPaletteIndex(TColor color) const;REMAP='BodyNoLead'Returns the index of the color entry that represents the best color in this palette to the given ROLE='italic'color.See alsoREMAP='BodyNoLead'TColorGetNumEntriesFORMAT="LINESPECIFIC"uint GetNumEntries( ) const;REMAP='BodyNoLead'Returns the number of entries in this palette or 0 if the call fails.See alsoREMAP='BodyNoLead'TGdiObject::GetObjectGetObjectFORMAT="LINESPECIFIC"bool GetObject(uint16 far& numEntries) const;REMAP='BodyNoLead'Finds the number of entries in this logical palette and sets the value in the ROLE='italic'numEntries argument. To find the entire LOGPALETTE structure, use ROLE='italic'GetPaletteEntries. Returns true if the call is successful; otherwise returns false.See alsoREMAP='BodyNoLead'TGdiObject::GetObject, TPalette::GetPaletteEntries, LOGPALETTE structGetPaletteEntriesFORMAT="LINESPECIFIC"uint GetPaletteEntries(uint16 start, uint16 count, PALETTEENTRY far* entries) const;REMAP='BodyNoLead'Retrieves a range of entries in this logical palette, and places them in the ROLE='italic'entries array. ROLE='italic'start specifies the first entry to be retrieved, and count gives the number of entries to be retrieved. Returns the number of entries actually retrieved, or 0 if the call fails.See alsoREMAP='BodyNoLead'PALETTEENTRY structGetPaletteEntryFORMAT="LINESPECIFIC"uint GetPaletteEntry(uint16 index, PALETTEENTRY far& entry) const;REMAP='BodyNoLead'Retrieves the entry in this logical palette at ROLE='italic'index, and places it in the ROLE='italic'entries array. Returns the number of entries actually retrieved: 1 if successful or 0 if the call fails.See alsoREMAP='BodyNoLead'TPalette::SetPaletteEntry, PALETTEENTRY structoperator <<FORMAT="LINESPECIFIC"TClipboard& operator << (TClipboard& clipboard, TPalette& palette);REMAP='BodyNoLead'Copies the given ROLE='italic'palette to the given ROLE='italic'clipboard argument. Returns a reference to the resulting clipboard, which allows normal chaining of <<.See alsoREMAP='BodyNoLead'TClipboardoperator HPALETTE( )FORMAT="LINESPECIFIC"operator HPALETTE( ) const;REMAP='BodyNoLead'Typecasting operator. Converts this palette's ROLE='italic'Handle to type HPALETTE, which is the data type representing the handle to a logical palette.ResizePaletteFORMAT="LINESPECIFIC"bool ResizePalette(uint numEntries);REMAP='BodyNoLead'Changes the size of this logical palette to the number given by ROLE='italic'numEntries. Returns true if the call is successful; otherwise returns false.See alsoREMAP='BodyNoLead'TPalette::AnimatePaletteSetPaletteEntriesFORMAT="LINESPECIFIC"uint SetPaletteEntries(uint16 start, uint16 count, const PALETTEENTRY far* entries);REMAP='BodyNoLead'Sets the RGB color values in this palette from the ROLE='italic'entries array of PALETTEENTRY structures. ROLE='italic'start specifies the first entry to be animated, and ROLE='italic'count gives the number of entries to be animated. Returns the number of entries actually set, or 0 if the call fails.See alsoREMAP='BodyNoLead'PALETTEENTRY structSetPaletteEntryFORMAT="LINESPECIFIC"uint SetPaletteEntry(uint16 index, const PALETTEENTRY far& entry);REMAP='BodyNoLead'Sets the RGB color value at index in this palette from the ROLE='italic'entry argument. ROLE='italic'start specifies the first entry to be animated, and count gives the number of entries to be animated. Returns 1 (the number of entries actually set if successful) or 0 if the call fails.See alsoREMAP='BodyNoLead'PALETTEENTRY structToClipboardFORMAT="LINESPECIFIC"void ToClipboard(TClipboard& clipboard);REMAP='BodyNoLead'Moves this palette to the target clipboard argument. If a copy is to be put on the Clipboard, use ROLE='italic'TPalette(ROLE='italic'myPalette).ROLE='italic'ToClipboard; to make a copy first. The handle in the temporary copy of the object will be moved to the clipboard. ROLE='italic'ToClipboard sets ROLE='italic'ShouldDelete to false so that the object on the clipboard is not deleted. The handle will still be available for examination.See alsoREMAP='BodyNoLead'TClipBoard::SetClipBoardDataUnrealizeObjectFORMAT="LINESPECIFIC"bool UnrealizeObject( );REMAP='BodyNoLead'Directs the GDI to completely remap the logical palette to the system palette on the next ROLE='italic'RealizePalette(ROLE='italic'HDC) or ROLE='italic'TDC::ROLE='italic'RealizePalette call. Returns true if the call is successful; otherwise false.See alsoREMAP='BodyNoLead'TDC::RealizePaletteProtected member functionsCreateFORMAT="LINESPECIFIC"void Create(const BITMAPINFO far* info, uint flags);FORMAT="LINESPECIFIC"void Create(const BITMAPCOREINFO far* core, uint flags);REMAP='Body'Sets values in this palette from the given bitmap structure. These functions are usually called by the constructor rather than directly.See alsoREMAP='BodyNoLead'TBITMAPCOREINFO struct, BITMAPINFO structTPaletteEntry classMOREINFO="NONE"color.hREMAP='Body'ROLE='italic'TPaletteEntry is a support class derived from the structure ROLE='italic'tagPALETTEENTRY. The latter is defined as follows:FORMAT="LINESPECIFIC"typedef struct tagPALETTEENTRY {
uint8 peRed;
uint8 peGreen;
uint8 peBlue;
uint8 peFlags;
} PALETTEENTRY;REMAP='Body'where ROLE='italic'peRed, ROLE='italic'peGreen, and ROLE='italic'peBlue specify the red, green, and blue intensity-values for a palette entry.REMAP='Body'The ROLE='italic'peFlags member can be set to NULL or one of the following values:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='84*'COLNAME='C2' COLWIDTH='291*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PC_EXPLICITCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies that the low-order word of the logical palette entry designates a hardware palette index. This flag allows the application to show the contents of the display device palette.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PC_NOCOLLAPSECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies that the color be placed in an unused entry in the system palette instead of being matched to an existing color in the system palette. If there are no unused entries in the system palette, the color is matched normally. Once this color is in the system palette, colors in other logical palettes can be matched to this color.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PC_RESERVEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies that the logical palette entry be used for palette animation; this prevents other windows from matching colors to this palette entry since the color frequently changes. If an unused system-palette entry is available, this color is placed in that entry. Otherwise, the color is available for animation.REMAP='Body'ROLE='italic'TPaletteEntry is used in conjunction with the classes ROLE='italic'TPalette and ROLE='italic'TColor to simplify logical color-palette operations. Constructors are provided to create ROLE='italic'TPaletteEntry objects from explicit COLORREF and RGB values, or from ROLE='italic'TColor objects.Public constructorsConstructorsFORMAT="LINESPECIFIC"TPaletteEntry(int r, int g, int b, int f = 0);REMAP='BodyNoLead'Creates a palette entry object with ROLE='italic'peRed, peGreen, peBlue, and ROLE='italic'peFlags set toROLE='italic' r, g, b, and ROLE='italic'f, respectively.FORMAT="LINESPECIFIC"TPaletteEntry(TColor c);REMAP='BodyNoLead'Creates a palette entry object with ROLE='italic'peRed, peGreen, peBlue, and ROLE='italic'peFlags set to ROLE='italic'r, g, b, and ROLE='italic'f, respectively.See alsoREMAP='BodyNoLead'tagPALETTEENTRY struct, TPaletteEntry(TColorc), TColor::Red, TColor::Green, TColor::BlueTPen classMOREINFO="NONE"gdiobjec.hREMAP='Body'TPen is derived from ROLE='italic'TGdiObject. It encapsulates the GDI pen tool. Pens can be constructed from explicit information or indirectly. ROLE='italic'TPen relies on the base class's destructor, ~ROLE='italic'TGdiObject.Public constructorsConstructorsFORMAT="LINESPECIFIC"TPen(HPEN handle, TAutoDelete autoDelete = NoAutoDelete);REMAP='BodyNoLead'Creates a ROLE='italic'TPen object and sets the ROLE='italic'Handle data member to the given borrowed handle. The ROLE='italic'ShouldDelete data member defaults to false, ensuring that the borrowed handle will not be deleted when the C++ object is destroyed.FORMAT="LINESPECIFIC"TPen(TColor color, int width=1, int style=PS_SOLID);REMAP='BodyNoLead'Creates a ROLE='italic'TPen object with the given values. The ROLE='italic'width argument is in device units, but if set to 0, a 1-pixel width is assumed. Sets ROLE='italic'Handle with the given default values. If ROLE='italic'color is black or white, ROLE='italic'width is one, ROLE='italic'style is solid, a stock pen handle is returned. The values for ROLE='italic'style are listed in the following table.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='81*'COLNAME='C2' COLWIDTH='294*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PS_SOLID COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Creates a solid pen.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PS_DASH COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Creates a dashed pen. Valid only when the pen width is one or less in device units.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PS_DOT COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Creates a dotted pen. Valid only when the pen width is one or less in device units.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PS_DASHDOTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Creates a pen with alternating dashes dots. Valid only when the pen width is one or less in device units.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PS_DASHDOTDOTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Creates a pen with alternating dashes double-dots. Valid only when the pen width is one or less in device units.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PS_NULL COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Creates a null pen.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PS_INSIDEFRAMECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Creates a solid pen. When this pen is used in any GDI drawing function that takes a bounding rectangle, the dimensions of the figure will be shrunk so that it fits entirely in the bounding rectangle, taking into account the width of the pen.FORMAT="LINESPECIFIC"TPen(const LOGPEN far* logPen);REMAP='BodyNoLead'Creates a ROLE='italic'TPen object from the given ROLE='italic'logPen values.FORMAT="LINESPECIFIC"TPen(const Tpen& pen);REMAP='BodyNoLead'The ROLE='italic'TPen copy constructor.FORMAT="LINESPECIFIC"TPen(uint32 penStyle, uint32 width, const TBrush& brush, uint32 styleCount, uint32* style);REMAP='BodyNoLead'(32-bit) Creates a ROLE='italic'TPen object with the given values.FORMAT="LINESPECIFIC"TPen(uint32 penStyle, uint32 width, const LOGBRUSH& logBrush, uint32 styleCount, uint32* style);REMAP='BodyNoLead'(32-bit) Creates a ROLE='italic'TPen object with the given values.See alsoREMAP='BodyNoLead'TColor, TGdiObject::Handle, TGdiObject::ShouldDelete, LOGBRUSH struct, LOGPEN structPublic member functionsGetObjectFORMAT="LINESPECIFIC"bool GetObject(LOGPEN far& logPen) const;REMAP='BodyNoLead'Retrieves information about this pen object and places it in the given ROLE='italic'LOGPEN structure. Returns true if the call is successful, otherwise false.See alsoREMAP='BodyNoLead'TGdiObject::GetObject, LOGPEN structoperator HPEN( )FORMAT="LINESPECIFIC"operator HPEN( ) const;REMAP='BodyNoLead'Typecasting operator. Converts this pen's ROLE='italic'Handle to type ROLE='italic'HPEN (the data type representing the handle to a logical pen).TPicResult enumMOREINFO="NONE"validate.hFORMAT="LINESPECIFIC"enum TPicResult {prComplete, prIncomplete, prEmpty, prError, prSyntax, prAmbiguous, prIncompNoFill};REMAP='BodyNoLead'ROLE='italic'TPicResult is the result type returned by the ROLE='italic'Picture member function of ROLE='italic'TPXPictureValidator. The result type indicates whether the data entered into the edit control matches a specified format. For example, ROLE='italic'prIncomplete indicates that the data entered is missing some information that was specified in the format picture of the data.See alsoREMAP='BodyNoLead'TPXPictureValidator::PictureTPlacement enumMOREINFO="NONE"gadgetwi.hFORMAT="LINESPECIFIC"enum TPlacement {Before, After};REMAP='BodyNoLead'Enumerates the placement of a gadget. The new gadget is inserted either before or after another gadget. REMAP='Body'You can control the placement of the new gadget by specifying a ROLE='italic'sibling gadget that the new gadget is inserted before or after. If the sibling argument in ROLE='italic'TGadgetWindow::Insert is 0 then the new gadget is inserted at the beginning or the end of the existing gadgets. By default, the new gadget is inserted at the end of the existing gadgets.See alsoREMAP='BodyNoLead'TGadgetWindow::InsertTPopupMenu classMOREINFO="NONE"menu.hREMAP='Body'ROLE='italic'TPopupMenu creates an empty pop-up menu to add to an existing window or pop-up menu. Public constructorsConstructorsFORMAT="LINESPECIFIC"TPopupMenu(TAutoDelete autoDelete = AutoDelete);REMAP='BodyNoLead'Constructs an empty pop-up menu.FORMAT="LINESPECIFIC"TPopupMenu(HMENU handle, TAutoDelete autoDelete = NoAutoDelete);REMAP='BodyNoLead'Alias constructor for a pop-up menu.Public member functionsTrackPopupMenuFORMAT="LINESPECIFIC"bool TrackPopupMenu(uint flags, int x, int y, int rsvd, HWND wnd, TRect* rect = 0);REMAP='BodyNoLead'Allows the application to create a pop-up menu at the specified location in the specified window. ROLE='italic'flags specifies a screen position and can be one of the TPM_ROLE='italic'xxxx values(TPM_CENTERALIGN, TPM_LEFTALIGN, TPM_RIGHTALIGN, TPM_LEFTBUTTON, or TPM_RIGHTBUTTON). wnd is the handle to the window that receives messages about the menu. ROLE='italic'x specifies the horizontal position in screen coordinates of the left side of the menu. ROLE='italic'y species the vertical position in screen coordinates of the top of the menu (for example, 0,0 specifies that a menu's left corner is in the top left corner of the screen). rect defines the area that the user can click without dismissing the menu.FORMAT="LINESPECIFIC"bool TrackPopupMenu(uint flags, TPoint& point, int rsvd, HWND wnd, TRect* rect = 0);REMAP='BodyNoLead'This function is the same as the previous ROLE='italic'TrackPopupMenu except that the ROLE='italic'x and ROLE='italic'y positions are specified in ROLE='italic'point.See alsoREMAP='BodyNoLead'TPM_xxxx (Windows API)TPreviewPage classMOREINFO="NONE"preview.hREMAP='Body'ROLE='italic'TPreviewPage displays a page of a document in a print preview window. To obtain the information needed to display the page, ROLE='italic'TPreviewPage interacts with ROLE='italic'TPrintPreviewDC and ROLE='italic'TPrintout. Specifically, it creates a ROLE='italic'TPrintPreviewDC from the window DC provided in ROLE='italic'Paint and passes that ROLE='italic'TPrintPreviewDC object to ROLE='italic'TPrintout's ROLE='italic'SetPrintParams member function. The sample program PRINT.CPP displays a sample print preview window.Public constructorConstructorFORMAT="LINESPECIFIC"TPreviewPage(TWindow* parent, TPrintout& printout, TPrintDC& prndc, TSize& printExtent, int pagenum = 1);REMAP='BodyNoLead'Constructs a ROLE='italic'TPreviewPage object where ROLE='italic'parent is the parent window, printout is a reference to the corresponding ROLE='italic'TPrintout object, ROLE='italic'prndc is a reference to the ROLE='italic'TPrintPreviewDC object, ROLE='italic'printExtent is the extent (width and height) in logical units of the printed page, and ROLE='italic'pagenum is the number of the preview page. ROLE='italic'TPreviewPage has the attributes of a visible child window with a thin border. Sets the background color of the preview page window to white.Public member functionsPaintFORMAT="LINESPECIFIC"void Paint(TDC& dc, bool, TRect& clip);REMAP='BodyNoLead'Displays the page in the preview window. To determine the preview page's attributes (line width, and so on), ROLE='italic'Paint calls several of ROLE='italic'TPrintout's member functions. Then, to adjust the printer object for previewing, ROLE='italic'Paint determines if the page fits in the preview window or if clipping is necessary. Finally, ROLE='italic'Paint passes clipping and banding information to ROLE='italic'TPrintout's ROLE='italic'PrintPage function, which is called to display the page in the preview window.See alsoREMAP='BodyNoLead'TPrintout::BeginPrinting, TPrintout::EndPrinting, TPrintout::PrintPageSetPageNumberFORMAT="LINESPECIFIC"void SetPageNumber(int newNum);REMAP='BodyNoLead'Sets ROLE='italic'newNum to the number of the page currently displayed in the preview window.Protected data membersPageNumFORMAT="LINESPECIFIC"void SetPageNumber(int newNum);REMAP='BodyNoLead'Sets ROLE='italic'newNum to the number of the page currently displayed in the preview window.PrintDCFORMAT="LINESPECIFIC"TPrintDC& PrintDC;REMAP='BodyNoLead'ROLE='italic'PrintDC& is a handle to the device context to use for printing.PrintExtentFORMAT="LINESPECIFIC"TSize PrintExtent;REMAP='BodyNoLead'Contains the extent (width and height) in logical units of the page.PrintoutFORMAT="LINESPECIFIC"TPrintout& Printout;REMAP='BodyNoLead'Holds a reference to the ROLE='italic'TPrintout object.Protected member functionsEvSizeFORMAT="LINESPECIFIC"void EvSize(uint sizeType, TSize& size);REMAP='BodyNoLead'Invalidates the entire window when the size of the page displayed in the preview window changes.Response table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='96*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SIZE COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvSizeTPrintDC classMOREINFO="NONE"dc.hREMAP='BodyNoLead'Derived from ROLE='italic'TDC, ROLE='italic'TPrintDC provides access to a printer.Public constructorsConstructorsFORMAT="LINESPECIFIC"TPrintDC(HDC handle, TAutoDelete autoDelete = NoAutoDelete);REMAP='BodyNoLead'Creates a ROLE='italic'TPrint object for the DC given by ROLE='italic'handle.FORMAT="LINESPECIFIC"TPrintDC(const char far* driver, const char far* device, const char far* output, const DEVMODE far* initData);REMAP='BodyNoLead'Creates a ROLE='italic'TPrint object given print driver, device, output, and data from the DEVMODE structure.See alsoREMAP='BodyNoLead'TDC, DEVMODE structPublic member functionsAbortDocFORMAT="LINESPECIFIC"int AbortDoc( );REMAP='BodyNoLead'Aborts the current print job on this printer and erases everything drawn since the last call to ROLE='italic'StartDoc. ROLE='italic'AbortDoc calls the user-defined function set with ROLE='italic'TPrintDC::SetAbortProc to abort a print job because of error or user intervention. ROLE='italic'TPrintDC::EndDoc should be used to terminate a successfully completed print job.REMAP='Body'If successful, ROLE='italic'AbortDoc returns a positive or zero value; otherwise a negative value is returned.See alsoREMAP='BodyNoLead'TPrintDC::EndDoc, TPrintDC::SetAbortProc, TPrintDC::EscapeBandInfoFORMAT="LINESPECIFIC"int BandInfo(TBandInfo& bandInfo);REMAP='BodyNoLead'Retrieves information about the banding capabilities of this device, and copies it to the given ROLE='italic'bandInfo structure. Returns 1 if the call is successful; returns 0 if the call fails or if this device does not support banding.See alsoREMAP='BodyNoLead'TBandInfo, TPrintDC::EscapeDeviceCapabilitiesFORMAT="LINESPECIFIC"static uint32 DeviceCapabilities(const char far* driver, const char far* device, const char far* port, int capability, char far* output=0, LPDEVMODE devmode=0);REMAP='BodyNoLead'Retrieves data about the specified ROLE='italic'capability of the named printer ROLE='italic'driver, ROLE='italic'device, and ROLE='italic'port, and places the results in the ROLE='italic'outputROLE='bold' char array. The driver, device, and port names must be zero-terminated strings. The ROLE='italic'devmode argument points to a DEVMODE ROLE='bold'struct. If ROLE='italic'devmode is 0 (the default), ROLE='italic'DeviceCapabilities retrieves the current default initialization values for the specified printer driver; otherwise, it retrieves the values contained in the DEVMODE structure. The format of the ROLE='italic'output array depends on the capability being queried. If ROLE='italic'output is 0 (the default), ROLE='italic'DeviceCapabilities returns the number of bytes required in the ROLE='italic'output array. Possible values for ROLE='italic'capability are as follows:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='108*'COLNAME='C2' COLWIDTH='267*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DC_BINNAMESCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function enumerates the paper bins on the given device. If a device driver supports this constant, the output array is a data structure that contains two members. The first member is an array identifying valid paper bins:REMAP='Tbl.Body'If a device driver supports this constant, the output array is a data structure that contains two members. The first member is an array identifying valid paper bins:REMAP='Tbl.Body'MOREINFO="NONE"short BinList[cBinMax]REMAP='Tbl.Body'The second member is an array of character strings specifying the bin names:REMAP='Tbl.Body'MOREINFO="NONE"char PaperNames[cBinMax][cchBinName]REMAP='Tbl.Body'If a device driver does not support this value, the ROLE='italic'output array is empty and the return value is NULL.REMAP='Tbl.Body'If ROLE='italic'output is NULL, the return value specifies the number of bins supported.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DC_BINSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function retrieves a list of constants that identify the available bins and copies the list to the ROLE='italic'output array.REMAP='Tbl.Body'If this array is NULL, the function returns the number of supported bins. The following bin identifiers can be returned:REMAP='Tbl.Body' DMBIN_AUTOREMAP='Tbl.Body' DMBIN_CASSETTEREMAP='Tbl.Body' DMBIN_ENVELOPEREMAP='Tbl.Body' DMBIN_ENVMANUALREMAP='Tbl.Body' DMBIN_FIRSTREMAP='Tbl.Body' DMBIN_LARGECAPACITYREMAP='Tbl.Body' DMBIN_LARGEFMTREMAP='Tbl.Body' DMBIN_LASTREMAP='Tbl.Body' DMBIN_LOWERREMAP='Tbl.Body' DMBIN_MANUALREMAP='Tbl.Body' DMBIN_MIDDLEREMAP='Tbl.Body' DMBIN_ONLYONEREMAP='Tbl.Body' DMBIN_SMALLFMTREMAP='Tbl.Body' DMBIN_TRACTORREMAP='Tbl.Body' DMBIN_UPPERCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DC_DRIVERCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function returns the driver version number.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DC_DUPLEXCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function returns the level of duplex support. The return value is 1 if the function supports duplex output; otherwise it is 0.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DC_ENUMRESOLUTIONSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function copies a list of available printer resolutions to the output array. The resolutions are copied as pairs of int32 integers; the first value of the pair specifies the horizontal resolution and the second value specifies the vertical resolution. If ROLE='italic'output is 0, the function returns the number of supported resolutions.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DC_EXTRACOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function returns the number of bytes required for the device-specific data that is appended to the DEVMODE structure.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DC_FIELDSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function returns a value indicating which members of the DEVMODE structure are set by the device driver. This value can be one or more of the following constants:REMAP='Tbl.Body' DM_ORIENTATIONREMAP='Tbl.Body' DM_PAPERSIZEREMAP='Tbl.Body' DM_PAPERLENGTHREMAP='Tbl.Body' DM_PAPERWIDTHREMAP='Tbl.Body' DM_SCALEREMAP='Tbl.Body' DM_COPIESREMAP='Tbl.Body' DM_DEFAULTSOURCEREMAP='Tbl.Body' DM_PRINTQUALITYREMAP='Tbl.Body' DM_COLORREMAP='Tbl.Body' DM_DUPLEXREMAP='Tbl.Body' DM_YRESOLUTIONREMAP='Tbl.Body' DM_TTOPTIONCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DC_FILEDEPENDENCIESCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function returns a list of files that must be loaded when the device driver is installed. If ROLE='italic'output is 0 and this value is specified, the function returns the number of file names that must be loaded. If ROLE='italic'output is nonzero, the function returns the specified number of 64-character file names.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DC_MAXEXTENTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function returns the maximum supported paper-size. These dimensions are returned in a POINT structure; the ROLE='italic'x member gives the maximum paper width and the ROLE='italic'y member gives the maximum paper length.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DC_MINEXTENTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function returns the minimum supported paper-size. These dimensions are returned in a POINT structure; the ROLE='italic'x member gives the minimum paper width and the ROLE='italic'y member gives the minimum paper length.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DC_ORIENTATIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'This function returns the number of degrees that a portrait-oriented paper is rotated counterclockwise to produce landscape orientation. if the return value is 0, there is no landscape orientation. If the return value is 90, the portrait-oriented paper is rotated 90 degrees (as is the case when HP laser printers are used). if the return value is 270, the portrait-oriented paper is rotated 270 degrees (as is the case when dot-matrix printers are used).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DC_PAPERNAMESCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'This function returns a list of supported paper names such as Letter size or Legal size. The ROLE='italic'output array points to an array containing the paper names. If the ROLE='italic'output array is 0, the function returns the number of available paper sizes. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DC_PAPERSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function retrieves a list of supported paper sizes and copies it to the ROLE='italic'output array. The function returns the number of sizes identified in the array. If ROLE='italic'output is 0, the function returns the number of supported paper sizes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DC_PAPERSIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function retrieves the supported paper sizes (specified in .1 millimeter units) and copies them to the ROLE='italic'output array.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DC_SIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function returns the size of the DEVMODE structure required by the given device driver.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DC_TRUETYPECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'This function returns the printer driver's TrueType font capabilities. The values returned can be one or more of the following constants:REMAP='Tbl.Body' DCTT_BITMAP Device supports printing TrueType fonts as graphics. (Dot-matrix and PCL printers)REMAP='Tbl.Body' DCTT_DOWNLOAD Device supports downloading TryeType fonts. (PostScript and PCL printers)REMAP='Tbl.Body' DCTT_SUBDEV Device supports substituting device fonts for TrueType fonts. (PostScript printers)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DC_VERSIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function returns the device driver version number.REMAP='Body'If ROLE='italic'DeviceCapabilities succeeds, the return value depends on the value of ROLE='italic'capability, as noted above. Otherwise, the return value is GDI_ERROR.See alsoREMAP='BodyNoLead'TDC::GetDeviceCaps, DEVMODE structEndDocFORMAT="LINESPECIFIC"int EndDoc( );REMAP='BodyNoLead'Ends the current print job on this printer. ROLE='italic'EndDoc should be called immediately after a successfully completed print job.ROLE='italic' TPrintDC::AbortDoc should be used to terminate a print job because of error or user intervention.REMAP='Body'If successful, ROLE='italic'EndDoc returns a positive or zero value; otherwise a negative value is returned.See alsoREMAP='BodyNoLead'TPrintDC::StartDoc, TPrintDC::AbortDoc, TPrintDC::EscapeEndPageFORMAT="LINESPECIFIC"int EndPage( );REMAP='BodyNoLead'Tells this printer's device driver that the application has finished writing to a page. If successful, ROLE='italic'EndPage returns a positive or zero value; otherwise a negative value is returned. Possible failure values are listed below:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SP_ERRORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'General error.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SP_APPABORTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Job terminated because the application's print-canceling function returned 0.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SP_USERABORTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'User terminated the job.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SP_OUTOFDISKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Insufficient disk space for spooling.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SP_OUTOFMEMORYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Insufficient memory for spooling.See alsoREMAP='BodyNoLead'TPrintDC::StartPage, TPrintDC::EscapeEscapeFORMAT="LINESPECIFIC"int Escape(int escape, int count=0, const void* inData=0, void* outData=0);REMAP='BodyNoLead'Allows applications to access the capabilities of a particular device that are not directly available through the GDI of this DC. The ROLE='italic'Escape call is specified by setting a mnemonic value in the ROLE='italic'escape argument. In Win32 the use of ROLE='italic'Escape with certain ROLE='italic'escape values has been replaced by specific functions. The names of these new functions are based on the corresponding ROLE='italic'escape mnemonic, as shown in the following table:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='123*'COLNAME='C2' COLWIDTH='251*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'ActionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ABORTDOCCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Superseded by ROLE='italic'TPrintDC_AbortDoc in Win32.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BANDINFOCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Obsolete in Win32. Because all printer drivers for Windows version 3.1 and later set the text flag in every band, this escape is useful only for older printer drivers.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BEGIN_PATHCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. This escape is specific to PostScript printers.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CLIP_TO_PATHCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. This escape is specific to PostScript printers.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DEVICEDATACOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Superseded in Win32. Applications should use the PASSTHROUGH escape to achieve the same functionality.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DRAFTMODECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Superseded in Win32. Applications can achieve the same functionality by setting the dmPrintQuality member of the DEVMODE structure to DMRES_DRAFT and passing this structure to the ROLE='italic'CreateDC function.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DRAWPATTERNRECTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ENABLEDUPLEXCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Superseded in Win32. Applications can achieve the same functionality by setting the ROLE='italic'dmDuplex member of the DEVMODE structure and passing this structure to the ROLE='italic'CreateDC function.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ENABLEPAIRKERNINGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ENABLERELATIVEWIDTHSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ENDDOCCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Superseded by ROLE='italic'TPrintDC_EndDoc in Win32.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'END_PATHCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. This escape is specific to PostScript printers.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ENUMPAPERBINSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Superseded in Win32. Applications can use ROLE='italic'TPrintDC::DeviceCapabilities to achieve the same functionality.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ENUMPAPERMETRICSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Superseded in Win32. Applications can use ROLE='italic'TPrintDC::DeviceCapabilities to achieve the same functionality.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EPSPRINTINGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. This escape is specific to PostScript printers.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EXT_DEVICE_CAPSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Superseded in Win32. Applications can use ROLE='italic'TDC::ROLE='italic'GetDeviceCaps to achieve the same functionality. This escape is specific to PostScript printers.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EXTTEXTOUTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Superseded in Win32. Applications can use ROLE='italic'TDC::ExtTextOut to achieve the same functionality. This escape is not supported by the version 3.1 PCL driver.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FLUSHOUTPUTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Removed for Win32.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GETCOLORTABLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Removed for Win32.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GETEXTENDEDTEXTMETRICSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. Support for this escape might change in future versions of Windows.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GETEXTENTTABLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Superseded in Win32. Applications can use ROLE='italic'::GetCharWidth to achieve the same functionality. This escape is not supported by the version 3.1 PCL or PostScript drivers.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GETFACENAMECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. This escape is specific to PostScript printers.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GETPAIRKERNTABLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GETPHYSPAGESIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. Support for this escape might change in future versions of Windows.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GETPRINTINGOFFSETCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. Support for this escape might change in future versions of Windows.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GETSCALINGFACTORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. Support for this escape might change in future versions of Windows.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GETSETPAPERBINSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Superseded in Win32. Applications can achieve the same functionality by calling ROLE='italic'TPrintDC::DeviceCapabilities to find the number of paper bins, calling ROLE='italic'::ExtDeviceMode to find the current bin, and then setting the ROLE='italic'dmDefaultSource member of the DEVMODE structure and passing this structure to the ROLE='italic'CreateDC function. GETSETPAPERBINS changes the paper bin only for the current device context. A new device context will use the system-default paper bin until the bin is explicitly changed for that device context.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GETSETPAPERMETRICSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Obsolete in Win32. Applications can use ROLE='italic'TPrintDC::DeviceCapabilities and ROLE='italic'::ExtDeviceMode to achieve the same functionality.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GETSETPAPERORIENTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Obsolete in Win32. Applications can achieve the same functionality by setting the ROLE='italic'dmOrientation member of the DEVMODE structure and passing this structure to the ROLE='italic'CreateDC function. This escape is not supported by the Windows 3.1 PCL driver.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GETSETSCREENPARAMSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GETTECHNOLOGYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. Support for this escape might change in future versions of Windows. This escape is not supported by the Windows 3.1 PCL driver.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GETTRACKKERNTABLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GETVECTORBRUSHSIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. Support for this escape might change in future versions of Windows.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GETVECTORPENSIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. Support for this escape might change in future versions of Windows.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MFCOMMENTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'NEWFRAMECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. Applications should use ::ROLE='italic'StartPage and ::ROLE='italic'EndPage instead of this escape. Support for this escape might change in future versions of Windows.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'NEXTBANDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. Support for this escape might change in future versions of Windows.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PASSTHROUGHCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'QUERYESCAPESUPPORTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RESTORE_CTMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. This escape is specific to PostScript printers.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SAVE_CTMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. This escape is specific to PostScript printers.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SELECTPAPERSOURCECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Obsolete in Win32. Applications can achieve the same functionality by using ROLE='italic'TPrintDC::DeviceCapabilities.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SETABORTPROCCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Superseded in Win32 by ROLE='italic'::SetAbortProc. See ROLE='italic'TPrintDC::SetAbortProc.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SETALLJUSTVALUESCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. Support for this escape might change in future versions of Windows. This escape is not supported by the Windows 3.1 PCL driver.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SET_ARC_DIRECTIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. This escape is specific to PostScript printers.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SET_BACKGROUND_COLORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. Applications should use ROLE='italic'::SetBkColor instead of this escape. Support for this escape might change in future versions of Windows.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SET_BOUNDSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. This escape is specific to PostScript printers.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SETCOLORTABLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. Support for this escape might change in future versions of Windows.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SETCOPYCOUNTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Superseded in Win32. An application should call ROLE='italic'TPrintDC::ROLE='italic'DeviceCapabilities, specifying DC_COPIES for the ROLE='italic'capability parameter, to find the maximum number of copies the device can make. Then the application can set the number of copies by passing to the CreateDC function a pointer to the DEVMODE structure.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SETKERNTRACKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SETLINECAPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. This escape is specific to PostScript printers.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SETLINEJOINCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. This escape is specific to PostScript printers.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SETMITERLIMITCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. This escape is specific to PostScript printers.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SET_POLY_MODECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. This escape is specific to PostScript printers.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SET_SCREEN_ANGLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SET_SPREADCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'STARTDOCCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Superseded in Win32. Applications should call ROLE='italic'::StartDoc instead of this escape.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TRANSFORM_CTMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No changes for Win32. This escape is specific to PostScript printers.REMAP='Body'Escape calls are translated and sent to the printer device driver. The ROLE='italic'inData buffer lets you supply any data needed for the escape. You must set ROLE='italic'count to the size (in bytes) of the ROLE='italic'inData buffer. If no input data is required, ROLE='italic'inData and ROLE='italic'count should be set to the default value of 0. Similarly, you must supply an ROLE='italic'outData buffer for those ROLE='italic'Escape calls that retrieve data. If the escape does not supply output, set ROLE='italic'outData to the default value of 0.NextBandFORMAT="LINESPECIFIC"int NextBand(TRect& rect);REMAP='BodyNoLead'Tells this printer's device driver that the application has finished writing to a band. The device driver sends the completed band to the Print Manager and copies the coordinates of the next band in the rectangle specified by ROLE='italic'rect.REMAP='Body'If successful, ROLE='italic'NextBand returns a positive or zero value; otherwise a negative value is returned. Possible failure values are listed below:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SP_ERRORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'General error.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SP_APPABORTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Job terminated because the application's print-canceling function returned 0.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SP_USERABORTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'User terminated the job.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SP_OUTOFDISKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Insufficient disk space for spooling.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SP_OUTOFMEMORYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Insufficient memory for spooling.See alsoREMAP='BodyNoLead'TPrintDC::Escape, TPrintDC::BandInfoQueryAbortFORMAT="LINESPECIFIC"bool QueryAbort(int rsvd=0);REMAP='BodyNoLead'16-bit applications only. Tries to call the ROLE='italic'AbortProc callback function for this printer to determine if a print job should be aborted or not. ROLE='italic'QueryAbort returns the value returned by ROLE='italic'AbortProc or true if no such callback function exists. true indicates that printing should continue; false indicates that the print job should be terminated. The ROLE='italic'rsvd argument is a reserved value that should be set to 0.See alsoREMAP='BodyNoLead'TPrintDC::SetAbortProc, TPrintDC::AbortDocQueryEscSupportFORMAT="LINESPECIFIC"uint QueryEscSupport(int escapeNum);REMAP='BodyNoLead'Returns true if the escape specified by ROLE='italic'escapeNum is implemented on this device; otherwise false.See alsoREMAP='BodyNoLead'TPrintDC::EscapeSetAbortProcFORMAT="LINESPECIFIC"int SetAbortProc(ABORTPROC proc);REMAP='BodyNoLead'Establishes the user-defined ROLE='italic'proc as the printer-abort function for this printer. This function is called by ROLE='italic'TPrintDC::AbortDoc to cancel a print job during spooling.REMAP='Body'ROLE='italic'SetAbortProc returns a positive (nonzero) value if successful; otherwise it returns a negative (nonzero) value.See alsoREMAP='BodyNoLead'TPrintDC::EscapeSetCopyCountFORMAT="LINESPECIFIC"int SetCopyCount(int reqestCount, int& actualCount);REMAP='BodyNoLead'Sets ROLE='italic'requestCount to the number of uncollated copies of each page that this printer should print. The actual number of copies to be printed is copied to ROLE='italic'actualCount. The actual count will be less than the requested count if the latter exceeds the maximum allowed for this device. ROLE='italic'SetCopyCount returns 1 if successful; otherwise, it returns 0.See alsoREMAP='BodyNoLead'TPrintDC::DeviceCapabilities, TPrintDC::EscapeStartDocFORMAT="LINESPECIFIC"int StartDoc(const char far* docName, const char far* output);REMAP='BodyNoLead'Starts a print job for the named document on this printer DC. If successful, ROLE='italic'StartDoc returns a positive value, the job ID for the document. If the call fails, the value SP_ERROR is returned. Detailed error information can be obtained by calling ROLE='italic'GetLastError.REMAP='Body'This function replaces the earlier ROLE='italic'::Escape call with value STARTDOC.See alsoREMAP='BodyNoLead'TPrintDC::EndDoc, TPrintDC::EscapeStartPageFORMAT="LINESPECIFIC"int StartPage( );REMAP='BodyNoLead'Prepares this device to accept data. The system disables ::ROLE='italic'ResetDC between calls to ROLE='italic'StartPage and ROLE='italic'EndPage, so that applications cannot change the device mode except at page boundaries. If successful, ROLE='italic'StartPage returns a positive value; otherwise, a negative or zero value is returned.See alsoREMAP='BodyNoLead'TPrintDC::EndPageProtected data memberDocInfoFORMAT="LINESPECIFIC"DOCINFO DocInfo;REMAP='BodyNoLead'Holds the input and output file names used by ROLE='italic'TPrintDC::StartDoc. The DOCINFO structure is defined as follows:FORMAT="LINESPECIFIC"typedef struct {
int cbSize; // size of the structure, bytes
DocInfo lpszDocName; // document name <= 32 chars inc. final 0
DocInfo lpszOutput; // output file name
} DOCINFO;REMAP='Body'The ROLE='italic'lpszOutput field allows a print job to be redirected to a file. If this field is NULL, the output will go to the device for the specified DC.See alsoREMAP='BodyNoLead'TPrintDC::StartDocTPrintDialog::TData structMOREINFO="NONE"printdia.hREMAP='Body'ROLE='italic'TPrintDialog::TData contains information required to initialize the printer dialog box with the user's print selections. This information consists of the number of copies to be printed, the first and last pages to print, the maximum and minimum number of pages that can be printed and various flag values that indicate whether the Pages radio button is displayed, the Print to File check box is enabled, and so on. ROLE='italic'TPrintDialog uses this struct to initialize the print dialog box. Whenever the user changes the print requirements, this struct is updated.REMAP='Body'If an error occurs, ROLE='italic'TPrintDialog::TData returns one of the common dialog extended error codes. ROLE='italic'TPrintDialog::TData also takes care of locking and unlocking memory associated with the DEVMODE and DEVNAMES structures, which contain information about the printer driver, the printer, and the output printer port.REMAP='Body'ROLE='italic'TPrinter has access to this information through its data member, ROLE='italic'Data.See alsoREMAP='BodyNoLead'TPrintDialog, TPrinterPublic data membersCopiesFORMAT="LINESPECIFIC"int Copies;REMAP='BodyNoLead'ROLE='italic'Copies indicates the actual number of pages to be printed.ErrorFORMAT="LINESPECIFIC"uint32 Error;REMAP='BodyNoLead'If the dialog box is successfully executed, ROLE='italic'Error returns 0. Otherwise, it contains one of the following error codes.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='145*'COLNAME='C2' COLWIDTH='193*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_DIALOGFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to create a dialog box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_FINDRESFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to find a specified resource.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_INITIALIZATIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to initialize the common dialog box function.REMAP='Tbl.Body'A lack of sufficient memory can generate this error.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_LOCKRESOURCEFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to lock a specified resource.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_LOADRESFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to load a specified resource.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_LOADSTRFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Failed to load a specified string.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_MEMALLOCFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Unable to allocate memory for internal data structures.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_MEMLOCKFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Unable to lock the memory associated with a handle.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CDERR_REGISTERMSGFAILCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A message, designed for the purpose of communicating between two applications, could not be registered. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PDERR_CREATEICFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TPrintDialog failed to create an information context.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PDERR_DEFAULTDIFFERENTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The printer described by structure members doesn't match the default printer. This error message can occur if the user changes the printer specified in the control panel.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PDERR_DNDMMISMATCHCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The printer specified in ROLE='italic'DevMode and in ROLE='italic'DevNames is different.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PDERR_GETDEVMODEFAILCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The printer device-driver failed to initialize the ROLE='italic'DevMode structure.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PDERR_INITFAILURE COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The ROLE='italic'TPrintDialog structure could not be initialized.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PDERR_LOADDRVFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The specified printer's device driver could not be loaded.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PDERR_NODEFAULTPRNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A default printer could not be identified.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PDERR_NODEVICESCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No printer drivers exist.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PDERR_PARSEFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The string in the [devices] section of the WIN.INI file could not be parsed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PDERR_PRINTERNOTFOUNDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The [devices] section of the WIN.INI file doesn't contain the specified printer.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PDERR_RETDEFFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Either ROLE='italic'DevMode or ROLE='italic'DevNames contain zero.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PDERR_SETUPFAILURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TPrintDialog failed to load the required resources.FlagsFORMAT="LINESPECIFIC"uint32 Flags;REMAP='BodyNoLead'ROLE='italic'Flags, which are used to initialize the printer dialog box, can be one or more of the following values that control the appearance and functionality of the dialog box:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='115*'COLNAME='C2' COLWIDTH='223*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PD_ALLPAGES COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates that the All radio button was selected when the user closed the dialog box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PD_COLLATE COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Causes the Collate checkbox to be checked when the dialog box is created.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PD_DISABLEPRINTTOFILECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Disables the Print to File check box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PD_HIDEPRINTTOFILECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Hides and disables the Print to File check box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PD_NOPAGENUMS COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Disables the Pages radio button and the associated edit control.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PD_NOSELECTIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Disables the Selection radio button.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PD_NOWARNING COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Prevents the warning message from being displayed when there is no default printer.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PD_PAGENUMS COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Selects the Pages radio button when theCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'dialog box is created.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PD_PRINTSETUP COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Displays the Print Setup dialog box rather than the Print dialog box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PD_PRINTTOFILECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Checks the Print to File check box when the dialog box is created.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PD_RETURNDC COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Returns a device context matching the selections that the user made in the dialog box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PD_RETURNDEFAULTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Returns ROLE='italic'DevNames structures that are initialized for the default printer without displaying a dialog box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PD_RETURNIC COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Returns an information context matching the selections that the user made in the dialog box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PD_SELECTION COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Selects the Selection radio button when the dialog box is created.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PD_SHOWHELP COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Shows the Help button in the dialog box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PD_USEDEVMODECOPIESCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'If a printer driver supports multiple copies, setting this flag causes the requested number of copies to be stored in the ROLE='italic'dmCopies member of the ROLE='italic'DevMode structure and 1 in ROLE='italic'Copies. If a printer driver does not support multiple copies, setting this flag disables the ROLE='italic'Copies edit control. If this flag is not set, the number 1 is stored in ROLE='italic'DevMode and the requested number of copies in ROLE='italic'Copies.FromPageFORMAT="LINESPECIFIC"int FromPage;REMAP='BodyNoLead'ROLE='italic'FromPage indicates the beginning page to print.See alsoREMAP='BodyNoLead'TPrintDialog::TData::ToPageMaxPageFORMAT="LINESPECIFIC"int MaxPage;REMAP='BodyNoLead'ROLE='italic'MaxPage indicates the maximum number of pages that can be printed.MinPageFORMAT="LINESPECIFIC"int MinPage;REMAP='BodyNoLead'ROLE='italic'MinPage indicates the minimum number of pages that can be printed.ToPageFORMAT="LINESPECIFIC"int ToPage;REMAP='BodyNoLead'ROLE='italic'ToPage indicates the ending page to print.See alsoREMAP='BodyNoLead'TPrintDialog::TData::FromPagePublic member functionsClearDevModeFORMAT="LINESPECIFIC"void ClearDevMode( );REMAP='BodyNoLead'Clears device mode information (information necessary to initialize the dialog controls).ClearDevNamesFORMAT="LINESPECIFIC"void ClearDevNames( );REMAP='BodyNoLead'Clears the device name information (information that contains three strings used to specify the driver name, the printer name, and the output port name).GetDeviceNameFORMAT="LINESPECIFIC"const char far* GetDeviceName( ) const;REMAP='BodyNoLead'Gets the name of the output device.GetDevModeFORMAT="LINESPECIFIC"const DEVMODE far* GetDevMode( ) const;REMAP='BodyNoLead'Gets a pointer to a DEVMODE structure (a structure containing information necessary to initialize the dialog controls).GetDevNamesFORMAT="LINESPECIFIC"const DEVNAMES far* GetDevNames( ) const;REMAP='BodyNoLead'Gets a pointer to a DEVNAMES structure (a structure containing three strings used to specify the driver name, the printer name, and the output port name).GetDriverNameFORMAT="LINESPECIFIC"const char far* GetDriverName( ) const;REMAP='BodyNoLead'Gets the name of the printer device driver.GetOutputNameFORMAT="LINESPECIFIC"const char far* GetOutputName( ) const;REMAP='BodyNoLead'Gets the name of the physical output medium.LockFORMAT="LINESPECIFIC"void Lock( );REMAP='BodyNoLead'Locks memory associated with the DEVMODE and DEVNAMES structures.SetDevModeFORMAT="LINESPECIFIC"void SetDevMode(const DEVMODE far* devMode);REMAP='BodyNoLead'Sets the values for the DEVMODE structure.SetDevNamesFORMAT="LINESPECIFIC"void SetDevNames(const char far* driver, const char far* device, const char far* output);REMAP='BodyNoLead'Sets the values for the DEVNAMES structure.TransferDCFORMAT="LINESPECIFIC"TPrintDC* TransferDC( );REMAP='BodyNoLead'Creates and returns a ROLE='italic'TPrintDC with the current settings.UnlockFORMAT="LINESPECIFIC"void Unlock( );REMAP='BodyNoLead'Unlocks memory associated with the DEVMODE and DEVNAMES structures.TPrintDialog classMOREINFO="NONE"printdia.hREMAP='Body'ROLE='italic'TPrintDialog displays either a modal print or a print setup dialog box. The print dialog box lets you specify the characteristics of a particular print job. The setup dialog box lets you configure the printer and specify additional print job characteristics. You can also use ROLE='italic'TPrinter and ROLE='italic'TPrintout to provide support for printer dialog boxes. ROLE='italic'TPrintDialog uses the ROLE='italic'TPrintDialog::TData struct to initialize the dialog box with the user's printer options, such as the number of pages to print, the output device, and so on.See alsoREMAP='BodyNoLead'TPrintDialog::TData struct, TPrinter, TPrintoutPublic constructorConstructorFORMAT="LINESPECIFIC"TPrintDialog(TWindow* parent, TData& data, const char far* printTemplateName=0, const char far* setupTemplateName=0, const char far* title=0, TModule* module=0);REMAP='BodyNoLead'Constructs a print or print setup dialog box with specified data from the ROLE='italic'TPrintDialog::TData structure, parent window, window caption, print and setup templates, and module. See alsoREMAP='BodyNoLead'TPrintDialog::TData structPublic member functionsDoExecuteFORMAT="LINESPECIFIC"int DoExecute( );REMAP='BodyNoLead'If no error occurs, ROLE='italic'DoExecute copies flags and print specifications into the ROLE='italic'data argument in the constructor. If an error occurs, ROLE='italic'DoExecute sets the error number of ROLE='italic'data to an error code from ROLE='italic'TPrintDialog::TData::Error .See alsoREMAP='BodyNoLead'TPrintDialog::TData::ErrorGetDefaultPrinterFORMAT="LINESPECIFIC"bool GetDefaultPrinter( );REMAP='BodyNoLead'Without displaying a dialog box, ROLE='italic'GetDefaultPrinter gets the device mode and name that are initialized for the system default printer.Protected data membersDataFORMAT="LINESPECIFIC"TData& Data;REMAP='BodyNoLead'Data is a reference to the ROLE='italic'TData object passed in the constructor. The ROLE='italic'TData object contains print specifications such as the number of copies to be printed, the number of pages, the ouput device name, and so on.See alsoREMAP='BodyNoLead'TPrintDialog::TData structpdFORMAT="LINESPECIFIC"PRINTDLG pd;REMAP='BodyNoLead'Specifies the dialog box print job characteristics such as page range, number of copies, device context, and so on necessary to initialize the print or print setup dialog box. See alsoREMAP='BodyNoLead'TPrintDialog::TData structProtected member functionsCmSetupFORMAT="LINESPECIFIC"void CmSetup( );REMAP='BodyNoLead'Responds to the click of the setup button with an EV_COMMAND message.DialogFunctionFORMAT="LINESPECIFIC"bool DialogFunction(uint message, WPARAM, LPARAM);REMAP='BodyNoLead'Returns ROLE='bold'true if a message is handled.See alsoREMAP='BodyNoLead'TDialog::DialogFunctionResponse table entriesREMAP='Body'The ROLE='italic'TPrintDialog response table has no entries.TPrinter classMOREINFO="NONE"printer.hREMAP='Body'ROLE='italic'TPrinter represents the physical printer device. To print or configure a printer, initialize an instance of ROLE='italic'TPrinter.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TPrinter( );REMAP='BodyNoLead'Constructs an instance of ROLE='italic'TPrinter associated with the default printer. To change the printer, call ROLE='italic'SetDevice after the object has been initialized or call ROLE='italic'Setup to let the user select the new device through a dialog box.DestructorFORMAT="LINESPECIFIC"virtual ~TPrinter( );REMAP='BodyNoLead'Frees the resources allocated to ROLE='italic'TPrinter.Public member functionsClearDeviceFORMAT="LINESPECIFIC"virtual void ClearDevice( );REMAP='BodyNoLead'Called by ROLE='italic'SetPrinter and the Destructor, ROLE='italic'ClearDevice disassociates the device with the current printer. ROLE='italic'ClearDevice changes the current status of the printer to PF_UNASSOCIATED, which causes the object to ignore all calls to ROLE='italic'Print until the object is reassociated with a printer.GetSetupFORMAT="LINESPECIFIC"TPrintDialog::TData& GetSetup( );REMAP='BodyNoLead'Returns a reference to the ROLE='italic'TPrintDialog data structure.GetUserAbortFORMAT="LINESPECIFIC"static bool GetUserAbort( );REMAP='BodyNoLead'Returns ROLE='bold'true if the user has chosen to stop printing through the printing dialog. Returns ROLE='bold'false otherwise.PrintFORMAT="LINESPECIFIC"virtual bool Print(TWindow* parent, TPrintout& printout, bool prompt);REMAP='BodyNoLead'ROLE='italic'Print renders the given printout object on the associated printer device and displays an Abort dialog box while printing. It displays any errors encountered during printing. Prompt allows you to show the user a window. See alsoREMAP='BodyNoLead'TPrinter::ErrorReportErrorFORMAT="LINESPECIFIC"virtual void ReportError(TWindow* parent, TPrintout& printout);REMAP='BodyNoLead'ROLE='italic'Print calls ROLE='italic'ReportError if it encounters an error. By default, it brings up the system message box with an error string created from the default string table. This function can be overridden to show a custom error dialog box.SetupFORMAT="LINESPECIFIC"virtual void Setup(TWindow* parent);REMAP='BodyNoLead'ROLE='italic'Setup lets the user select and/or configure the currently associated printer. ROLE='italic'Setup opens a dialog box as a child of the given window. The user then selects one of the buttons in the dialog box to select or configure the printer. The form of the dialog box is based on ROLE='italic'TPrintDialog, the common dialog printer class.SetUserAbortFORMAT="LINESPECIFIC"static void SetUserAbort(bool abort=true);REMAP='BodyNoLead'Sets the printing abort flag.Protected data membersBandRectFORMAT="LINESPECIFIC"TRect BandRect;REMAP='BodyNoLead'ROLE='italic'BandRect specifies the size of the banding rectangle.DataFORMAT="LINESPECIFIC"TPrintDialog::TData* Data;REMAP='BodyNoLead'ROLE='italic'Data is a pointer to the ROLE='italic'TPrintDialog data structure that contains information about the user's print selection.See alsoREMAP='BodyNoLead'TPrintDialog::TData structErrorFORMAT="LINESPECIFIC"int Error;REMAP='BodyNoLead'ROLE='italic'Error is the error code returned by GDI during printing. This value is initialized during a call to ROLE='italic'Print.FirstBandFORMAT="LINESPECIFIC"bool FirstBand;REMAP='BodyNoLead'ROLE='italic'FirstBand is set to ROLE='bold'true if the first band of the print job is being printed, otherwise ROLE='bold'false.FlagsFORMAT="LINESPECIFIC"unsigned Flags;REMAP='BodyNoLead'The ROLE='italic'Flags data member specifies whether the printout bands contain graphics bands, text bands, or both. The valid flag values are enumerated by ROLE='italic'TPrintoutFlags:FORMAT="LINESPECIFIC"enum TPrintoutFlags {
pfGraphics // Current band accepts graphics
pfText // Current band accepts text
pfBoth // Current band accepts either graphics or text
};PageSizeFORMAT="LINESPECIFIC"TSize PageSize;REMAP='BodyNoLead'ROLE='italic'PageSize specifies the size of the printed page, as specifed in the device context.UseBandInfoFORMAT="LINESPECIFIC"bool UseBandInfo;REMAP='BodyNoLead'ROLE='italic'UseBandInfo is set to true if the printer supports banding, otherwise it's set to false.Protected member functionsCalcBandingFlagsFORMAT="LINESPECIFIC"void CalcBandingFlags(TPrintDC& prnDC);REMAP='BodyNoLead'ROLE='italic'CalcBandingFlags determines if there are either text and graphics bands, and sets data member ROLE='italic'Flags accordingly.CreateAbortWindowFORMAT="LINESPECIFIC"virtual TWindow* CreateAbortWindow(TWindow* parent, TPrintout& printout);REMAP='BodyNoLead'Creates a printer abort dialog message box.ExecPrintDialogFORMAT="LINESPECIFIC"virtual bool ExecPrintDialog(TWindow* parent);REMAP='BodyNoLead'Executes a ROLE='italic'TPrintDialog.GetDefaultPrinterFORMAT="LINESPECIFIC"virtual void GetDefaultPrinter( );REMAP='BodyNoLead'Updates the ROLE='italic'printer structure with information about the user's default printer.SetPrinterFORMAT="LINESPECIFIC"virtual void SetPrinter(const char* driver, const char* device, const char* output);REMAP='BodyNoLead'MOREINFO="NONE"SetPrinter changes the printer device association. ROLE='italic'Setup calls ROLE='italic'SetPrinter to change the association interactively. The valid parameters to this method can be found in the [devices] section of the WIN.INI file.REMAP='Body'Entries in the [devices] section have the following format:FORMAT="LINESPECIFIC"<device name>=<driver>, <port> {, <port>}TPrinter::TXPrinter classMOREINFO="NONE"printer.hREMAP='Body'A nested class, ROLE='italic'TXPrinter describes an exception that results from an invalid printer object. This type of error can occur when printing to the physical printer.Public constructorsConstructorsFORMAT="LINESPECIFIC"TXPrinter(uint resId = IDS_PRINTERERROR);REMAP='BodyNoLead'Constructs a ROLE='italic'TXPrinter object with a default IDS_PRINTERERROR message.TPrinterAbortDlg classMOREINFO="NONE"printer.hREMAP='Body'ROLE='italic'TPrinterAbortDlg is the object type of the default printer-abort dialog box. This dialog box is initialized to display the title of the current printout, as well as the device and port currently used for printing.REMAP='Body'ROLE='italic'TPrinterAbortDlg expects to have three static text controls, with control IDs of 101 for the title, 102 for the device, and 103 for the port. These controls must have "%s" somewhere in the text strings so that they can be replaced by the title, device, and port. The dialog-box controls can be in any position and tab order.Public constructorConstructorFORMAT="LINESPECIFIC"TPrinterAbortDlg(TWindow* parent, TResId resId, const char far* title, const char far* device, const char far* port);REMAP='BodyNoLead'Constructs an Abort dialog box that contains a Cancel button and displays the given title, device, and port.Protected member functionsEvCommandFORMAT="LINESPECIFIC"virtual LRESULT EvCommand(uint id, HWND hWndCtl, uint notifyCode);REMAP='BodyNoLead'Handles the Cancel button on the Printer-abort dialog box.SetupWindowFORMAT="LINESPECIFIC"void SetupWindow( );REMAP='BodyNoLead'Associates objects with the dialog resource template so that the title, device, and port can be determined for printing. See the description of ROLE='italic'TPrintoutFlags for information about printing flags and printer status information.See alsoREMAP='BodyNoLead'TPrintoutFlags enumTPrintout classMOREINFO="NONE"printer.hREMAP='Body'ROLE='italic'TPrintout represents the physical printed document that is to sent to a printer to be printed. ROLE='italic'TPrintout does the rendering of the document onto the printer. Because this object type is abstract, it cannot be used to print anything by itself. For every document, or document type, a class derived from ROLE='italic'TPrintout must be created and its ROLE='italic'PrintPage function must be overridden.Public constructor and destructorConstructor FORMAT="LINESPECIFIC"TPrintout(const char far* title);REMAP='BodyNoLead'Constructs an instance of ROLE='italic'TPrintOut with the given title.DestructorFORMAT="LINESPECIFIC"virtual ~TPrintout( );REMAP='BodyNoLead'Destroys the resources allocated by the constructor.Public member functionsBeginDocumentFORMAT="LINESPECIFIC"virtual void BeginDocument(int startPage, int endPage, unsigned flags);REMAP='BodyNoLead'The printer object's ROLE='italic'Print function calls ROLE='italic'BeginDocument once before printing each copy of a document. The ROLE='italic'flags field indicates if the current print band accepts graphics, text, or both.REMAP='Body'The default ROLE='italic'BeginDocument does nothing. Derived objects can override ROLE='italic'BeginDocument to perform any initialization needed at the beginning of each copy of the document.See alsoREMAP='BodyNoLead'TPrintoutFlags enumBeginPrintingFORMAT="LINESPECIFIC"virtual void BeginPrinting( );REMAP='BodyNoLead'The printer object's ROLE='italic'Print function calls ROLE='italic'BeginPrinting once at the beginning of a print job, regardless of how many copies of the document are to be printed. Derived objects can override ROLE='italic'BeginPrinting to perform any initialization needed before printing.EndDocumentFORMAT="LINESPECIFIC"virtual void EndDocument( );REMAP='BodyNoLead'The printer object's ROLE='italic'Print function calls ROLE='italic'EndDocument after each copy of the document finishes printing. Derived objects can override ROLE='italic'EndDocument to perform any needed actions at the end of each document.EndPrintingFORMAT="LINESPECIFIC"virtual void EndPrinting( );REMAP='BodyNoLead'The printer object's ROLE='italic'Print function calls ROLE='italic'EndPrinting after all copies of the document finish printing. Derived objects can override ROLE='italic'EndPrinting to perform any needed actions at the end of each document.GetDialogInfoFORMAT="LINESPECIFIC"virtual void GetDialogInfo(int& minPage, int& maxPage, int& selFromPage, int& selToPage);REMAP='BodyNoLead'Retrieves information needed to allow the printing of selected pages of the document and returns true if page selection is possible. Use of page ranges is optional, but if the page count is easy to determine, ROLE='italic'GetDialogInfo sets the number of pages in the document. Otherwise, it sets the number of pages to 0 and printing will continue until ROLE='italic'HasPage returns ROLE='bold'false.GetTitleFORMAT="LINESPECIFIC"const char far* GetTitle( ) const;REMAP='BodyNoLead'Returns the title of the current printout.HasPageFORMAT="LINESPECIFIC"virtual bool HasPage(int pageNumber);REMAP='BodyNoLead'ROLE='italic'HasPage is called after every page is printed. By default, it returns ROLE='bold'false, indicating that only one page is to be printed. If the document contains more than one page, this function must be overridden to return true while there are more pages to print.PrintPageFORMAT="LINESPECIFIC"virtual void PrintPage(int page, TRect& rect, unsigned flags);REMAP='BodyNoLead'ROLE='italic'PrintPage is called for every page (or band, if ROLE='italic'Banding is ROLE='bold'true) and must be overridden to print the contents of the given page. The ROLE='italic'rect and ROLE='italic'flags parameters are used during banding to indicate the extent and type of band currently requested from the driver (and should be ignored if Banding is false). page is the number of the current page.SetPrintParamsFORMAT="LINESPECIFIC"virtual void SetPrintParams(TPrintDC* dc, TSize pageSize);REMAP='BodyNoLead'ROLE='italic'SetPrintParams sets DC to ROLE='italic'dc and ROLE='italic'PageSize to ROLE='italic'pageSize. The printer object's ROLE='italic'Print function calls ROLE='italic'SetPrintParams to obtain the information it needs to determine pagination and page count. Derived objects that override ROLE='italic'SetPrintParams must call the inherited function.See alsoREMAP='BodyNoLead'TPreviewPage::PaintWantBandingFORMAT="LINESPECIFIC"bool WantBanding( ) const;REMAP='BodyNoLead'Returns the value of data member ROLE='italic'Banding.WantForceAllBandsFORMAT="LINESPECIFIC"bool WantForceAllBands( ) const;REMAP='BodyNoLead'Returns the value of data member ROLE='italic'ForceAllBands.Type definitionsprinter.hTPrintoutFlags enumFORMAT="LINESPECIFIC"enum{pfGraphics, pfText, pfBoth};REMAP='BodyNoLead'ObjectWindows defines the following banding constants used to set flags for printout objects.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='60*'COLNAME='C2' COLWIDTH='163*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'pfGraphicsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Current band accepts only graphics.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'pfTextCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Current band accepts only text.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'pfBothCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Current band accepts both text and graphics.See alsoREMAP='BodyNoLead'TPrinter, TPrintOutProtected data membersBandingFORMAT="LINESPECIFIC"bool Banding;REMAP='BodyNoLead'If ROLE='italic'Banding is ROLE='bold'true, the printout is banded and the ROLE='italic'PrintPage function is called once for every band. Otherwise, ROLE='italic'PrintPage is called only once for every page. Banding a printout is more memory- and time-efficient than not banding. By default, ROLE='italic'Banding is set to ROLE='bold'false.DCFORMAT="LINESPECIFIC"TPrintDC* DC;REMAP='BodyNoLead'DC is the handle to the device context to use for printing.ForceAllBandsFORMAT="LINESPECIFIC"bool ForceAllBands;REMAP='BodyNoLead'Many device drivers do not provide all printer bands if both text and graphics are not performed on the first band (which is typically a text-only band). Leaving ROLE='italic'ForceAllBandsROLE='bold' true forces the printer driver to provide all bands regardless of what calls are made in the ROLE='italic'PrintPage function. If ROLE='italic'PrintPage does nothing but display text, it is more efficient for ROLE='italic'ForceAllBands to be ROLE='bold'false. By default, it is true. ROLE='italic'ForceAllBands takes effect only if ROLE='italic'Banding is ROLE='bold'true.PageSizeFORMAT="LINESPECIFIC"TSize PageSize;REMAP='BodyNoLead'ROLE='italic'PageSize is the size of the print area on the printout page.TitleFORMAT="LINESPECIFIC"const char far* GetTitle( ) const;REMAP='BodyNoLead'Returns the title of the current printout.TPrintPreviewDC classMOREINFO="NONE"preview.hREMAP='Body'Derived from ROLE='italic'TPrintDC, ROLE='italic'TPrintPreviewDC maps printer device coordinates to logical screen coordinates. It sets the extent of the view window and determines the screen and printer font attributes. Many of ROLE='italic'TPrintPreviewDC's functions override ROLE='italic'TDC's virtual functions.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TPrintPreviewDC(TDC& screen, TPrintDC& printdc, const TRect& client, const TRect& clip);REMAP='BodyNoLead'ROLE='italic'TPrintPreviewDC's constructor takes a screen DC as well as a printer DC. The screen DC is passed to the inherited constructor while the printer DC is copied to the member, ROLE='italic'PrnDC.DestructorFORMAT="LINESPECIFIC"~TPrintPreviewDC( );REMAP='BodyNoLead'Destroys a ROLE='italic'TPrintPreviewDC object.Public member functionsGetDeviceCapsFORMAT="LINESPECIFIC"int GetDeviceCaps(int index) const;REMAP='BodyNoLead'ROLE='italic'GetDeviceCaps returns capability information, such as font and pitch attributes, about the printer DC. The ROLE='italic'index argument specifies the type of information required.See alsoREMAP='BodyNoLead'TDC::GetDeviceCapsLPtoSDPFORMAT="LINESPECIFIC"bool LPtoSDP(TPoint* points, int count = 1) const;REMAP='BodyNoLead'Converts each of the ROLE='italic'count points in the ROLE='italic'points array from logical points of the printer DC to screen points. Returns a nonzero value if the call is successful; otherwise, returns 0.FORMAT="LINESPECIFIC"bool LPtoSDP(TRect& rect) const;REMAP='BodyNoLead'Converts each of the points in the ROLE='italic'rect from logical points of the printer DC to screen device points. Returns a nonzero value if the call is successful; otherwise, returns 0.See alsoREMAP='BodyNoLead'TPrintPreviewDC::SDPtoLP, TDC::LPtoDPOffsetViewportOrgFORMAT="LINESPECIFIC"bool OffsetViewportOrg(const TPoint& delta, TPoint far* oldOrg = 0);REMAP='BodyNoLead'Modifies this DC's viewport origin relative to the current values. The ROLE='italic'delta x- and y-components are added to the previous origin and the resulting point becomes the new viewport origin. The previous origin is saved in ROLE='italic'oldOrg. Returns nonzero if the call is successful; otherwise, returns 0.See alsoREMAP='BodyNoLead'TPrintPreviewDC::SetViewportOrg, TDC::OffsetViewportOrgReOrgFORMAT="LINESPECIFIC"virtual void ReOrg( );REMAP='BodyNoLead'Gets the x- and y- extents of the viewport, equalizes the logical and screen points, and resets the x- and y- extents of the viewport.ReScaleFORMAT="LINESPECIFIC"virtual void ReScale( );REMAP='BodyNoLead'Maps the points of the printer DC to the screen DC. Sets the screen window extent equal to the maximum logical pointer of the printer DC.RestoreFontFORMAT="LINESPECIFIC"void RestoreFont( );REMAP='BodyNoLead'Restores the original GDI font object to this DC.See alsoREMAP='BodyNoLead'TPrintPreviewDC::SelectObject, TDC::OrgFontScaleViewportExtFORMAT="LINESPECIFIC"bool ScaleViewportExt(int xNum, int xDenom, int yNum, int yDenom, TSize far* oldExtent = 0);REMAP='BodyNoLead'Modifies this DC's viewport extents relative to the current values. The new extents are derived as follows:FORMAT="LINESPECIFIC"xNewVE = (xOldVE * xNum)/ xDenom
yNewVE = (yOldVE * yNum)/ yDenomREMAP='Body'The previous extents are saved in ROLE='italic'oldExtent. Returns nonzero if the call is successful; otherwise returns 0.See alsoREMAP='BodyNoLead'TDC::ScaleViewportExt, TPrintPreviewDC::SetViewportExtScaleWindowExtFORMAT="LINESPECIFIC"bool ScaleWindowExt(int xNum, int xDenom, int yNum, int yDenom, TSize far* oldExtent = 0);REMAP='BodyNoLead'Modifies this DC's window extents relative to the current values. The new extents are derived as follows:FORMAT="LINESPECIFIC"xNewWE = (xOldWE * xNum)/ xDenom
yNewWE = (yOldWE * yNum)/ yDenomREMAP='Body'The previous extents are saved in ROLE='italic'oldExtent. Returns nonzero if the call is successful; otherwise returns 0.See alsoREMAP='BodyNoLead'TDC::SetWindowExt, TPrintPreviewDC::ScaleWindowExtSDPtoLPFORMAT="LINESPECIFIC"bool SDPtoLP(TPoint* points, int count = 1) const;REMAP='BodyNoLead'Converts each of the ROLE='italic'count points in the ROLE='italic'points array from screen device points to logical points of the printer DC. Returns a nonzero value if the call is successful; otherwise, returns 0.FORMAT="LINESPECIFIC"bool SDPtoLP(TRect& rect) const;REMAP='BodyNoLead'Converts each of the points in the ROLE='italic'rect from screen device points to logical points of the printer DC. Returns a nonzero value if the call is successful; otherwise, returns 0.See alsoREMAP='BodyNoLead'TPrintPreviewDC::LPtoSDP, TDC::DPtoLPSelectObjectFORMAT="LINESPECIFIC"void SelectObject(const TFont& newFont);REMAP='BodyNoLead'Selects the given font object into this DC.See alsoREMAP='BodyNoLead'TPrintPreviewDC::SelectStockObject, TDC::SelectObjectSelectStockObjectFORMAT="LINESPECIFIC"void SelectStockObject(int index);REMAP='BodyNoLead'Retrieves a handle to a predefined stock font.See alsoREMAP='BodyNoLead'TDC::SelectStockObjectSetBkColorFORMAT="LINESPECIFIC"TColor SetBkColor(TColor color);REMAP='BodyNoLead'Sets the current background color of this DC to the given ROLE='italic'color value or the nearest available. Returns 0x80000000 if the call fails.See alsoREMAP='BodyNoLead'TDC::SetBkColorSetMapModeFORMAT="LINESPECIFIC"int SetMapMode(int mode);REMAP='BodyNoLead'Sets the current window mapping mode of this DC to ROLE='italic'mode. Returns the previous mapping mode value. The mapping mode defines how logical coordinates are mapped to device coordinates. It also controls the orientation of the device's x- and y-axes.See alsoREMAP='BodyNoLead'TDC::GetMapMode, TDC::SetMapModeSetTextColorFORMAT="LINESPECIFIC"TColor SetTextColor(TColor color);REMAP='BodyNoLead'Sets the current text color of this DC to the given ROLE='italic'color value. The text color determines the color displayed by ROLE='italic'TDC::ROLE='italic'TextOut and ROLE='italic'TDC::ROLE='italic'ExtTextOut.See alsoREMAP='BodyNoLead'TDC::GetTextColor, TDC::SetTextColorSetViewportExtFORMAT="LINESPECIFIC"bool SetViewportExt(const TSize& extent, TSize far* oldExtent = 0);REMAP='BodyNoLead'Sets the screen's viewport x- and y-extents to the given ROLE='italic'extent values. The previous extents are saved in ROLE='italic'oldExtent. Returns nonzero if the call is successful; otherwise, returns 0. The ROLE='italic'extent value determines the amount of stretching or compression needed in the logical coordinate system to fit the device coordinate system. ROLE='italic'extent also determines the relative orientation of the two coordinate systems.See alsoREMAP='BodyNoLead'TDC::GetViewportExt, TDC::SetViewportExtSetViewportOrgFORMAT="LINESPECIFIC"bool OffsetViewportOrg(const TPoint& delta, TPoint far* oldOrg = 0);REMAP='BodyNoLead'Modifies this DC's viewport origin relative to the current values. The ROLE='italic'delta x- and y-components are added to the previous origin and the resulting point becomes the new viewport origin. The previous origin is saved in ROLE='italic'oldOrg. Returns nonzero if the call is successful; otherwise, returns 0.See alsoREMAP='BodyNoLead'TPrintPreviewDC::SetViewportOrg, TDC::OffsetViewportOrgSetWindowExtFORMAT="LINESPECIFIC"bool SetWindowExt(const TSize& extent, TSize far* oldExtent=0);REMAP='BodyNoLead'Sets the DC's window x- and y-extents to the given ROLE='italic'extent values. The previous extents are saved in ROLE='italic'oldExtent. Returns nonzero if the call is successful; otherwise, returns 0. The ROLE='italic'extent value determines the amount of stretching or compression needed in the logical coordinate system to fit the device coordinate system. ROLE='italic'extent also determines the relative orientation of the two coordinate systems.See alsoREMAP='BodyNoLead'TDC::GetWindowExt, TDC::SetWindowExt, TPrintPreviewDC::ScaleWindowExtSyncFontFORMAT="LINESPECIFIC"virtual void SyncFont( );REMAP='BodyNoLead'Sets the screen font equal to the current printer font.Protected data membersCurrentPreviewFontFORMAT="LINESPECIFIC"TFont* CurrentPreviewFont;REMAP='BodyNoLead'The current view font.PrnDCFORMAT="LINESPECIFIC"TPrintDC& PrnDC;REMAP='BodyNoLead'Holds a reference to the printer DC.PrnFontFORMAT="LINESPECIFIC"HFONT PrnFont;REMAP='BodyNoLead'The current printer font.Protected member functionsGetAttributeHDCFORMAT="LINESPECIFIC"HDC GetAttributeHDC( ) const;REMAP='BodyNoLead'Returns the attributes of the printer DC (ROLE='italic'PrnDC).See alsoREMAP='BodyNoLead'TDC::GetAttributeHDCTProfile classMOREINFO="NONE"profile.hREMAP='BodyNoLead'An instance of ROLE='italic'TProfile encapsulates a setting within a system file, often referred to as a ROLE='italic'profile or ROLE='italic'initialization file. Examples of this type of file include the Windows initialization files SYSTEM.INI and WIN.INI. Within the system file itself, the individual settings are grouped within sections. For example,FORMAT="LINESPECIFIC"[Diagnostics] ; section name
Enabled=0 ; settingREMAP='Body'For a setting, the value to the left of the equal sign is called the ROLE='italic'key. The value to the right of the equal sign, the ROLE='italic'value, can be either an integer or a string data type.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TProfile(const char* section, const char* filename=0);REMAP='BodyNoLead'Constructs a ROLE='italic'TProfile object for the indicated ROLE='italic'section within the profile file specified by ROLE='italic'filename. If the file name is not provided, the file defaults to the system profile file; for example, WIN.INI under Windows.DestructorFORMAT="LINESPECIFIC"~TProfile( );REMAP='BodyNoLead'Destroys the ROLE='italic'TProfile object.Public member functionsGetIntFORMAT="LINESPECIFIC"int GetInt(const char* key, int defaultInt = 0);REMAP='BodyNoLead'Looks up and returns the integer value associated with the given string, ROLE='italic'key. If ROLE='italic'key is not found, the default value, ROLE='italic'defaultInt, is returned.GetStringFORMAT="LINESPECIFIC"bool GetString(const char* key, char buff[], unsigned buffSize, const char* defaultString = "");REMAP='BodyNoLead'Looks up and returns the string value associated with the given ROLE='italic'key string. The string value is copied into ROLE='italic'buff, up to ROLE='italic'buffSize bytes. If the key is not found, ROLE='italic'defaultString provides the default value. If a 0 key is passed, all section values are returned in ROLE='italic'buff. WriteIntFORMAT="LINESPECIFIC"bool WriteInt(const char* key, const char* int value);REMAP='BodyNoLead'Looks up the key and replaces its value with the integer value passed (ROLE='italic'int). If the key is not found, ROLE='italic'WriteInt makes a new entry. Returns ROLE='bold'true if successful.WriteStringFORMAT="LINESPECIFIC"bool WriteString(const char* key, const char* str);REMAP='BodyNoLead'Looks up the key and replaces its value with the string value passed (ROLE='italic'str). If the key is not found, ROLE='italic'WriteString makes a new entry. Returns ROLE='bold'true if successful.TPXPictureValidator classMOREINFO="NONE"validate.hREMAP='Body'ROLE='italic'TPXPictureValidator objects compare user input with a picture of a data format to determine the validity of entered data. The pictures are compatible with the pictures Borland's Paradox relational database uses to control data entry. For a complete description of picture specifiers, see the ROLE='italic'Picture member function.Public constructorConstructorFORMAT="LINESPECIFIC"TPXPictureValidator(const char far* pic, bool autoFill=false);REMAP='BodyNoLead'Constructs a picture validator object by first calling the constructor inherited from ROLE='italic'TValidator and setting ROLE='italic'pic to point to it. Then sets the ROLE='italic'voFill bit in ROLE='italic'Options if ROLE='italic'AutoFill is true and sets ROLE='italic'Options to ROLE='italic'voOnAppend. Throws a ROLE='italic'TXValidator exception if the picture is invalid.Public member functionsErrorFORMAT="LINESPECIFIC"void Error( );REMAP='BodyNoLead'Overrides ROLE='italic'TValidator's virtual function and displays a message box that indicates an error in the picture format and displays the string pointed to by ROLE='italic'Pic.See alsoREMAP='BodyNoLead'TValidator::ErrorIsValidFORMAT="LINESPECIFIC"bool IsValid(const char far* str);REMAP='BodyNoLead'ROLE='italic'IsValid overrides ROLE='italic'TValidator's virtual function and compares the string passed in ROLE='italic'str with the format picture specified in ROLE='italic'Pic. ROLE='italic'IsValid returns true if ROLE='italic'Pic is NULL or if ROLE='italic'Picture returns ROLE='italic'Complete for ROLE='italic'str, indicating that ROLE='italic'str needs no further input to meet the specified format; otherwise, it returns false.See alsoREMAP='BodyNoLead'TPXPictureValidator::PictureIsValidInputFORMAT="LINESPECIFIC"bool IsValidInput(char far* str, bool suppressFill);REMAP='BodyNoLead'ROLE='italic'IsValidInput overrides ROLE='italic'TValidator's virtual function and checks the string passed in ROLE='italic'str against the format picture specified in ROLE='italic'Pic. ROLE='italic'IsValid returns ROLE='bold'true if ROLE='italic'Pic is NULL or ROLE='italic'Picture does not return ROLE='italic'Error for ROLE='italic'str; otherwise, it returns ROLE='bold'false. The ROLE='italic'suppressFill parameter overrides the value in ROLE='italic'voFill for the duration of the call to ROLE='italic'IsValidInput.REMAP='Body'If ROLE='italic'suppressFill is ROLE='bold'false and ROLE='italic'voFill is set, the call to ROLE='italic'Picture returns a filled string based on ROLE='italic'str, so the image in the edit control automatically reflects the format specified in ROLE='italic'Pic.See alsoREMAP='BodyNoLead'TPXPictureValidator::PicturePictureFORMAT="LINESPECIFIC"virtual TPicResult Picture(char far* input, bool autoFill=false);REMAP='Body'Formats the string passed in ROLE='italic'input according to the format specified by the picture string pointed to by ROLE='italic'Pic. ROLE='italic'Picture returns ROLE='italic'prError if there is an error in the picture string or if ROLE='italic'input contains data that cannot fit the specified picture. Returns ROLE='italic'prComplete if ROLE='italic'input can fully satisfy the specified picture. Returns ROLE='italic'prIncomplete if ROLE='italic'input contains data that incompletely fits the specified picture.REMAP='Body'The following characters are used in creating format pictures:COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='90*'COLNAME='C3' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Type of characterCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'CharacterCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SpecialCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'#COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Accept only a digitCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'?COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Accept only a letter (case_insensitive)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'&COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Accept only a letter, force to uppercaseCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'@COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Accept any characterCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'!COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Accept any character, force to uppercaseCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MatchCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body';COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Take next character literallyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'*COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Repetition countCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'[]COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'OptionCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'{}COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Grouping operatorsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body',COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Set of alternativesCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'All othersCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Taken literallySee alsoREMAP='BodyNoLead'TPicResultenumProtected data memberPicFORMAT="LINESPECIFIC"string Pic;REMAP='BodyNoLead'Points to a string containing the picture that specifies the format for data in the associated edit control. The constructor sets ROLE='italic'Pic to a string that is passed as one of the parameters.TRadioButton classMOREINFO="NONE"radiobut.hREMAP='Body'A ROLE='italic'TRadioButton is an interface object that represents a corresponding radio button element in Windows. Use ROLE='italic'TRadioButton to create a radio button control in a parent ROLE='italic'TWindow. A ROLE='italic'TRadioButton can also be used to facilitate communication between your application and the radio button controls of a ROLE='italic'TDialog.REMAP='Body'Radio buttons have two states: checked and unchecked. ROLE='italic'TRadioButton inherits its state management member functions from its base class, ROLE='italic'TCheckBox. Optionally, a radio button can be part of a group (ROLE='italic'TGroupBox) that visually and logically groups its controls. ROLE='italic'TRadioButton is a streamable class.Public constructorsConstructorsFORMAT="LINESPECIFIC"TRadioButton(TWindow* parent, int id, const char far* title, int x, int y, int w, int h, TGroupBox *group = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs a radio button object with the supplied parent window (ROLE='italic'parent), control ID (ROLE='italic'id), associated text (ROLE='italic'title), position (ROLE='italic'x, y) relative to the origin of the parent window's client area, width (ROLE='italic'w), height (ROLE='italic'h), and associated group box (ROLE='italic'group). Invokes the ROLE='italic'TCheckBox constructor with similar parameters. The style is set to WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON.FORMAT="LINESPECIFIC"TRadioButton(TWindow* parent,int resourceId,TGroupBox *group, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TRadioButton object to be associated with a radio button control of a ROLE='italic'TDialog. Invokes the ROLE='italic'TCheckBox constructor with identical parameters.The ROLE='italic'resourceId parameter must correspond to a radio button resource that you define.See alsoREMAP='BodyNoLead'TControl::TControlProtected member functionsBNClickedFORMAT="LINESPECIFIC"void BNClicked( );REMAP='BodyNoLead'Responds to an incoming BN_CLICKED message.See alsoREMAP='BodyNoLead'BN_xxxx Button Message ConstantsGetClassNameFORMAT="LINESPECIFIC"char far* GetClassName( );REMAP='BodyNoLead'Returns "ROLE='italic'BUTTON," the name of the predefined radio button class.Response table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='180*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_MESSAGE (BM_SETSTYLE, BMSetStyle)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'BMSetStyleCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_GETDLGCODECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvGetDlgCodeTRangeValidator classMOREINFO="NONE"validate.hREMAP='BodyNoLead'A ROLE='italic'TRangeValidator object determines whether the data typed by a user falls within a designated range of integers. ROLE='italic'TRangeValidator is a streamable class.Public constructorConstructorFORMAT="LINESPECIFIC"TRangeValidator(long min, long max);REMAP='BodyNoLead'Constructs a range validator object by first calling the constructor inherited from ROLE='italic'TFilterValidator, passing a set of characters containing the digits '0'..'9' and the characters '+' and '-'. Sets ROLE='italic'Min to ROLE='italic'min and ROLE='italic'Max to ROLE='italic'max, establishing the range of acceptable long integer values.See alsoREMAP='BodyNoLead'TFilterValidator::TFilterValidatorPublic member functionsErrorFORMAT="LINESPECIFIC"void Error( );REMAP='BodyNoLead'ROLE='italic'Error overrides ROLE='italic'TValidator's virtual function and displays a message box indicating that the entered value does not fall within the specified range.IsValidFORMAT="LINESPECIFIC"bool IsValid(const char far* str);REMAP='BodyNoLead'Converts the string ROLE='italic'str into an integer number and returns ROLE='bold'true if the result meets all three of these conditions:MARK='bullet'REMAP='Bullet1'It is a valid integer number.REMAP='Bullet1'Its value is greater than or equal to ROLE='italic'min.REMAP='Bullet1'Its value is less than or equal to ROLE='italic'max.REMAP='Body'If any of those tests fails, ROLE='italic'IsValid returns ROLE='bold'false.TransferFORMAT="LINESPECIFIC"uint Transfer(char far* str, void* buffer, TTransferDirection direction);REMAP='BodyNoLead'Incorporates the three types, ROLE='italic'tdSizeData, ROLE='italic'tdGetData, and ROLE='italic'tdSetData, that a range validator can handle for its associated edit control. ROLE='italic'str is the edit control's string value, and ROLE='italic'buffer is the data passed to the edit control. Depending on the value of ROLE='italic'direction, ROLE='italic'Transfer either sets str from the number in buffer or sets the number at buffer to the value of the string str. If ROLE='italic'direction is ROLE='italic'tdSetData, ROLE='italic'Transfer sets str from buffer. If direction is ROLE='italic'tdGetData, ROLE='italic'Transfer sets ROLE='italic'buffer from ROLE='italic'str. If direction is ROLE='italic'tdSizeData, ROLE='italic'Transfer neither sets nor reads data.REMAP='Body'ROLE='italic'Transfer always returns the size of the data transferred.See alsoREMAP='BodyNoLead'TWindow::TransferProtected data membersMaxFORMAT="LINESPECIFIC"long Max;REMAP='BodyNoLead'ROLE='italic'Max is the highest valid ROLE='bold'long integer value for the edit control.MinFORMAT="LINESPECIFIC"long Min;REMAP='BodyNoLead'ROLE='italic'Min is the lowest valid ROLE='bold'long integer value for the edit control.TRegion classMOREINFO="NONE"gdiobjec.hREMAP='BodyNoLead'ROLE='italic'TRegion, derived from ROLE='italic'TGdiobject, represents GDI abstract shapes or regions. ROLE='italic'TRegion can construct region objects with various shapes. Several operators are provided for combining and comparing regions.Type definitionsTEllipseFORMAT="LINESPECIFIC"enum TEllipse{Ellipse};REMAP='BodyNoLead'Defines the class-specific constant, ROLE='italic'Ellipse, used to distinguish the ellipse constructor from the rectangle copy constructor.See alsoREMAP='BodyNoLead'TRegion::TRegion (constTRect&rect), TRegion::TRegion (constTRect&ETEllipse)Public constructorsConstructorsFORMAT="LINESPECIFIC"TRegion( );REMAP='BodyNoLead'The default constructor creates an empty ROLE='italic'TRegion object. ROLE='italic'Handle is set to 0 and ROLE='italic'ShouldDelete is set to ROLE='bold'true.FORMAT="LINESPECIFIC"TRegion(HRGN handle,TAutoDelete autoDelete = NoAutoDelete);REMAP='BodyNoLead'Creates a ROLE='italic'TRegion object sets the ROLE='italic'Handle data member to the given borrowed handle. The ROLE='italic'ShouldDelete data member defaults to ROLE='bold'false ensuring that the borrowed handle is not deleted when the C++ object is destroyed. ROLE='italic'HRGN is the data type representing the handle to an abstract shape.FORMAT="LINESPECIFIC"TRegion(const TRegion& region);REMAP='BodyNoLead'This public copy constructor creates a copy of the given ROLE='italic'TRegion object as inFORMAT="LINESPECIFIC"TRegion myRegion = yourRegion;FORMAT="LINESPECIFIC"TRegion(const TRect& rect);REMAP='BodyNoLead'Creates a region object from the given ROLE='italic'TRectangle object as inFORMAT="LINESPECIFIC"TRegion myRegion(rect1);
TRegion* pRegion;
pRegion = new TRegion(rect2);FORMAT="LINESPECIFIC"TRegion(const TRect& E, TEllipse);REMAP='BodyNoLead'Creates the elliptical ROLE='italic'TRegion object that inscribes the given rectangle ROLE='italic'E. The ROLE='italic'TEllipse argument distinguishes this constructor from the ROLE='italic'TRegion(const ROLE='italic'TRect& ROLE='italic'rect) constructor.FORMAT="LINESPECIFIC"TRegion(const TRect& rect, const TSize& corner);REMAP='BodyNoLead'Creates a ROLE='italic'TRegion object from the given ROLE='italic'rect corner.FORMAT="LINESPECIFIC"TRegion(const TPoint* points,int count,int fillMode);REMAP='BodyNoLead'Creates a filled ROLE='italic'TRegion object from the polygons given by ROLE='italic'points and ROLE='italic'fillMode.FORMAT="LINESPECIFIC"TRegion(const TPoint* points, const int* polyCounts, int count,int fillMode);REMAP='BodyNoLead'Creates a filled ROLE='italic'TRegion object from the polygons given by ROLE='italic'points and ROLE='italic'fillMode.See alsoREMAP='BodyNoLead'TGdiObject::Handle, TGdiObject::ShouldDelete, TPoint class, TRect class, TSize classPublic member functionsContainsFORMAT="LINESPECIFIC"bool Contains(const TPoint& point) const;REMAP='BodyNoLead'Returns ROLE='bold'true if this region contains the given point.See alsoREMAP='BodyNoLead'TPointGetRgnBoxFORMAT="LINESPECIFIC"int GetRgnBox(TRect& box) const;FORMAT="LINESPECIFIC"TRect GetRgnBox( ) const;REMAP='BodyNoLead'Finds the bounding rectangle (the minimum rectangle containing this region). In Form 1, the resulting rectangle is placed in ROLE='italic'box and the returned values are as follows:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='138*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COMPLEXREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Region has overlapping borders.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'NULLREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Region is empty.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SIMPLEREGIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Region has no overlapping borders.REMAP='Body'In Form 2, the resulting rectangle is returned.See alsoREMAP='BodyNoLead'TRectoperator ==FORMAT="LINESPECIFIC"bool operator ==(const TRegion& other) const;REMAP='BodyNoLead'Returns ROLE='bold'true if this region is equal to the ROLE='italic'other region.See alsoREMAP='BodyNoLead'TRegion::operator!=operator !=FORMAT="LINESPECIFIC"bool operator !=(const TRegion& other) const;REMAP='BodyNoLead'Returns ROLE='bold'true if this region is not equal to the ROLE='italic'other region.See alsoREMAP='BodyNoLead'TRegion::operator ==operator =FORMAT="LINESPECIFIC"TRegion& operator =(const TRegion& source);REMAP='BodyNoLead'Assigns the ROLE='italic'source region to this region. A reference to the result is returned, allowing chained assignments.operator +=FORMAT="LINESPECIFIC"TRegion& operator +=(const TSize& delta);REMAP='BodyNoLead'Adds the given ROLE='italic'delta to each point of this region to displace (translate) it by ROLE='italic'delta.ROLE='italic'x and ROLE='italic'delta.ROLE='italic'y. Returns a reference to the resulting region.See alsoREMAP='BodyNoLead'TSize, TRegion::operator -=operator -=FORMAT="LINESPECIFIC"TRegion& operator -=(const TSize& delta);FORMAT="LINESPECIFIC"TRegion& operator -=(const TRegion& source);REMAP='BodyNoLead'The first form subtracts the given ROLE='italic'delta from each point of this region to displace (translate) it by -ROLE='italic'delta.x and -ROLE='italic'delta.y. The second form creates a "difference" region consisting of all parts of this region that are not parts of the ROLE='italic'source region. Both forms return a reference to the resulting region.See alsoREMAP='BodyNoLead'TSize class, TRegion::operator +=operator &=FORMAT="LINESPECIFIC"TRegion& operator &=(const TRegion& source);FORMAT="LINESPECIFIC"TRegion& operator &=(const TRect& source);REMAP='BodyNoLead'Creates the intersection of this region with the given ROLE='italic'source region or rectangle, and returns a reference to the result.See alsoREMAP='BodyNoLead'TRect classoperator |=FORMAT="LINESPECIFIC"TRegion& operator |=(const TRegion& source);FORMAT="LINESPECIFIC"TRegion& operator |=(const TRect& source);REMAP='BodyNoLead'Creates the union of this region and the given ROLE='italic'source region or rectangle, and returns a reference to the result.See alsoREMAP='BodyNoLead'TRectoperator ^=FORMAT="LINESPECIFIC"TRegion& operator ^=(const TRegion& source);FORMAT="LINESPECIFIC"TRegion& operator ^=(const TRect& source);REMAP='BodyNoLead'Creates the union of this region and the given ROLE='italic'source region or rectangle, but excludes any overlapping areas. Returns a reference to the resulting region object.See alsoREMAP='BodyNoLead'TRect classoperator HRGN( )FORMAT="LINESPECIFIC"operator HRGN( ) const;REMAP='BodyNoLead'Typecast operator. ROLE='italic'HRGN is the data type representing the handle to a physical region.SetRectRgnFORMAT="LINESPECIFIC"void SetRectRgn(const TRect& rect);REMAP='BodyNoLead'Creates a rectangle of the size given by ROLE='italic'rect.See alsoREMAP='BodyNoLead'TRect classTouchesFORMAT="LINESPECIFIC"bool Touches(const TRect& rect) const;REMAP='BodyNoLead'Returns ROLE='bold'true if this region touches the given rectangle.See alsoREMAP='BodyNoLead'TRect classTRelationship enumMOREINFO="NONE"layoutco.hFORMAT="LINESPECIFIC"enum TRelationship {lmAsIs, lmPercentOf, lmAbove, lmLeftOf = lmAbove, lmBelow, lmRightOf = lmBelow, lmSameAs, lmAbsolute};REMAP='Body'Used by the ROLE='italic'TLayoutConstraint struct, ROLE='italic'TRelationship specifies the relationship between the edges and sizes of one window and the edges and sizes of another window (which can be a parent or sibling). These relationships can be specified as either the same value as the sibling or parent window (ROLE='italic'lmAsIs), an absolute value (ROLE='italic'lmAbsolute), a percent of one of the windows (ROLE='italic'lmPercentOf), a value that is either added above (ROLE='italic'lmAbove) or left (ROLE='italic'lmLeftOf) of one of the windows, or a value that is subtracted from below (ROLE='italic'lmBelow) or right (ROLE='italic'lmRightOf) of one of the windows.See alsoREMAP='BodyNoLead'TLayoutConstraint structTReplaceDialog classMOREINFO="NONE"findrepl.hREMAP='BodyNoLead'ROLE='italic'TReplaceDialog creates a modeless dialog box that lets the user enter a selection of text to replace. Because these are model dialog boxes, you can search for text, edit the text in the window, and return to the dialog box to enter another selection. ROLE='italic'TReplaceDialog uses the ROLE='italic'TFindReplaceDialog::TData class to set the user-defined values for the dialog box, such as the text strings to search for and replace.Public constructorConstructorFORMAT="LINESPECIFIC"TReplaceDialog(TWindow* parent, TData& data, TResID templateName=0, const char far* title=0, TModule* module=0);REMAP='BodyNoLead'Constructs a ROLE='italic'TReplaceDialog object with a parent window, resource ID, template name, caption, and module instance. The ROLE='italic'data parameter is a reference to the ROLE='italic'TFindReplaceDialog::TData class that contains information about the appearance and functionality of the dialog box, such as the user-entered text strings to search for and replace.See alsoREMAP='BodyNoLead'TFindReplaceDialog::TData classProtected member functionDoCreateFORMAT="LINESPECIFIC"HWND DoCreate( );REMAP='BodyNoLead'Creates a modeless find and replace dialog box.See alsoREMAP='BodyNoLead'TDialog::DoCreateTResponseTableEntry classMOREINFO="NONE"eventhan.hREMAP='BodyNoLead'A template class, ROLE='italic'TResponseTableEntry lets you define a pattern for entries into a response table. Entries consist of a message, a notification code, a resource ID, a dispatcher type, and a pointer to a member function.REMAP='Body'See DECLARE_RESPONSE_TABLE and DEFINE_RESPONSE_TABLE for additional information about the macros in the response tables.Public data membersDispatcherFORMAT="LINESPECIFIC"TAnyDispatcher Dispatcher;REMAP='BodyNoLead'An abstract dispatcher type that points to one of the dispatcher functions.IdFORMAT="LINESPECIFIC"uint Id;REMAP='BodyNoLead'Contains the menu or accelerator resource ID (CM_xxxx) for the message response member function.MsgFORMAT="LINESPECIFIC"uint Msg;REMAP='BodyNoLead'Contains the ID of the message sent. These can be command messages, child id messages, notify-based messages such as LBN_SELCHANGE, or messages such as LBUTTONDOWN.NotifyCodeFORMAT="LINESPECIFIC"uint NotifyCode;REMAP='BodyNoLead'Stores the control notification code (for example, ID_LISTBOX) for the response table entry. These can be button, combo box, edit control, or list box notification codes.PmfFORMAT="LINESPECIFIC"PMF Pmf;REMAP='BodyNoLead'Points to the actual handler or member function.Type definitionsTFORMAT="LINESPECIFIC"typedef void(T_*PMF)( );REMAP='BodyNoLead'Type for a generic member function that responds to notification messages. ROLE='italic'T is the template for the response table.TRgbQuad classMOREINFO="NONE"color.hREMAP='BodyNoLead'ROLE='italic'TRgbQuad is a support class derived from the structure ROLE='italic'tagRGBQUAD, which is defined as follows:FORMAT="LINESPECIFIC"typedef struct tagRGBQUAD {
uint8 rgbBlue;
uint8 rgbGreen;
uint8 rgbRed;
uint8 rgbReserved;
} RGBQUAD;REMAP='Body'where ROLE='italic'rgbBlue, ROLE='italic'rgbGreen, and ROLE='italic'rgbRed specify the relative blue, green, and red intensities of a color. rgbReserved is not used and must be set to 0.REMAP='Body'ROLE='italic'TRgbQuad is used in conjunction with the classes ROLE='italic'TPalette and ROLE='italic'TColor to simplify RGBQUAD-based color operations. Constructors are provided to create ROLE='italic'TRgbQuad objects from explicit RGB values, from ROLE='italic'TColor objects, or from other ROLE='italic'TRgbQuad objects.Public constructorsConstructorsFORMAT="LINESPECIFIC"TRgbQuad(int r, int g, int b);REMAP='BodyNoLead'Creates a ROLE='italic'TRgbQuad object with ROLE='italic'rgbRed, ROLE='italic'rgbGreen, and ROLE='italic'rgbBlue set to ROLE='italic'r, ROLE='italic'g, and ROLE='italic'b respectively. ROLE='italic'rgbReserved is set to 0.FORMAT="LINESPECIFIC"TRgbQuad(TColor c);REMAP='BodyNoLead'Creates a ROLE='italic'TRgbQuad object with ROLE='italic'rgbRed, ROLE='italic'rgbGreen, ROLE='italic'rgbBlue set to ROLE='italic'c.Red, ROLE='italic'c.Green, ROLE='italic'c.Blue respectively. rgbReserved is set to 0.FORMAT="LINESPECIFIC"TRgbQuad(const RGBQUAD far& q);REMAP='BodyNoLead'Creates a ROLE='italic'TRgbQuad object with the same values as the referenced RGBQUAD object.See alsoREMAP='BodyNoLead'TColor::Red, TColor::Green, TColor::BlueTRgbTriple classMOREINFO="NONE"color.hREMAP='BodyNoLead'ROLE='italic'TRgbTriple is a support class derived from the structure ROLE='italic'tagRgbTriple, which is defined as follows:FORMAT="LINESPECIFIC"typedef struct tagRGBTRIPLE {
uint8 rgbBlue;
uint8 rgbGreen;
uint8 rgbRed;
} RGBTRIPLE;REMAP='Body'ROLE='italic'rgbBlue, rgbGreen, and ROLE='italic'rgbRed specify the relative blue, green, and red intensities for a color.REMAP='Body'ROLE='italic'TRgbTriple is used in conjunction with the classes ROLE='italic'TPalette and ROLE='italic'TColor to simplify bmci-color-based operations. Constructors are provided to create ROLE='italic'TRgbTriple objects from explicit RGB values, from ROLE='italic'TColor objects, or from other ROLE='italic'TRgbTriple objects.Public constructorsConstructorsFORMAT="LINESPECIFIC"TRgbTriple(int r, int g, int b);REMAP='BodyNoLead'Creates a ROLE='italic'TRgbTriple object with ROLE='italic'rgbRed, ROLE='italic'rgbGreen, and ROLE='italic'rgbBlue set to ROLE='italic'r, ROLE='italic'g, and ROLE='italic'b respectively.FORMAT="LINESPECIFIC"TRgbTriple(TColor c);REMAP='BodyNoLead'Creates a ROLE='italic'TRgbTriple object with ROLE='italic'rgbRed, rgbGreen, rgbBlue set to ROLE='italic'c.Red, c.Green, and ROLE='italic'c.Blue respectivelyrgbReserved is set to 0.FORMAT="LINESPECIFIC"TRgbTriple(const RGBTRIPLE far& t);REMAP='BodyNoLead'Creates a ROLE='italic'TRgbTriple object with the same values as the referenced RGBTRIPLE object.See alsoREMAP='BodyNoLead'tag RGBTRIPLE struct, TColor::Red, TColor::Green, TColor::BlueTScreenDC classMOREINFO="NONE"dc.hREMAP='BodyNoLead'Derived from ROLE='italic'TWindowDC, ROLE='italic'TScreenDC is a DC class that provides direct access to the screen bitmap. ROLE='italic'TScreenDC gets a DC for handle 0, which is for the whole screen with no clipping. Handle 0 paints on top of other windows.Public constructorConstructorFORMAT="LINESPECIFIC"TScreenDC( );REMAP='BodyNoLead'Default constructor for ROLE='italic'TScreenDC objects.TScrollBar classMOREINFO="NONE"scrollba.hREMAP='BodyNoLead'ROLE='italic'TScrollBar objects represent standalone vertical and horizontal scroll bar controls. Most of ROLE='italic'TScrollBar's member functions manage the scroll bar's sliding box (thumb) position and range.REMAP='Body'One special feature of the type ROLE='italic'TScrollBar is the notify-based set of member functions that automatically adjust the scroll bar's thumb position in response to scroll bar messages.REMAP='Body'Never place ROLE='italic'TScrollBar objects in windows that have either the WS_HSCROLL or WS_VSCROLL styles in their attributes.REMAP='Body'ROLE='italic'TScrollBar is a streamable class.Public data membersLineMagnitudeFORMAT="LINESPECIFIC"int LineMagnitude;REMAP='BodyNoLead'ROLE='italic'LineMagnitude is the number of range units to scroll the scroll bar when the user requests a small movement by clicking on the scroll bar's arrows. ROLE='italic'TScrollBar's constructor sets ROLE='italic'LineMagnitude to 1 by default. (The scroll range is 0-100 by default.)See alsoREMAP='BodyNoLead'TScrollBar::SetupWindowPageMagnitudeFORMAT="LINESPECIFIC"int PageMagnitude;REMAP='BodyNoLead'ROLE='italic'PageMagnitude is the number of range units to scroll the scroll bar when the user requests a large movement by clicking in the scroll bar's scrolling area. ROLE='italic'TScrollBar's constructor sets ROLE='italic'PageMagnitude to 10 by default. (The scroll range is 0-100 by default.)Public constructorsConstructorsFORMAT="LINESPECIFIC"TScrollBar(TWindow* parent, int id, int x, int y, int w, int h, bool isHScrollBar, TModule* module = 0);REMAP='BodyNoLead'Constructs and initializes a ROLE='italic'TScrollBar object with the given parent window (ROLE='italic'parent), a control ID (ROLE='italic'id), a position (ROLE='italic'x, y), and a size of (ROLE='italic'w, h). Invokes the ROLE='italic'TControl constructor with similar parameters. If ROLE='italic'isHScrollBar is ROLE='bold'true, adds SBS_HORZ to the window style. If not true, adds SBS_VERT. If the supplied height for a horizontal scroll bar or the supplied width for a vertical scroll bar is 0, a standard value is used. ROLE='italic'LineMagnitude is initialized to 1 and ROLE='italic'PageMagnitude is set to 10.FORMAT="LINESPECIFIC"TScrollBar(TWindow* parent,int resourceId,TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TScrollBar object to be associated with a scroll bar control of a ROLE='italic'TDialog. Invokes the ROLE='italic'TControl constructor with identical parameters.REMAP='Body'The ROLE='italic'resourceId parameter must correspond to a scroll bar resource that you define.See alsoREMAP='BodyNoLead'TControl::TControlPublic member functionsDeltaPosFORMAT="LINESPECIFIC"virtual int DeltaPos(int delta);REMAP='BodyNoLead'Calls ROLE='italic'SetPosition to change the scroll bar's thumb position by the value supplied in ROLE='italic'delta. A positive ROLE='italic'delta moves the thumb down or right. A negative ROLE='italic'delta value moves the thumb up or ROLE='italic'left. The new thumb position is returned.See alsoREMAP='BodyNoLead'TScrollBar::SetPositionEvHScrollFORMAT="LINESPECIFIC"void EvHScroll(uint scrollCode, uint thumbPos, HWND hWndCtl);REMAP='BodyNoLead'Response table handler that calls the virtual function (ROLE='italic'SBBottom, ROLE='italic'SBLineDown and so on) in response to messages sent by ROLE='italic'TWindow::DispatchScroll.EvVScrollFORMAT="LINESPECIFIC"void EvVScroll(uint scrollCode, uint thumbPos, HWND hWndCtl);REMAP='BodyNoLead'Response table handler that calls the virtual function (ROLE='italic'SBBottom, ROLE='italic'SBLineDown and so on) in response to messages sent by ROLE='italic'TWindow::DispatchScroll.GetPositionFORMAT="LINESPECIFIC"virtual int GetPosition( ) const;REMAP='BodyNoLead'Returns the scroll bar's current thumb position.See alsoREMAP='BodyNoLead'TScrollBar::SetPosition, TScrollBarData structGetRangeFORMAT="LINESPECIFIC"virtual void GetRange(int& min, int& max) const;REMAP='BodyNoLead'Returns the end values of the present range of scroll bar thumb positions in ROLE='italic'min and ROLE='italic'max.See alsoREMAP='BodyNoLead'TScrollBar::SetPosition, TScrollBar::SetRange, TScrollBarData structSBBottomFORMAT="LINESPECIFIC"virtual void SBBottom( );REMAP='BodyNoLead'Calls ROLE='italic'SetPosition to move the thumb to the bottom or right of the scroll bar. ROLE='italic'SB_BOTTOM is called to respond to the thumb being dragged to the bottom or rightmost position of the scroll bar.See alsoREMAP='BodyNoLead'TScrollBar::SetPositionSBLineDownFORMAT="LINESPECIFIC"virtual void SBLineDown( );REMAP='BodyNoLead'Calls ROLE='italic'SetPosition to move the thumb down or right (by ROLE='italic'LineMagnitude units). ROLE='italic'SBLineDown is called to respond to a click on the bottom or right arrow of the scroll bar.See alsoREMAP='BodyNoLead'TScrollBar::SetPositionSBLineUpFORMAT="LINESPECIFIC"virtual void SBLineUp( );REMAP='BodyNoLead'Calls ROLE='italic'SetPosition to move the thumb up or left (by ROLE='italic'LineMagnitude units). ROLE='italic'SBLineUp is called to respond to a click on the top or left arrow of the scroll bar.See alsoREMAP='BodyNoLead'TScrollBar::SetPositionSBPageDownFORMAT="LINESPECIFIC"virtual void SBPageDown( );REMAP='BodyNoLead'Calls ROLE='italic'SetPosition to move the thumb down or right (by ROLE='italic'PageMagnitude units). ROLE='italic'SBPageDown is called to respond to a click in the bottom or right scrolling area of the scroll bar.See alsoREMAP='BodyNoLead'TScrollBar::SetPositionSBPageUpFORMAT="LINESPECIFIC"virtual void SBPageUp( );REMAP='BodyNoLead'Calls ROLE='italic'SetPosition to move the thumb up or left (by ROLE='italic'PageMagnitude units). ROLE='italic'SBPageUp is called to respond to a click in the top or left scrolling area of the scroll bar.See alsoREMAP='BodyNoLead'TScrollBar::SetPositionSBThumbPositionFORMAT="LINESPECIFIC"virtual void SBThumbPosition(int thumbPos);REMAP='BodyNoLead'Calls ROLE='italic'SetPosition to move the thumb. ROLE='italic'SBThumbPosition is called to respond when the thumb is set to a new position.See alsoREMAP='BodyNoLead'TScrollBar::SetPositionSBThumbTrackFORMAT="LINESPECIFIC"virtual void SBThumbTrack(int thumbPos);REMAP='BodyNoLead'Calls ROLE='italic'SetPosition to move the thumb as it is being dragged to a new position.See alsoREMAP='BodyNoLead'TScrollBar::SetPositionSBTopFORMAT="LINESPECIFIC"virtual void SBTop( );REMAP='BodyNoLead'Calls ROLE='italic'SetPosition to move the thumb to the top or right of the scroll bar. ROLE='italic'SBTop is called to respond to the thumb being dragged to the top or rightmost position on the scroll bar.See alsoREMAP='BodyNoLead'TScrollBar::SetPositionSetPositionFORMAT="LINESPECIFIC"virtual void SetPosition(int thumbPos);REMAP='BodyNoLead'Moves the thumb to the position specified in ROLE='italic'ThumbPos. If ROLE='italic'ThumbPos is outside the present range of the scroll bar, the thumb is moved to the closest position within range.See alsoREMAP='BodyNoLead'TScrollBar::GetPositionSetRangeFORMAT="LINESPECIFIC"virtual void SetRange(int min, int max);REMAP='BodyNoLead'Sets the scroll bar to the range between ROLE='italic'min and ROLE='italic'max.See alsoREMAP='BodyNoLead'TScrollBar::GetRangeTransferFORMAT="LINESPECIFIC"uint Transfer(void* buffer, TTransferDirection direction);REMAP='BodyNoLead'Transfers scroll bar data to or from the transfer buffer pointed to by ROLE='italic'buffer. ROLE='italic'buffer is expected to point to a ROLE='italic'TScrollBarData structure.REMAP='Body'Data is transferred to or from the transfer buffer if ROLE='italic'tdGetData or ROLE='italic'tdSetData is supplied as the direction.REMAP='Body'ROLE='italic'Transfer always returns the size of the transfer data (the size of the ROLE='italic'TScrollBarData structure). To retrieve the size of this data without transferring data, pass ROLE='italic'tdSizeData as the ROLE='italic'direction.See alsoREMAP='BodyNoLead'TScrollBarData structProtected member functionsGetClassNameFORMAT="LINESPECIFIC"char far* GetClassName( );REMAP='BodyNoLead'Returns the name of ROLE='italic'TScrollBar's registration class, "SCROLLBAR".SetupWindowFORMAT="LINESPECIFIC"void SetupWindow( );REMAP='BodyNoLead'Sets the scroll bar's range to 0, 100. To redefine this range, call ROLE='italic'SetRange.See alsoREMAP='BodyNoLead'TScrollBar::SetRangeResponse table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='95*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_HSCROLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvHScrollCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_VSCROLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvVScrollTScrollBarData structMOREINFO="NONE"scrollba.hREMAP='BodyNoLead'The ROLE='italic'TScrollBarData structure contains integer values that represent a range of thumb positions on the scroll bar. ROLE='italic'TScrollBar's function ROLE='italic'GetRange calls ROLE='italic'TScrollBarData to obtain the highest and lowest thumb positions on the scroll bar. ROLE='italic'GetPosition calls ROLE='italic'TScrollBarData to obtain the current thumb position on the scroll bar.See alsoREMAP='BodyNoLead'TScrollBar::TransferPublic data membersHighValueFORMAT="LINESPECIFIC"int HighValue;REMAP='BodyNoLead'Contains the highest value of the thumb position in the scroll bar's range.See alsoREMAP='BodyNoLead'TScrollBar::GetRangeLowValueFORMAT="LINESPECIFIC"int LowValue;REMAP='BodyNoLead'Contains the lowest value of thumb position in the scroll bar's range.See alsoREMAP='BodyNoLead'TScrollBar::GetRangePositionFORMAT="LINESPECIFIC"int Position;REMAP='BodyNoLead'Contains the scroll bar's thumb position.See alsoREMAP='BodyNoLead'TScrollBar::GetPositionTScroller classMOREINFO="NONE"scroller.hREMAP='BodyNoLead'ROLE='italic'TScroller supports an automatic window-scrolling mechanism (referred to as autoscrolling) that works in conjunction with horizontal or vertical window scroll bars (it also works if there are no scroll bars). When autoscrolling is activated, the window automatically scrolls when the mouse is dragged from inside the client area of the window to outside that area. If the ROLE='italic'AutoMode data member is true, ROLE='italic'TScroller performs autoscrolling.REMAP='Body'To use ROLE='italic'TScroller, set the ROLE='italic'Scroller member of your ROLE='italic'TWindow descendant to a ROLE='italic'TScroller object instantiated in the constructor of your ROLE='italic'TWindow descendant. ROLE='italic'TScroller is a streamable class.Public data membersAutoModeFORMAT="LINESPECIFIC"bool AutoMode;REMAP='BodyNoLead'Is ROLE='bold'true if automatic scrolling is activated.AutoOrgFORMAT="LINESPECIFIC"bool AutoOrg;REMAP='BodyNoLead'Is ROLE='bold'true if scroller offsets original.HasHScrollBar, HasVScrollBarFORMAT="LINESPECIFIC"bool HasHScrollBar, HasVScrollBar;REMAP='BodyNoLead'Is true if scroller has horizontal or vertical scroll.TrackModeFORMAT="LINESPECIFIC"bool TrackMode;REMAP='BodyNoLead'Is ROLE='bold'true if track scrolling is activated.WindowFORMAT="LINESPECIFIC"TWindow* Window;REMAP='BodyNoLead'Points to the window whose client area scroller is to be managed.XLine, YLineFORMAT="LINESPECIFIC"int XLine, YLine;REMAP='BodyNoLead'Specifies the number of logical device units per line to scroll the rectangle in the horizontal (ROLE='italic'X) and vertical (ROLE='italic'Y) directions.XPage, YPageFORMAT="LINESPECIFIC"int XPage, YPage;REMAP='BodyNoLead'Specifies the number of logical device units per page to scroll the rectangle in the horizontal (ROLE='italic'X) and vertical (ROLE='italic'Y) directions.XPos, YPosFORMAT="LINESPECIFIC"long XPos, YPos;REMAP='BodyNoLead'Specifies the current position of the rectangle in horizontal (ROLE='italic'XPos) and vertical (ROLE='italic'YPos) scroll units.XRange, YRangeFORMAT="LINESPECIFIC"long XRange, YRange;REMAP='BodyNoLead'Specifies the number of horizontal and vertical scroll units.XUnit, YUnitFORMAT="LINESPECIFIC"int XUnit, YUnit;REMAP='BodyNoLead'Specifies the amount (in logical device units) to scroll the rectangle in the horizontal (ROLE='italic'X) and vertical (ROLE='italic'Y) directions. The rectangle is scrolled right if ROLE='italic'XUnit is positive and left if ROLE='italic'XUnit is negative. The rectangle is scrolled down if ROLE='italic'YUnit is positive and up if ROLE='italic'YUnit is negative.Public constructor and destructorConstructor FORMAT="LINESPECIFIC"TScroller(TWindow* window, int xUnit, int yUnit, long xRange, long yRange);REMAP='BodyNoLead'Constructs a ROLE='italic'TScroller object with window as the owner window, and ROLE='italic'xUnit, ROLE='italic'yUnit, ROLE='italic'xRange, and ROLE='italic'yRange as ROLE='italic'xUnit, ROLE='italic'yUnit, ROLE='italic'xRange and ROLE='italic'yRange, respectively. Initializes data members to default values. ROLE='italic'HasHScrollBar and ROLE='italic'HasVScrollBar are set according to the scroll bar attributes of the owner window.DestructorFORMAT="LINESPECIFIC"virtual ~TScroller( );REMAP='BodyNoLead'Destructs a ROLE='italic'TScroller object. Sets owning window's ROLE='italic'Scroller number variable to 0.Public member functionsAutoScrollFORMAT="LINESPECIFIC"virtual void AutoScroll( );REMAP='BodyNoLead'Scrolls the owner window's display in response to the mouse being dragged from inside to outside the window. The direction and the amount by which the display is scrolled depend on the current position of the mouse.BeginViewFORMAT="LINESPECIFIC"virtual void BeginView(TDC& dc, TRect& rect);REMAP='BodyNoLead'If ROLE='italic'TScroller_AutoOrg is ROLE='bold'true (default condition), ROLE='italic'BeginView automatically offsets the origin of the logical coordinates of the client area by ROLE='italic'XPos, ROLE='italic'YPos during a paint operation. If ROLE='italic'AutoOrg is ROLE='bold'false (for example, when the scroller is larger than 32,767 units), you must set the offset manually.EndViewFORMAT="LINESPECIFIC"virtual void EndView( );REMAP='BodyNoLead'Updates the position of the owner window's scroll bars to be coordinated with the position of the ROLE='italic'TScroller.HScrollFORMAT="LINESPECIFIC"virtual void HScroll(uint scrollEvent, int thumbPos);REMAP='BodyNoLead'Responds to the specified horizontal ROLE='italic'scrollEvent by calling ROLE='italic'ScrollBy or ROLE='italic'ScrollTo. The type of scroll event is identified by the corresponding SB_ constants. ROLE='italic'thumbPos contains the current thumb position when the scroller is notified of SB_THUMBTRACK and SB_THUMBPOSITION scroll events.IsAutoModeFORMAT="LINESPECIFIC"virtual bool IsAutoMode( );REMAP='BodyNoLead'ROLE='italic'IsAutoMode is ROLE='bold'true if automatic scrolling is activated.See alsoREMAP='BodyNoLead'TScroller::AutoModeIsVisibleRectFORMAT="LINESPECIFIC"bool IsVisibleRect(long x, long y, int xExt, int yExt);REMAP='BodyNoLead'Is ROLE='bold'true if the rectangle (ROLE='italic'x, y, xExt, and ROLE='italic'yExt) is visible.SetPageSizeFORMAT="LINESPECIFIC"virtual void SetPageSize( );REMAP='BodyNoLead'Sets the ROLE='italic'XPage and ROLE='italic'YPage data members to the width and height (in ROLE='italic'XUnits and ROLE='italic'YUnits) of the owner window's client area.See alsoREMAP='BodyNoLead'TScroller::XPage, YPage, TScroller::XUnit, YUnitSetRangeFORMAT="LINESPECIFIC"virtual void SetRange(long xRange, long yRange);REMAP='BodyNoLead'Sets the ROLE='italic'xRange and ROLE='italic'yRange of the ROLE='italic'TScroller to the parameters specified. Then calls ROLE='italic'SetSBarRange to synchronize the range of the owner window's scroll bars.See alsoREMAP='BodyNoLead'TScroller::SetSBarRangeSetSBarRangeFORMAT="LINESPECIFIC"virtual void SetSBarRange( );REMAP='BodyNoLead'Sets the range of the owner window's scroll bars to match the range of the ROLE='italic'TScroller.SetUnitsFORMAT="LINESPECIFIC"virtual void SetUnits(int xUnit, int yUnit);REMAP='BodyNoLead'Sets the ROLE='italic'XUnit and ROLE='italic'YUnit data members to ROLE='italic'TheXUnit and ROLE='italic'TheYUnit, respectively. Updates ROLE='italic'XPage and ROLE='italic'YPage by calling ROLE='italic'SetPageSize.See alsoREMAP='BodyNoLead'TScroller::XPage, YPage, TScroller::XUnit, YUnitScrollByFORMAT="LINESPECIFIC"void ScrollBy(long dx, long dy);REMAP='BodyNoLead'Scrolls to a position calculated using the passed delta values (ROLE='italic'dx and ROLE='italic'dy). A positive delta position moves the thumb position down or right. A negative delta position moves the thumb up or left.ScrollToFORMAT="LINESPECIFIC"virtual void ScrollTo(long x, long y);REMAP='BodyNoLead'Scrolls the rectangle to the position specified in ROLE='italic'x and ROLE='italic'y.SetWindowFORMAT="LINESPECIFIC"void SetWindow(TWindow* win);REMAP='BodyNoLead'Sets the owning window to ROLE='italic'win.VScrollFORMAT="LINESPECIFIC"virtual void VScroll(uint scrollEvent, int thumbPos);REMAP='Body'Responds to the specified vertical ROLE='italic'scrollEvent by calling ROLE='italic'ScrollBy or ROLE='italic'ScrollTo. The type of scroll event is identified by the corresponding SB_ constants. ROLE='italic'thumbPos contains the current thumb position when the scroller is notified of SB_THUMBTRACK and SB_THUMBPOSITION scroll events.See alsoREMAP='BodyNoLead'TScroller::ScrollToXScrollValueFORMAT="LINESPECIFIC"int XScrollValue(long rangeUnit);REMAP='BodyNoLead'ROLE='italic'XScrollValue converts a horizontal range value from the scroll bar to a horizontal scroll value.See alsoREMAP='BodyNoLead'TScroller::YScrollValueXRangeValueFORMAT="LINESPECIFIC"int XRangeValue(int scrollUnit);REMAP='BodyNoLead'ROLE='italic'XRangeValue converts a horizontal scroll value from the scroll bar to a horizontal range value.See alsoREMAP='BodyNoLead'TScroller::YRangeValueYScrollValueFORMAT="LINESPECIFIC"int YScrollValue(long rangeUnit);REMAP='BodyNoLead'ROLE='italic'YScrollValue converts a vertical range value from the scroll bar to a vertical scroll value.See alsoREMAP='BodyNoLead'TScroller::XScrollValueYRangeValueFORMAT="LINESPECIFIC"int YRangeValue(int scrollUnit);REMAP='BodyNoLead'ROLE='italic'YRangeValue converts a vertical scroll value from the scroll bar to a vertical range value.See alsoREMAP='BodyNoLead'TScroller::XRangeValueTSeparatorGadget classMOREINFO="NONE"gadget.hREMAP='Body'ROLE='italic'TSeparatorGadget is a simple class you can use to create a separator between gadgets. To do so, you must specify the size of the separator in units of SM_CXBORDER (width of the window frame) and SM_CYBORDER (height of the window frame). The right and bottom boundaries of the separator are set after calling ROLE='italic'GetsystemMetrics. By default, the separator disables itself and turns off shrink-wrapping. Note that the default border style is none.See alsoREMAP='BodyNoLead'TGadget::TBorderStyle enumPublic member functionTSeparatorGadgetFORMAT="LINESPECIFIC"TSeparatorGadget(int size = 6);REMAP='BodyNoLead'Used for both the width and the height of the separator, ROLE='italic'size is initialized at 6 border units (the width or height of a thin window border).TSlider classMOREINFO="NONE"slider.hREMAP='Body'An abstract base class derived from ROLE='italic'TScrollBar, ROLE='italic'TSlider defines the basic behavior of sliders (controls that are used for providing nonscrolling, position information). Like scroll bars, sliders have minimum and maximum positions as well as line and page magnitude. Sliders can be moved using either the mouse or the keyboard. If you use a mouse to move the slider, you can drag the thumb position, click on the slot on either side of the thumb position to move the thumb by a specified amount (ROLE='italic'PageMagnitude), or click on the ruler to position the thumb at a specific spot on the slider. The keyboard's Home and End keys move the thumb position to the minimum (ROLE='italic'Min) and maximum (ROLE='italic'Max) positions on the slider.REMAP='Body'You can use ROLE='italic'TSlider's member functions to cause the thumb positions to automatically align with the nearest tick positions. (This is referred to as snapping.) You can also specify the tick gaps (the space between the lines that separate the major divisions of the X- or Y-axis).REMAP='Body'The sample program SLIDER.CPP on your distribution disk displays a thermostat that uses sliders.REMAP='Body'See the two derived classes, ROLE='italic'THSlider and ROLE='italic'TVSlider, for specific details about horizontal and vertical sliders.Public constructor and destructorConstructor FORMAT="LINESPECIFIC"TSlider(TWindow* parent, int id, int X, int Y, int W, int H, TResId thumbResId, TModule* module = 0);REMAP='BodyNoLead'Constructs a slider object setting ROLE='italic'Pos and ROLE='italic'ThumbRgn to 0, ROLE='italic'TicGap to ROLE='italic'Range divided by 10, ROLE='italic'SlotThick to 17, ROLE='italic'Snap to true, and ROLE='italic'Sliding to false. Sets ROLE='italic'Attr.ROLE='italic'W and ROLE='italic'Attr.ROLE='italic'H to the values in ROLE='italic'X and ROLE='italic'Y. ROLE='italic'ThumbResId is set to ROLE='italic'thumbResId.DestructorFORMAT="LINESPECIFIC"~TSlider( );REMAP='BodyNoLead'Destructs a ROLE='italic'TSlider object and deletes ROLE='italic'ThumbRgn.Public member functionsGetPositionFORMAT="LINESPECIFIC"int GetPosition( ) const;REMAP='BodyNoLead'Returns the slider's current thumb position. Overloads ROLE='italic'TScrollBar's virtual function.See alsoREMAP='BodyNoLead'TSlider::SetPositionGetRangeFORMAT="LINESPECIFIC"void GetRange(int &min, int &max) const;REMAP='BodyNoLead'Returns the end values of the present range of slider thumb positions in ROLE='italic'min and ROLE='italic'max. Overloads ROLE='italic'TScrollBar's virtual function.See alsoREMAP='BodyNoLead'TSlider::SetRangeSetPositionFORMAT="LINESPECIFIC"void SetPosition(int thumbPos);REMAP='BodyNoLead'Moves the thumb to the position specified in ROLE='italic'thumbPos. If ROLE='italic'thumbPos is outside the present range of the slider, the thumb is moved to the closest position within the specified range. Overloads ROLE='italic'TScrollBar's virtual function.See alsoREMAP='BodyNoLead'TSlider::GetPositionSetRangeFORMAT="LINESPECIFIC"void SetRange(int min, int max);REMAP='BodyNoLead'Sets the slider to the range between ROLE='italic'min and ROLE='italic'max. Overloads ROLE='italic'TScrollBar's virtual function.See alsoREMAP='BodyNoLead'TSlider::GetRangeSetRulerFORMAT="LINESPECIFIC"void SetRuler(int ticGap, bool snap = false);REMAP='BodyNoLead'Sets the slider's ruler. Each slider has a built-in ruler that is drawn with the slider. The ruler, which can be blank or have tick marks on it, can be created so that it forces the thumb to snap to the tick positions automatically.Protected member functionsEvEraseBkgndFORMAT="LINESPECIFIC"bool EvEraseBkgnd(HDC hDC);REMAP='BodyNoLead'Responds to a WM_ERASEBKGND message and erases the background of the slider when the slider is changed. Calls the virtual functions ROLE='italic'PaintRuler, ROLE='italic'PaintSlot, and ROLE='italic'PaintThumb to paint the components of the slider. To avoid flickering, ROLE='italic'EvEraseBkgnd is called to erase the background as the painting occurs.See alsoREMAP='BodyNoLead'TSlider::EvPaintEvGetDlgCodeFORMAT="LINESPECIFIC"uint EvGetDlgCode(MSG far* msg);REMAP='BodyNoLead'Responds to a WM_GETDLGCODE message and let the dialog manater control the response to a DIRECTION key or TAB key input. Captures cursor-movement keys to move the thumb by returning a DLGC_WANTARROWS message, which indicates that direction keys are desired.The ROLE='italic'msg parameter indicates the kind of message, for example a a control or a command message, sent to the dialog box manager.REMAP='Body'ROLE='italic'EvGetDlgCode returns a code that indicates how the control message is to be treated.See alsoREMAP='BodyNoLead'TButton::EvGetDlgCode, TWindow::DefaultProcessing, DLGC_xxxx dialog control message constantsEvKeyDownFORMAT="LINESPECIFIC"void EvKeyDown(uint key, uint repeatCount, uint flags);REMAP='BodyNoLead'ROLE='italic'EvKeyDown translates the virtual key code into a movement and then moves the thumb. ROLE='italic'key indicates the virtual key code of the pressed key, ROLE='italic'repeatCount holds the number of times the same key is pressed, and ROLE='italic'flags contains one of the following messages, which translate to virtual key (VK) codes:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='147*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Virtual key codeVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SB_PAGEUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VK_PRIORCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SB_PAGEDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VK_NEXTCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SB_BOTTOMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VK_ENDCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SB_TOPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VK_HOMECOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SB_LINEUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VK_LEFT(same as SB_LINELEFT)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SB_LINEUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VK_UPCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SB_LINEDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VK_RIGHT(same as SB_LINERIGHT)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SB_LINEDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VK_DOWNEvKillFocusFORMAT="LINESPECIFIC"void EvKillFocus(HWND hWndGetFocus);REMAP='BodyNoLead'In response to a WM_KILLFOCUS message sent to a window that is losing the keyboard, ROLE='italic'EvKillFocus hides and then destroys the caret.EvLButtonDblClkFORMAT="LINESPECIFIC"void EvLButtonDblClk(uint modKeys, TPoint& point);REMAP='BodyNoLead'Responds to a WM_LBUTTONDBLCLK message (which indicates the user double-clicked the left mouse button), then throws away the messages so the base class doesn't receive them.EvLButtonDownFORMAT="LINESPECIFIC"void EvLButtonDown(uint modKeys, TPoint& point);REMAP='BodyNoLead'Responds to a mouse press by positioning the thumb or beginning a mouse drag. If the mouse is pressed down while it is over the thumb, ROLE='italic'EvLButtonDown enters sliding state. If the mouse is in the slot, ROLE='italic'EvLButtonDown pages up or down. If the mouse is on the ruler, ROLE='italic'EvLButtonDown jumps to that position. ROLE='italic'EvLButtonDown generates a scroll code of SB_THUMBPOSITION, SB_LINEUP, SB_LINEDOWN, SB_PAGEUP, SB_PAGEDOWN, SB_THUMBTRACK.See alsoREMAP='BodyNoLead'TSlider::EvLButtonUpEvLButtonUpFORMAT="LINESPECIFIC"void EvLButtonUp(uint modKeys, TPoint& point);REMAP='BodyNoLead'If the mouse button is released, ROLE='italic'EvLButtonUp ends sliding, paging, or jumping to a position on the ruler.See alsoREMAP='BodyNoLead'TSlider::EvLButtonDownEvMouseMoveFORMAT="LINESPECIFIC"void EvMouseMove(uint modKeys, TPoint& point);REMAP='BodyNoLead'Moves the mouse to the indicated position. If the mouse is being dragged, ROLE='italic'EvMouseMove positions the thumb and sends the appropriate message to the parent window.EvPaintFORMAT="LINESPECIFIC"void EvPaint( );REMAP='BodyNoLead'Paints the entire slidername='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'ruler, slot, and thumb. Calls the virtual functions ROLE='italic'PaintRuler, ROLE='italic'PaintSlot, and ROLE='italic'PaintThumb to paint the components of the slider.See alsoREMAP='BodyNoLead'TSlider::EvEraseBkgndEvSetFocusFORMAT="LINESPECIFIC"void EvSetFocus(HWND hWndLostFocus);REMAP='BodyNoLead'Creates a blinking caret to show the focus in the current window.EvSizeFORMAT="LINESPECIFIC"void EvSize(uint sizeType, TSize& size);REMAP='BodyNoLead'Recalculates the size of the slider when the window size is changed.GetBkColorFORMAT="LINESPECIFIC"void GetBkColor(TDC& dc);REMAP='BodyNoLead'Sends a WM_CTLCOLOR message to the parent and calls ROLE='italic'dc::GetBkColor to extract the background color for the slider.HitTestFORMAT="LINESPECIFIC"virtual int HitTest(TPoint& point) = 0;REMAP='BodyNoLead'Gets information about where a given ROLE='italic'X, Y location falls on the slider. The return value is in ROLE='italic'scrollCodes. Each of the derived classes performs comparisons to return a scroll code.See alsoREMAP='BodyNoLead'TSlider::NotifyParentNotifyParentFORMAT="LINESPECIFIC"virtual void NotifyParent(int scrollCode, int pos=0) = 0;REMAP='BodyNoLead'Sends a WS_HSCROLL or WS_VSCROLL message to the parent window.See alsoREMAP='BodyNoLead'TVSlider::HitTestPaintRulerFORMAT="LINESPECIFIC"virtual void PaintRuler(TDC& dc) = 0;REMAP='BodyNoLead'Paints the ruler. It is assumed that the slot or thumb do not overlap the ruler.PaintSlotFORMAT="LINESPECIFIC"virtual void PaintSlot(TDC& dc) = 0;REMAP='BodyNoLead'Paints the slot in which the thumb slides.PaintThumbFORMAT="LINESPECIFIC"virtual void PaintThumb(TDC& dc);REMAP='BodyNoLead'Paints the thumb itself using a resource DIB translated to the current system button colors and which overlaps the slot.PointToPosFORMAT="LINESPECIFIC"virtual int PointToPos(TPoint& point) = 0;REMAP='BodyNoLead'Translates an ROLE='italic'X,Y point to a position in slider units.See alsoREMAP='BodyNoLead'TSlider::PosToPointPosToPointFORMAT="LINESPECIFIC"virtual TPoint PosToPoint(int pos) = 0;REMAP='BodyNoLead'Translates a position in slider units to an ROLE='italic'X,Y point.See alsoREMAP='BodyNoLead'TSlider::PointToPosSetupThumbRgnFORMAT="LINESPECIFIC"virtual void SetupThumbRgn( );REMAP='BodyNoLead'Creates the region that defines the thumb shape for this slider class. Although the default region is a simple bounding rectangle, it can be any shape. While the slider thumb is being moved, this region is used for testing the mouse position and updating the thumb position.See alsoREMAP='BodyNoLead'TSlider::ThumbRgnSetupWindowFORMAT="LINESPECIFIC"void SetupWindow( );REMAP='BodyNoLead'Calls ROLE='italic'TScrollBar::SetupWindow and ROLE='italic'SetupThumbRgn to set up the window.See alsoREMAP='BodyNoLead'TScrollBar::SetupWindowSlideThumbFORMAT="LINESPECIFIC"virtual void SlideThumb(TDC& dc, int thumbPos);REMAP='BodyNoLead'Slides the thumb to a given position and performs the necessary blitting and painting.SnapPosFORMAT="LINESPECIFIC"int SnapPos(int pos);REMAP='BodyNoLead'Constrains ROLE='italic'pos so it is in the range from ROLE='italic'Min to ROLE='italic'Max and (if snapping is enabled) performs snapping by rounding ROLE='italic'pos to the nearest ROLE='italic'TicGap.See alsoREMAP='BodyNoLead'TSlider::TicGapProtected data membersBkColorFORMAT="LINESPECIFIC"TColor BkColor;REMAP='BodyNoLead'Stores the background color of the slider.CaretRectFORMAT="LINESPECIFIC"TRect CaretRect;REMAP='BodyNoLead'Refers to the position of the caret's rectangle.MaxFORMAT="LINESPECIFIC"int Max;REMAP='BodyNoLead'Contains the maximum value of the slider position.MinFORMAT="LINESPECIFIC"int Min;REMAP='BodyNoLead'Contains the minimum value of the slider position.MouseOffsetFORMAT="LINESPECIFIC"static TSize MouseOffset;REMAP='BodyNoLead'ROLE='italic'MouseOffset shows the offset from the rectangle's original top left position to the position where the mouse is clicked. Thus, when the rectangle is moved, it can maintain the same relationship to the position of the mouse click.PosFORMAT="LINESPECIFIC"int Pos;REMAP='BodyNoLead'Indicates where the thumb is positioned on the slider.See alsoREMAP='BodyNoLead'TSlider::GetPositionRangeFORMAT="LINESPECIFIC"uint Range;REMAP='BodyNoLead'Contains the difference between the maximum and minimum range of the slider.SlideDCFORMAT="LINESPECIFIC"static TDC* SlideDC;REMAP='BodyNoLead'ROLE='italic'SlideDC is used while the mouse is down and the thumb is sliding. It reflects the movement of the mouse on the DC.SlidingFORMAT="LINESPECIFIC"bool Sliding;REMAP='BodyNoLead'ROLE='italic'Sliding is ROLE='bold'true if the thumb is sliding. Otherwise, ROLE='bold'false.SlotThickFORMAT="LINESPECIFIC"int SlotThick;REMAP='BodyNoLead'Indicates the thickness of the slot. Set to 17 by default.SnapFORMAT="LINESPECIFIC"bool Snap;REMAP='BodyNoLead'ROLE='italic' Snap is ROLE='bold'true if snapping is activated; otherwise ROLE='bold'false.ThumbRectFORMAT="LINESPECIFIC"TRect ThumbRect;REMAP='BodyNoLead'Holds the thumb's bounding rectangle.ThumbResIdFORMAT="LINESPECIFIC"TResId ThumbResId;REMAP='BodyNoLead'ROLE='italic'ThumbResId is the bitmap resource ID for the thumb knob.ThumbRgnFORMAT="LINESPECIFIC"virtual void SetupThumbRgn( );REMAP='BodyNoLead'Creates the region that defines the thumb shape for this slider class. Although the default region is a simple bounding rectangle, it can be any shape. While the slider thumb is being moved, this region is used for testing the mouse position and updating the thumb position.See alsoREMAP='BodyNoLead'TSlider::ThumbRgnTicGapFORMAT="LINESPECIFIC"int TicGap;REMAP='BodyNoLead'Specifies the amount of space in pixels between ticks.Response table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='126*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_ERASEBKGNDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvEraseBkgndCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_GETDLGCODECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvGetDlgCodeCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_KEYDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvKeyDownCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_KILLFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvKillFocus COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_LBUTTONDBLCLKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvLButtonDblClkCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_LBUTTONDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvLButtonDownCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_LBUTTONUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvLButtonUpCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MOUSEMOVECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvMouseMoveCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_PAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvPaintCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SETFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvSetFocusCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvSizeTHSlider classMOREINFO="NONE"slider.hREMAP='Body'Derived from ROLE='italic'TSlider, ROLE='italic'THSlider provides implementation details for horizontal sliders. See ROLE='italic'TSlider for an illustration of a horizontal slider.Public constructorsConstructorsFORMAT="LINESPECIFIC"THSlider(TWindow* parent, int id, int X, int Y, int W, int H, TResId thumbResId = IDB_HSLIDERTHUMB, TModule* module = 0);REMAP='BodyNoLead'Constructs a slider object with a default bitmap resource ID of IDB_HSLIDERTHUMB for the thumb knob.Protected member functionsHitTestFORMAT="LINESPECIFIC"int HitTest(TPoint& point);REMAP='BodyNoLead'Overrides ROLE='italic'TSlider's virtual function and gets information about where a given X, Y location falls on the slider. The return value is in ROLE='italic'scrollCodes.See alsoREMAP='BodyNoLead'TSlider::HitTestNotifyParentFORMAT="LINESPECIFIC"void NotifyParent(int scrollCode, int pos=0);REMAP='BodyNoLead'Overrides ROLE='italic'TSlider's virtual function and sends a WS_HSCROLL message to the parent window.See alsoREMAP='BodyNoLead'TSlider::NotifyParentPaintRulerFORMAT="LINESPECIFIC"void PaintRuler(TDC&);REMAP='BodyNoLead'Overrides ROLE='italic'TSlider's virtual function and paints the horizontal ruler.See alsoREMAP='BodyNoLead'TSlider::PaintRulerPaintSlotFORMAT="LINESPECIFIC"void PaintSlot(TDC&);REMAP='BodyNoLead'Overrides ROLE='italic'TSlider's virtual function and paints the slot in which the thumb slides.See alsoREMAP='BodyNoLead'TSlider::PaintSlotPointToPosFORMAT="LINESPECIFIC"int PointToPos(TPoint& point);REMAP='BodyNoLead'Overrides ROLE='italic'TSlider's virtual function and translates an ROLE='italic'X,Y point to a position in slider units.See alsoREMAP='BodyNoLead'TSlider::PointToPosPosToPointFORMAT="LINESPECIFIC"TPoint PosToPoint(int pos);REMAP='BodyNoLead'Overrides ROLE='italic'TSlider's virtual function and translates a position in slider units to an ROLE='italic'X,Y point.See alsoREMAP='BodyNoLead'TSlider::PosToPoint TVSlider classMOREINFO="NONE"slider.hREMAP='Body'Derived from ROLE='italic'TSlider, ROLE='italic'TVSlider provides implementation details for vertical sliders. See ROLE='italic'TSlider for an illustration of a vertical slider.Public constructorConstructorFORMAT="LINESPECIFIC"TVSlider(TWindow* parent, int id, int X, int Y, int W, int H, TResId thumbResId = IDB_VSLIDERTHUMB, TModule* module = 0);REMAP='BodyNoLead'Constructs a vertical slider object with a default bitmap resource ID of IDB_VSLIDERTHUMB for the thumb knob.Protected member functionsHitTestFORMAT="LINESPECIFIC"int HitTest(TPoint& point);REMAP='BodyNoLead'Overrides ROLE='italic'TSlider's virtual function and gets information about where a given X, Y location falls on the slider. The return value is in ROLE='italic'scrollCodes.See alsoREMAP='BodyNoLead'TSlider::HitTestNotifyParentFORMAT="LINESPECIFIC"void NotifyParent(int scrollCode, int pos=0);REMAP='BodyNoLead'Overrides ROLE='italic'TSlider's virtual function and sends a WS_VSCROLL message to the parent window.See alsoREMAP='BodyNoLead'TSlider::NotifyParentPaintRulerFORMAT="LINESPECIFIC"void PaintRuler(TDC& dc);REMAP='BodyNoLead'Overrides ROLE='italic'TSlider's virtual function and paints the vertical ruler.See alsoREMAP='BodyNoLead'TSlider::PaintRulerPaintSlotFORMAT="LINESPECIFIC"void PaintSlot(TDC& dc);REMAP='BodyNoLead'Overrides ROLE='italic'TSlider's virtual function and paints the slot in which the thumb slides.See alsoREMAP='BodyNoLead'TSlider::PaintSlotPointToPosFORMAT="LINESPECIFIC"int PointToPos(TPoint& point);REMAP='BodyNoLead'Overrides ROLE='italic'TSlider's virtual function and translates an ROLE='italic'X,Y point to a position in slider units.See alsoREMAP='BodyNoLead'TSlider::PointToPosPosToPointFORMAT="LINESPECIFIC"TPoint PosToPoint(int pos);REMAP='BodyNoLead'Overrides ROLE='italic'TSlider's virtual function and translates a position in slider units to an ROLE='italic'X,Y point.See alsoREMAP='BodyNoLead'TSlider::PosToPointTSortedStringArray classMOREINFO="NONE"validate.hREMAP='BodyNoLead'Implements a list of ASCII characters stored as a sorted array of elements that are string objects. ROLE='italic'TSortedStringArray can perform many of the string manipulation functions, such as adding and removing elements from the array, and provides many of the common C++ functions implemented by container classes.See alsoREMAP='BodyNoLead'TValidator class, TLookupValidator classPublic constructorConstructorFORMAT="LINESPECIFIC"TSortedStringArray(int upper, int lower, int delta);REMAP='BodyNoLead'Constructs a ROLE='italic'TSortedStringArray object with an upper boundary of ROLE='italic'upper, a lower boundary of ROLE='italic'lower, and a growth delta of ROLE='italic'delta.Type definitionsvoidFORMAT="LINESPECIFIC"typedef void (*IterFunc)(string&, void*);REMAP='BodyNoLead'Function type used as a parameter to the ROLE='italic'ForEach member function.intFORMAT="LINESPECIFIC"typedef int (*CondFunc)(const string&, void*);REMAP='BodyNoLead'Function type used as a parameter to the ROLE='italic'FirstThat and ROLE='italic'LastThat member functions.Public member functionsAddFORMAT="LINESPECIFIC"int Add(const string& t);REMAP='BodyNoLead'Adds an element to the array at the next available index position. Adding an element beyond the upper boundary leads to an overflow condition. If this condition occurs and the growth delta, ROLE='italic'delta, (from the constructor) is nonzero, the array is expanded (by sufficient multiples of ROLE='italic'delta bytes) to accommodate the addition. If ROLE='italic'delta is zero, ROLE='italic'Add fails. ROLE='italic'Add returns 0 if the object could not be added.ArraySizeFORMAT="LINESPECIFIC"unsigned ArraySize( ) const;REMAP='BodyNoLead'Returns the size of the array.DestroyFORMAT="LINESPECIFIC"int Destroy(const string& t);REMAP='BodyNoLead'Removes the element specified by ROLE='italic't and deletes it.FORMAT="LINESPECIFIC"int Destroy(int loc);REMAP='BodyNoLead'Removes an element from the array at the specified index location, ROLE='italic'loc, and deletes it.DetachFORMAT="LINESPECIFIC"int Detach(const string& t);REMAP='BodyNoLead'Removes the specified element from the array. Returns 1 if successful; otherwise, returns 0.FORMAT="LINESPECIFIC"int Detach(int loc);REMAP='BodyNoLead'Removes an element from the array at the specified index location, ROLE='italic'loc. Returns 1 if successful; otherwise, returns 0.FindFORMAT="LINESPECIFIC"int Find(const string& t) const;REMAP='BodyNoLead'Finds the first element represented by ROLE='italic't and returns the index where the element is located.FirstThatFORMAT="LINESPECIFIC"string* FirstThat(CondFunc cond, void* args) const;REMAP='BodyNoLead'Returns a pointer to the first element in the array that satisfies a specified condition. ROLE='italic'cond is the test function pointer that returns true for a specified condition. ROLE='italic'args contains the various arguments passed. Returns 0 if no element in the array satisfies the given condition. Because ROLE='italic'FirstThat creates its own internal iterator, you can use it as a search function also.FlushFORMAT="LINESPECIFIC"void Flush( );REMAP='BodyNoLead'Removes all elements from the array without destroying the array itself.ForEachFORMAT="LINESPECIFIC"void ForEach(IterFunc iter, void* args);REMAP='BodyNoLead'Creates an internal iterator to execute the specified function, ROLE='italic'iter, for each element in the array. Use the ROLE='italic'args argument to pass various kinds of data to this function.GetItemsInContainerFORMAT="LINESPECIFIC"unsigned GetItemsInContainer( ) const;REMAP='BodyNoLead'Returns the number of elements in the array.HasMemberFORMAT="LINESPECIFIC"int HasMember(const string& t) const;REMAP='BodyNoLead'Returns 1 if the element specified by ROLE='italic't exists in the array; otherwise returns 0.IsEmptyFORMAT="LINESPECIFIC"int IsEmpty( ) const;REMAP='BodyNoLead'Returns 1 if the array is empty; otherwise, returns 0.IsFullFORMAT="LINESPECIFIC"int IsFull( ) constREMAP='BodyNoLead'Returns 1 if the array is full; otherwise, returns 0.LastThatFORMAT="LINESPECIFIC"string* LastThat(CondFunc cond, void* args) const;REMAP='BodyNoLead'Returns a pointer to the last element in the array that satisfies a specified condition. ROLE='italic'cond is the test function pointer that returns true for a specified condition. ROLE='italic'args contains the various arguments passed. Returns 0 if no element in the array satisfies the given condition. Because ROLE='italic'LastThat creates its own internal iterator, you can use it as a search function also.LowerBoundFORMAT="LINESPECIFIC"int LowerBound( ) const;REMAP='BodyNoLead'Returns the array's lower boundary.operator []FORMAT="LINESPECIFIC"string& operator [](int loc);REMAP='BodyNoLead'Returns a reference to the element at the location specified by ROLE='italic'loc. This version resizes the array if it is necessary to make ROLE='italic'loc a valid index.FORMAT="LINESPECIFIC"string& operator [](int loc) const;REMAP='BodyNoLead'Returns a reference to the element at the location specified by ROLE='italic'loc. This version throws an exception in the debugging version on an attempt to index out of bounds.UpperBoundFORMAT="LINESPECIFIC"int UpperBound( ) const;REMAP='BodyNoLead'Returns the array's upper boundary.TStatic classMOREINFO="NONE"static.hREMAP='BodyNoLead'A ROLE='italic'TStatic is an interface object that represents a static text interface element. Static elements consist of text or graphics that the user does not change. An application, however, can modify the static control. You must use a ROLE='italic'TStatic object, for example, to create a static control that's used to display a text label such as a copyright notice in a parent ROLE='italic'TWindow. ROLE='italic'TStatic can also be used to make it easier to modify the text of static controls in ROLE='italic'TDialogs. See the sample program in the EXAMPLES\OWL\OWLAPI\STATIC directory for an example of a static control.Public data membersTextLenFORMAT="LINESPECIFIC"uint TextLen;REMAP='BodyNoLead'ROLE='italic'TextLen holds the size of the text buffer for static controls. The number of characters that can actually be stored in the static control is one less than ROLE='italic'TextLen because of the null terminator on the string. ROLE='italic'TextLen is also the number of bytes transferred by the ROLE='italic'Transfer member function.Public constructorsConstructorsFORMAT="LINESPECIFIC"TStatic(TWindow* parent, int id, const char far* title, int x, int y, int w, int h, uint textLen = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs a static control object with the supplied parent window (ROLE='italic'parent), control ID (ROLE='italic'Id), text (ROLE='italic'title), position (ROLE='italic'x, y) relative to the origin of the parent window's client area, width (ROLE='italic'w), height (ROLE='italic'h), and default text length (ROLE='italic'textLen) of zero. By default, the static control is visible upon creation and has left-justified text. (set to WS_CHILD | WS_VISIBLE | WS_GROUP | SS_LEFT.) Invokes a ROLE='italic'TControl constructor.You can change the default style of the static control by via the control object's constructor.FORMAT="LINESPECIFIC"TStatic(TWindow* parent, int resourceId, uint textLen = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TStatic object to be associated with a static control interface control of a ROLE='italic'TDialog. Invokes the ROLE='italic'TControl constructor with similar parameters then sets ROLE='italic'TextLen to ROLE='italic'textLen. Disables the data transfer mechanism by calling ROLE='italic'DisableTransfer. The ROLE='italic'resourceId parameter must correspond to a static control resource that you define.See alsoREMAP='BodyNoLead'TControl::TControlPublic member functionsClearFORMAT="LINESPECIFIC"virtual void Clear( );REMAP='BodyNoLead'Clears the text of the associated static control.GetTextFORMAT="LINESPECIFIC"int GetText(char far* str, int maxChars);REMAP='BodyNoLead'Retrieves the static control's text, stores it in the ROLE='italic'str argument of ROLE='italic'maxChars size, and returns the number of characters copied.GetTextLenFORMAT="LINESPECIFIC"int GetTextLen( );REMAP='BodyNoLead'Returns the length of the static control's text.SetTextFORMAT="LINESPECIFIC"void SetText(const char far* str);REMAP='BodyNoLead'Sets the static control's text to the string supplied in ROLE='italic'str.TransferFORMAT="LINESPECIFIC"uint Transfer(void* buffer, TTransferDirection direction);REMAP='BodyNoLead'Transfers ROLE='italic'TextLen characters of text to or from a transfer buffer pointed to by ROLE='italic'buffer. If ROLE='italic'direction is tdGetData, the text is transferred to the buffer from the static control. If ROLE='italic'direction is tdSetData, the static control's text is set to the text contained in the transfer buffer. ROLE='italic'Transfer returns ROLE='italic'TextLen, the number of bytes stored in or retrieved from the buffer. If ROLE='italic'direction is tdSizeData, ROLE='italic'Transfer returns ROLE='italic'TextLen without transferring data.Protected member functionsEvSizeFORMAT="LINESPECIFIC"void EvSize (uint sizeType, TSize& size);REMAP='BodyNoLead'Overrides ROLE='italic'TWindow's virtual function. When the static control is resized, ROLE='italic'EvSize ensures it's also repainted.GetClassNameFORMAT="LINESPECIFIC"virtual char far* GetClassName( );REMAP='BodyNoLead'Returns the name of ROLE='italic'TStatic's registration class (STATIC), or returns STATIC_CLASS if BWCC is enabled.Response table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='93*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'EvSizeTStatus classMOREINFO="NONE"except.hREMAP='BodyNoLead'Used primarily for backward compatibility with previous versions of ObjectWindows, ROLE='italic'TStatus is used by ROLE='italic'TModule and ROLE='italic'TWindow to indicate an error in the initialization of an interface object. If ROLE='italic'Status is set to a nonzero value, a ROLE='italic'TXCompatibility exception is thrown.See alsoREMAP='BodyNoLead'TModule::Status, TWindow::StatusPublic constructorConstructorFORMAT="LINESPECIFIC"TStatus( );REMAP='BodyNoLead'Constructs a ROLE='italic'TStatus object and initializes the status code to 0.Public data membersoperator =FORMAT="LINESPECIFIC"TStatus& operator =(int statusCode);REMAP='BodyNoLead'Sets the status code and throws a ROLE='italic'TXCompatibility exception.operator intFORMAT="LINESPECIFIC"operator int( ) const;REMAP='BodyNoLead'Returns the status code.TStatusBar classMOREINFO="NONE"statusba.hREMAP='BodyNoLead'ROLE='italic'TStatusBar provides support for status bars, inserted gadgets, hint text, and keyboard modes. In contrast to plain message bars, status bars provide several display options. ObjectWindows status bars let you include multiple text gadgets (the text on the left of the status bar) and different border styles. You can also reserve space for mode indicators (the text that displays the program's current state, such as extended selection (of keys and other modes), MOREINFO="NONE"CapsLock, MOREINFO="NONE"NumLock, MOREINFO="NONE"ScrollLock, MOREINFO="NONE"Overtype, and macro recording). By default, ObjectWindows uses these virtual key codes and displays the following strings for the indicated enabled modes:COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='90*'COLNAME='C3' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ModeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Virtual key codeCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Text displayedVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ExtendedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'EXTCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CapsLockCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VK_CAPITALCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'CAPSCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'NumLockCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VK_NUMLOCKCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'NUMCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ScrollLockCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VK_SCROLLCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'SCRLCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OvertypeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VK_INSERTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'OVRCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Macro recordingCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'RECREMAP='Body'ROLE='italic'TStatusBar creates text gadgets for the mode indicators you request and adjusts the spacing between mode indicators. The ROLE='italic'TSpacing struct stores spacing and layout unit constraints.REMAP='Body'Like other control bars, the status bar is constructed and destroyed at the same time as its parent's window, but this is not a required procedure.REMAP='Body'The following program statements show how to construct a status bar and insert it at the bottom of the window.FORMAT="LINESPECIFIC"TStatusBar* sb = new TStatusBar(0, TGadget_Recessed, TStatusBar_CapsLock | TStatusBar_NumLock | TStatusBar_Overtype);
frame->Insert(*sb, TDecoratedFrame::Bottom);
MainWindow = frame;REMAP='Body'See the MDIFILE.CPP sample program on your distribution disk for an example of how to create a window with a status bar.Type definitionsTModeIndicatorFORMAT="LINESPECIFIC"enum TModeIndicator {ExtendSelection = 1, CapsLock = 1 << 1, NumLock = 1 << 2, ScrollLock = 1 << 3, Overtype = 1 << 4, RecordingMacro = 1 << 5};REMAP='BodyNoLead'Enumerates the keyboard modes. By default, these are arranged horizontally on the status bar from left to right. Sets the extended selection, MOREINFO="NONE"CapsLock, MOREINFO="NONE"NumLock, MOREINFO="NONE"ScrollLock, MOREINFO="NONE"Overtype, and recording macro indicators.Public constructorConstructorFORMAT="LINESPECIFIC"TStatusBar(TWindow* parent = 0, TGadget_TBorderStyle borderStyle = TGadget_Recessed, uint modeIndicators = 0, TFont* font = new TGadgetWindowFont, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TStatusBar object in the ROLE='italic'parent window and creates any new gadgets and mode indicator gadgets. Sets ROLE='italic'BorderStyle to ROLE='italic'borderStyle, ROLE='italic'ModeIndicators to ROLE='italic'modeIndicators, and ROLE='italic'NumModeIndicators to 0. ROLE='italic'borderStyle can be any one of the value of ROLE='italic'theBorderStyle enum (for example, plain, raised, recessed, or embossed). The parameter mode indicators can be one of the values of the ROLE='italic'TModeIndicator enum, such as CapsLock, NumLock, ScrollLock, or Overtype. The parameter font points to a font object that contains the type of fonts used for the gadget window. The parameter, ROLE='italic'module, which defaults to 0, is passed to the base ROLE='italic'TWindow's constructor in the ROLE='italic'module parameter. Sets the values of the margins and borders depending on whether the gadget is raised, recessed, or plain. Public member functionsGetModeIndicatorFORMAT="LINESPECIFIC"bool GetModeIndicator(TModeIndicator i) const;REMAP='BodyNoLead'Returns the current status bar mode indicator.InsertFORMAT="LINESPECIFIC"void Insert(TGadget& gadget, TPlacement = After, TGadget* sibling = 0);REMAP='BodyNoLead'Inserts the gadget (objects derived from class ROLE='italic'TGadget) in the status bar. By default, the new gadget is placed just after any existing gadgets and to the left of the status mode indicators. For example, you can insert a painting tool or a happy face that activates a recorded macro.operator[]FORMAT="LINESPECIFIC"TGadget* operator[](uint index);REMAP='BodyNoLead'Returns a gadget at a given index, but cannot access mode indicator gadgets.SetModeIndicatorFORMAT="LINESPECIFIC"void SetModeIndicator(TModeIndicator, bool state);REMAP='BodyNoLead'Sets ROLE='italic'TModeIndicator to a given text gadget and set the status (on, by default) of the mode indicator. For the mode indicator to appear on the status bar, you must specify the mode when the window is constructed.See alsoREMAP='BodyNoLead'TStatusBar::TModeIndicatorSetSpacingFORMAT="LINESPECIFIC"void SetSpacing(TSpacing& spacing);REMAP='BodyNoLead'Uses the ROLE='italic'TSpacing values to set the spacing to be used between mode indicator gadgets. ROLE='italic'TSpacing sets the status-bar margins in layout units. Typically, the message indicator (the leftmost text gadget) is left-aligned on the status bar and the other indicators are right-aligned. See ROLE='italic'TLayoutMetrics for an detailed explanation of layout units and constraints.FORMAT="LINESPECIFIC"struct TSpacing {
TMargins::TUnits Units;
int Value;
TSpacing( ) {Units = TMargins::LayoutUnits; Value = 0;}
};See alsoREMAP='BodyNoLead'TStatusBar::TModeIndicatorToggleModeIndicatorFORMAT="LINESPECIFIC"void ToggleModeIndicator(TModeIndicator);REMAP='BodyNoLead'Toggles the ROLE='italic'ModeIndicator.Protected data membersBorderStyleFORMAT="LINESPECIFIC"TGadget::TBorderStyle BorderStyle;REMAP='BodyNoLead'One of the enumerated border stylesname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'none, plain, raised, recessed, or embossedname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'used by the mode indicators on the status bar.ModeIndicatorsFORMAT="LINESPECIFIC"uint ModeIndicators;REMAP='BodyNoLead'The ROLE='italic'ModeIndicators bit field indicates which mode indicators have been created for the status bar.ModeIndicatorStateFORMAT="LINESPECIFIC"uint ModeIndicatorState;REMAP='BodyNoLead'Specifies the mode of the status bar. This can be any one of the values of ROLE='italic'TModeIndicator enum such as CapsLock, NumLock, ScrollLock, Overtype, ROLE='italic'RecordingMacro, or ROLE='italic'ExtendSelection.NumModeIndicatorsFORMAT="LINESPECIFIC"uint NumModeIndicators;REMAP='BodyNoLead'Specifies the number of mode indicators, which can range from 1 to 5.SpacingFORMAT="LINESPECIFIC"TSpacing Spacing;REMAP='BodyNoLead'Specifies the spacing between mode indicators on the status bar.Protected member functionsIdleActionFORMAT="LINESPECIFIC"bool IdleAction(long);REMAP='BodyNoLead'If more than one application is running, ROLE='italic'TStatusBar calls ROLE='italic'IdleAction instead of ROLE='italic'PreProcessMsg to check the state of the NumLock, CapsLock, or ScrollLock keys and to update the mode indicators if they do not reflect the current status of these keys.See alsoREMAP='BodyNoLead'TStatusBar::PreProcessMsgPositionGadgetFORMAT="LINESPECIFIC"void PositionGadget(TGadget* previous, TGadget* next, TPoint& point);REMAP='BodyNoLead'Determines the position of the new gadget in relation to any previously existing gadgets and uses the ROLE='italic'Pixels, ROLE='italic'LayoutUnits, and ROLE='italic'BorderUnits fields of ROLE='italic'TMargins to determine the amount of spacing to leave between the mode indicators.PreProcessMsgFORMAT="LINESPECIFIC"bool PreProcessMsg(MSG& msg);REMAP='BodyNoLead'Overrides ROLE='italic'TWindow::PreProcessMsg to process keyboard messages and update the mode indicators when the NumLock, CapsLock, or ScrollLock keys are pressed.See alsoREMAP='BodyNoLead'TStatusBar::IdleActionTStorageDocument classMOREINFO="NONE"stgdoc.hREMAP='BodyNoLead'Derived from ROLE='italic'TDocument, ROLE='italic'TStorageDocument supplies functionality that supports OLE's compound file structure. A compound file structure is a file-management system that stores files in a hierarchical structure within a root file. This storage structure is analagous to the directory or folder and file scheme used on a disk, except that a directory is called a storage and a file is called a stream.REMAP='Body'In addition, ROLE='italic'TStorageDocument provides support for OLE's compound document mechanism. A compound document can store many different kinds of embedded objects, for example, spreadsheets as well as bitmaps.REMAP='Body'Basically, ROLE='italic'TStorageDocument supports having a document read and write its own storage. In order to provide this functionality, ROLE='italic'TStorageDocument overrides several virtual methods from ROLE='italic'TDocument and, following ROLE='italic'TDocument's strategy, also applies property lists both to documents and to their views. In this way, documents can use these attributes to read files in from storage and write files out to storage REMAP='Body'Messages are sent to the application, which queries the properties in order to determine how to process the document or view. Each derived class must implement its own property attribute types-either string or binary data.See alsoREMAP='BodyNoLead'TDocument, TOleDocumentType definitionsTStgDocPropFORMAT="LINESPECIFIC"enum TStgDocProp {PrevProperty, CreateTime, ModifyTime, AccessTime, StorageSize, IStorageInstance, NextProperty};REMAP='BodyNoLead'Enumerates the following constants that define the document's properties:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='68*'COLNAME='C2' COLWIDTH='306*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PrevProperty COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Should always have a value of ROLE='italic'TDocument::NextProperty - 1. This is the initial value in any document's property list.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CreateTimeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The time the file is created.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ModifyTimeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The time the file is modified.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AccessTimeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The last time the file was accessed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'StorageSizeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The size of the storage buffer.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IStorageInstanceCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The storage instance for the document.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'NextPropertyCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The final value for any document's list of properties.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"Constructor TStorageDocument(TDocument* parent = 0): TDocument(parent), StorageI(0), OpenCount(0), CanRelease(false);REMAP='BodyNoLead'Constructs a ROLE='italic'TStorageDocument object with the specified ROLE='italic'TDocument parent window. Sets the data members ROLE='italic'StorageI and ROLE='italic'OpenCount to 0. Sets ROLE='italic'CanRelease to ROLE='bold'false. Later, the member function ROLE='italic'ReleaseDoc sets this flag to ROLE='bold'true so that the document can be closed. DestructorFORMAT="LINESPECIFIC"~TStorageDocument( );REMAP='BodyNoLead'Destroys a ROLE='italic'TStorageDocument object.Public member functionsCloseFORMAT="LINESPECIFIC"bool Close( );REMAP='BodyNoLead'Releases the ROLE='italic'IStorage if ROLE='italic'CanRelease is ROLE='bold'true. (ROLE='italic'CanRelease is set to ROLE='bold'true when ROLE='italic'ReleaseDoc is called.) Before closing the document, Close checks any child documents and tries to close them.See alsoREMAP='BodyNoLead'TStorageDocument::Open, TStorageDocument::ReleaseDoc, TOutStream, ofxxxx document open enumCommitFORMAT="LINESPECIFIC"bool Commit(bool force = false);REMAP='BodyNoLead'Saves the current data to storage. When a file is closed, the document manager calls either ROLE='italic'Commit or ROLE='italic'Revert. If ROLE='italic'force is ROLE='bold'true, all data is written to storage. ROLE='italic'TDocument's ROLE='italic'Commit checks any child documents and commits their changes to storage also. Before the current data is saved, all child documents must return ROLE='bold'true. If all child documents return ROLE='bold'true, ROLE='italic'Commit flushes the views for any operations that occurred since the last time the view was checked. Once all data for the document object is updated and saved, ROLE='italic'Commit returns ROLE='bold'true.CommitTransactedStorageFORMAT="LINESPECIFIC"bool CommitTransactedStorage();REMAP='Body'If a file is opened or created in transacted mode, call CommitTransactedStorage to commit a document to permanent storage. By default, a document uses transacted instead of direct storage. With transacted storage, a document written to IStorage is only temporary until it is committed permanently. If a compound file is opened or created in direct mode, then CommitTransactedStorage does not need to be called.FindPropertyFORMAT="LINESPECIFIC"int FindProperty(const char far* name);REMAP='BodyNoLead'Gets the property index, given the property name. Returns the integer index number that corresponds to the name. If the name isn't found in the list of properties, returns 0.See alsoREMAP='BodyNoLead'pfxxxx property attribute constantsGetPropertyFORMAT="LINESPECIFIC"int GetProperty(int index, void far* dest, int textlen=0);REMAP='BodyNoLead'Returns the total number of properties for this storage document, where ROLE='italic'index is the property index, ROLE='italic'dest contains the property data, and ROLE='italic'textlen is the size of the property array. If ROLE='italic'textlen is 0, the property data is returned as binary data; otherwise, the property data is returned as text data.See alsoREMAP='BodyNoLead'pfxxxx property attribute constants, TStorageDocument::SetPropertyGetStorageFORMAT="LINESPECIFIC"IStorage* GetStorage( );REMAP='BodyNoLead'Returns the document's root ROLE='italic'IStorage.See alsoREMAP='BodyNoLead'TStorageDocument::SetStorageInStreamFORMAT="LINESPECIFIC"TInStream* InStream(int omode, const char far* strmId=0);REMAP='BodyNoLead'Provides an input stream for the ROLE='italic'TStorageDocument object. Returns a pointer to a ROLE='italic'TInStream object. The parameter ROLE='italic'omode contains a combination of the document open and sharing modes (for example,ROLE='BOLD' ROLE='italic'ofReadWrite) defined in docview.h. The ROLE='italic'strmId parameter is used for documents that support named streams.See alsoREMAP='BodyNoLead'TStorageDocument::OutStream, TInStream, ofxxxx document open enumIsOpenFORMAT="LINESPECIFIC"bool IsOpen( );REMAP='BodyNoLead'Checks to see if the storage document has any ROLE='italic'IStorage created. If there is no storage, ROLE='italic'IsOpen returns ROLE='bold'false; otherwise, it returns ROLE='bold'true.OpenFORMAT="LINESPECIFIC"bool Open(int omode, const char far* name);REMAP='BodyNoLead'Opens or creates a document based on IStorage. The ROLE='italic'name parameter specifies the name of the document, if any, to open. The ROLE='italic'omode parameter contains a combination of the document open and sharing modes (for example, ROLE='italic'ofReadWrite) defined in docview.h. See alsoREMAP='BodyNoLead'TStorageDocument::Close, TOutStream, ofxxxx document open enumOpenHandleFORMAT="LINESPECIFIC"virtual bool OpenHandle(int omode, HANDLE hGlobal);REMAP='BodyNoLead'ROLE='italic' OpenHandle writes data to a memory block. ROLE='italic'OpenHandle first creates an ROLE='italic'ILockBytes (an OLE2 interface that implements reading, writing, and locking a series of bytes in a file) interface on the global handle and then creates an ROLE='italic'IStorage based on the ROLE='italic'ILockBytes interface. The parameter ROLE='italic'omode contains a combination of the document open and sharing modes (for example, ROLE='italic'ofReadWrite) defined in docview.h. See alsoREMAP='BodyNoLead'ofxxxx document open enumOutStreamFORMAT="LINESPECIFIC"TOutStream* OutStream(int omode, const char far* strmId=0);REMAP='BodyNoLead'Provides an output stream for a particular storage medium. Returns a pointer to a ROLE='italic'TOutStream. The parameter ROLE='italic'omode contains a combination of the document open and sharing modes (for example, ROLE='italic'ofReadWrite ) defined in docview.h. The ROLE='italic'strmId parameter is used for documents that support named streams.See alsoREMAP='BodyNoLead'TStorageDocument::InStream, TOutStream, ofxxxx document open enumPropertyCountFORMAT="LINESPECIFIC"int PropertyCount( );REMAP='BodyNoLead'Gets the total number of properties for the ROLE='italic'TStorageDocument object. Returns ROLE='italic'NextProperty - 1.See alsoREMAP='BodyNoLead'pfxxxx property attribute constantsPropertyFlagsFORMAT="LINESPECIFIC"int PropertyFlags(int index);REMAP='BodyNoLead'Returns the attributes of a specified property given the index of the property whose attributes you want to retrieve.See alsoREMAP='BodyNoLead'pfxxxx property attribute constantsPropertyNameFORMAT="LINESPECIFIC"const char* PropertyName(int index);REMAP='BodyNoLead'Returns the name of the property given the index value.See alsoREMAP='BodyNoLead'pfxxxx property attribute constantsReleaseDocFORMAT="LINESPECIFIC"virtual bool ReleaseDoc( );REMAP='BodyNoLead'Releases the storage for the document and closes the document.RevertFORMAT="LINESPECIFIC"bool Revert(bool clear = false);REMAP='BodyNoLead'Performs the reverse of ROLE='italic'Commit and cancels any changes made to the storage document since the last commit. If ROLE='italic'clear is ROLE='bold'true, data is not reloaded for views. Revert also checks all child documents and cancels any changes if all children return ROLE='bold'true. When a file is closed, the document manager calls either ROLE='italic'Commit or ROLE='italic'Revert. ROLE='italic'Revert returns ROLE='bold'true if the revert operation is successful.SetDocPathFORMAT="LINESPECIFIC"bool SetDocPath(const char far* path);REMAP='BodyNoLead'Sets the document path for the Open and Save file operations.SetPropertyFORMAT="LINESPECIFIC"bool SetProperty(int index, const void far* src);REMAP='BodyNoLead'Sets the value of the property, given the index of the property, and ROLE='italic'src, the data type (either binary or text) to which the property must be set.See alsoREMAP='BodyNoLead'pfxxxx property attribute constants, TStorageDocument::GetPropertySetStorageFORMAT="LINESPECIFIC"IStorage* SetStorage(IStorage* stg);REMAP='BodyNoLead'Attaches an ROLE='italic'IStorage pointer (ROLE='italic'stg) to this document. See alsoREMAP='BodyNoLead'TStorageDocument::GetStorage, TStorageDocument::StorageIProtected data membersThisOpenFORMAT="LINESPECIFIC"int ThisOpen;REMAP='BodyNoLead'Holds the actual mode bits used for opening the storage. The mode bits determine how the file is opened: for example, read only, read and write, and so on.See alsoREMAP='BodyNoLead'ofxxxx document open enumStorageIFORMAT="LINESPECIFIC"IStorage* StorageI;REMAP='BodyNoLead'Holds the current ROLE='italic'IStorage instance. (If no storage is open, ROLE='italic'StorageI is 0.)See alsoREMAP='BodyNoLead'TStorageDocument::GetStorage, TStorageDocument::SetStorageTStream classMOREINFO="NONE"docview.hREMAP='Body'An abstract base class, ROLE='italic'TStream provides links between streams and documents, views, and document files.Public destructorDestructorFORMAT="LINESPECIFIC"~TStream( );REMAP='BodyNoLead'Closes the stream. Derived classes generally close the document if it was opened especially for this stream.Public member functionsGetDocumentFORMAT="LINESPECIFIC"TDocument& GetDocument( );REMAP='BodyNoLead'Returns the current document open for streaming.GetOpenModeFORMAT="LINESPECIFIC"int GetOpenMode( );REMAP='BodyNoLead'Gets mode flags used when opening document streams. For example, the stream can be opened in ROLE='italic'ofRead mode to allow reading, but not changing (writing to) the file.See alsoREMAP='BodyNoLead'ofxxxx document open enumGetStreamNameFORMAT="LINESPECIFIC"const char far* GetStreamName( );REMAP='BodyNoLead'Gets the name of the stream used for opening the document.Protected data membersDocFORMAT="LINESPECIFIC"TDocument& Doc;REMAP='BodyNoLead'Stores the document that owns this stream.NextStreamFORMAT="LINESPECIFIC"TStream* NextStream;REMAP='BodyNoLead'Points to the next stream in the list of active streams.Protected constructorConstructorFORMAT="LINESPECIFIC"TStream(TDocument& doc, const char far* name,int mode);REMAP='BodyNoLead'Constructs a ROLE='italic'TStream object. ROLE='italic'doc refers to the document object, ROLE='italic'name is the user-defined name of the stream, and ROLE='italic'mode is the mode used for opening the stream.See alsoREMAP='BodyNoLead'ROLE='italic'TInStream, TOutStream, ofXXXX document open enum, shXXXX document sharing enumTStringLookupValidator classMOREINFO="NONE"validate.hREMAP='BodyNoLead'Derived from ROLE='italic'TLookupValidator,ROLE='BOLD' ROLE='italic'TStringLookupValidator is a streamable class. A ROLE='italic'TStringLookupValidator object verifies the data in its associated edit control by searching through a collection of valid strings. You can use string-lookup validators when your edit control needs to accept only members of a certain set of strings.Public constructor and destructorConstructor FORMAT="LINESPECIFIC"TStringLookupValidator(TSortedStringArray* strings);REMAP='BodyNoLead'Constructs a string-lookup object by first calling the constructor inherited from ROLE='italic'TLookupValidator and then setting ROLE='italic'Strings to ROLE='italic'strings.DestructorFORMAT="LINESPECIFIC"~TStringLookupValidator( );REMAP='BodyNoLead'This destructor disposes of a list of valid strings by calling ROLE='italic'NewStringList and then disposes of the string-lookup validator object by calling the Destructor inherited from ROLE='italic'TLookupValidator.Public member functionsErrorFORMAT="LINESPECIFIC"void Error( );REMAP='BodyNoLead'Overrides ROLE='italic'TValidator's virtual function and displays a message box indicating that the typed string does not match an entry in the string list.See alsoREMAP='BodyNoLead'TValidator::ErrorLookupFORMAT="LINESPECIFIC"bool Lookup(const char far* str);REMAP='BodyNoLead'Overrides ROLE='italic'TLookupValidator's virtual function. Returns true if the string passed in ROLE='italic'str matches any of the ROLE='italic'strings. Uses the search method of the string collection to determine if str is present.See alsoREMAP='BodyNoLead'TLookupValidator::LookupNewStringListFORMAT="LINESPECIFIC"void NewStringList(TSortedStringArray* strings);REMAP='BodyNoLead'Sets the list of valid input string for the string-lookup validator. Disposes of any existing string list and then sets ROLE='italic'Strings to ROLE='italic'strings.Protected data memberStringsFORMAT="LINESPECIFIC"TSortedStringArray* Strings;REMAP='BodyNoLead'Points to a string collection containing all the valid strings the user can type. If ROLE='italic'Strings is NULL, all input is validated.TSystemMenu classMOREINFO="NONE"menu.hREMAP='BodyNoLead'ROLE='italic'TSystemMenu creates a system menu object that then becomes the existing system menu. Public constructorConstructorFORMAT="LINESPECIFIC"TSystemMenu(HWND wnd, bool revert = false);REMAP='BodyNoLead'Constructs a system menu object. If ROLE='italic'revert is true, then the menu created is a default system menu. Otherwise, it is the menu currently in the window.See alsoREMAP='BodyNoLead'TPopupMenu::TPopupMenuTTextGadget classMOREINFO="NONE"textgadg.hREMAP='Body'Derived from ROLE='italic'TGadget,ROLE='BOLD' ROLE='italic'TTextGadget is a text gadget object. When you construct a text gadget, you must specify how many characters you want to reserve space for and how the text should be aligned horizontally. The inner boundaries of the text gadget are computed by multiplying the number of characters by the maximum character width.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TTextGadget(int id = 0, TBorderStyle = Recessed, TAlign = Left, uint numChars = 10, const char* text = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TTextGadget object with the specified ID, border style, and alignment. Sets ROLE='italic'Margins.ROLE='italic'Left and ROLE='italic'Margins.ROLE='italic'Right to 2. Sets ROLE='italic'Text and ROLE='italic'TextLen to 0.DestructorFORMAT="LINESPECIFIC"~TTextGadget( );REMAP='BodyNoLead'Destroys a ROLE='italic'TTextGadget object.Public member functionsGetTextFORMAT="LINESPECIFIC"char* GetText( );REMAP='BodyNoLead'Returns the text for the gadget.SetTextFORMAT="LINESPECIFIC"void SetText(const char* text);REMAP='BodyNoLead'If the text stored in ROLE='italic'Text is not the same as the new text, ROLE='italic'SetText deletes the text stored in ROLE='italic'Text. Then, it sets ROLE='italic'TextLen to the length of the new string. If no text exists, it sets both ROLE='italic'Text and ROLE='italic'TextLen to 0 and then calls ROLE='italic'Invalidate to invalidate the rectangle.Protected data membersAlignFORMAT="LINESPECIFIC"TAlign Align;REMAP='BodyNoLead'Text alignment attributename='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'left-, center-, or right-aligned.NumCharsFORMAT="LINESPECIFIC"uint NumChars;REMAP='BodyNoLead'Holds the number of text characters.TextFORMAT="LINESPECIFIC"char* Text;REMAP='BodyNoLead'Points to the text for the gadget.TextLenFORMAT="LINESPECIFIC"uint TextLen;REMAP='BodyNoLead'Stores the length of the text.Protected member functionsGetDesiredSizeFORMAT="LINESPECIFIC"void GetDesiredSize(TSize &size);REMAP='BodyNoLead'If shrink-wrapping is requested, ROLE='italic'GetDesiredSize returns the size needed to accommodate the borders, margins, and text; otherwise, if shrink-wrapping is not requested, it returns the gadget's current width and height.See alsoREMAP='BodyNoLead'TGadget::GetDesiredSizeInvalidateFORMAT="LINESPECIFIC"void Invalidate( );REMAP='BodyNoLead'Calls ROLE='italic'TGadget::GetInnerRect to compute the area of the text for the gadget and then ROLE='italic'TGadget::InvalidateRect to invalidate the rectangle in the parent window.See alsoREMAP='BodyNoLead'TGadget::GetInnerRect, TGadget::InvalidatePaintFORMAT="LINESPECIFIC"void Paint(TDC& dc);REMAP='BodyNoLead'Calls ROLE='italic'TGadget::ROLE='italic'PaintBorder to paint the border. Calls ROLE='italic'TGadget::ROLE='italic'GetInnerRect to calculate the area of the text gadget's rectangle. If the text is left-aligned, ROLE='italic'Paint calls ROLE='italic'dc.ROLE='italic'GetTextExtent to compute the width and height of a line of the text. To set the background color, ROLE='italic'Paint calls ROLE='italic'dc.ROLE='italic'GetSysColor and sets the default background color to face shading (COLOR_BTNFACE). To set the button text color, ROLE='italic'Paint calls ROLE='italic'dc.ROLE='italic'SetTextColor and sets the default button text color to COLOR_BTNTEXT. To draw the text, ROLE='italic'Paint calls ROLE='italic'dc.ExtTextOut and passes the parameters ETO_CLIPPED (so the text is clipped to fit the rectangle) and ETO_OPAQUE (so the rectangle is filled with the current background color).See alsoREMAP='BodyNoLead'TGadget::PaintTTile Direction enumMOREINFO="NONE"gadgetwi.hFORMAT="LINESPECIFIC"enum TTileDirection{Horizontal, Vertical};REMAP='Body'Enumerates the two directions the gadget can be tiled. ROLE='italic'TGadgetWindow::TileGadgets actually tiles the gadgets in the direction requested. See alsoREMAP='BodyNoLead'TGadgetWindow::Direction, TGadgetWindow::TileGadgetsTAlign enumTAlignFORMAT="LINESPECIFIC"enum TAlign {Left, Center, Right};REMAP='Body'Enumerates the text-alignment attributes. ROLE='italic'Left aligns the text at the left edge of the bounding rectangle. ROLE='italic'Right aligns the text at the right edge of the bounding rectangle. ROLE='italic'Center aligns the text horizontally at the center of the bounding rectangle.TTinyCaption classMOREINFO="NONE"tinycapt.hREMAP='Body'Derived from ROLE='italic'TWindow,ROLE='BOLD' ROLE='italic'TTinyCaption is a mix-in class that handles a set of non-client events to produce a smaller caption bar for a window. Whenever it displays the caption bar, ROLE='italic'TTinyCaption checks the window style and handles the WS_SYSMENU, WS_MINIMIZEBOX, WS_MAXIMIZEBOX display attributes. Thus, you can use ROLE='italic'TTinyCaption to set the attributes of the tiny caption bar before enabling the caption. For example,FORMAT="LINESPECIFIC"Attr.Style = WS_POPUP | WS_BORDER | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX;REMAP='Body'ROLE='italic'TTinyCaption provides functions that let you manipulate frame types, border styles, and menus. You can adjust the height of the caption bar or accept the default height, which is about one-half the height of a standard caption bar. If you set ROLE='italic'CloseBox to ROLE='bold'true, then the window will close when you click the close box instead of displaying the system menu.REMAP='Body'The sample program OWLCMD.CPP on your distribution disk displays an example of a tiny caption bar.REMAP='Body'If you are using ROLE='italic'TTinyCaption as a mix-in class that does partial event handling, call the ROLE='italic'DoXxxx function in the mix-in class (instead of the ROLE='italic'EvXxxx function) to avoid duplicating default processing. The following example from OWLCMD.CPP (a sample program on your distribution disk) illustrates this process:FORMAT="LINESPECIFIC"void TMyFrame::EvSysCommand(uint cmdType,TPoint& p)
{
if (TTinyCaption::DoSysCommand(cmdType, p) == esPartial)
FrameWindow::EvSysCommand(cmdType, p);REMAP='Body'The ROLE='italic'TFLoatingFrame class can be used with ROLE='italic'TTinyCaption to produce a close box. See the sample programs OWLCMD.CPP and MDIFILE.CPP on your distribution disk for examples of how to use ROLE='italic'TTinyCaption.Protected data membersBorderFORMAT="LINESPECIFIC"TSize Border;REMAP='BodyNoLead'Thin frame border size for dividers.CaptionFontFORMAT="LINESPECIFIC"TFont* CaptionFont;REMAP='BodyNoLead'Font used for the text in the tiny caption bar.CaptionHeightFORMAT="LINESPECIFIC"int CaptionHeight;REMAP='BodyNoLead'Height of the caption bar.CloseBoxFORMAT="LINESPECIFIC"bool CloseBox;REMAP='BodyNoLead'If ROLE='bold'true, the window will close when the close box is clicked.DownHitFORMAT="LINESPECIFIC"uint DownHit;REMAP='BodyNoLead'Location of mouse-button press or cursor move.FrameFORMAT="LINESPECIFIC"TSize Frame;REMAP='BodyNoLead'Actual left and right, top and bottom dimensions of the caption bar.IsPressedFORMAT="LINESPECIFIC"bool IsPressed;REMAP='BodyNoLead'Is ROLE='bold'true if a mouse button is pressed.TCEnabledFORMAT="LINESPECIFIC"bool TCEnabled;REMAP='BodyNoLead'Is ROLE='bold'true if the tiny caption bar is displayed.WaitingForSysCmdFORMAT="LINESPECIFIC"bool WaitingForSysCmd;REMAP='BodyNoLead'Is ROLE='bold'true if ROLE='italic'TTinyCaption is ready to receive system messages.Protected constructor and destructorConstructorFORMAT="LINESPECIFIC"TTinyCaption( );REMAP='BodyNoLead'Constructs a ROLE='italic'TTinyCaption object attached to the given parent window. Initializes the caption font to 0 and TCEnabled to false so that the tiny caption bar is not displayed automatically.DestructorFORMAT="LINESPECIFIC"~TTinyCaption( );REMAP='BodyNoLead'Destroys a ROLE='italic'TTinyCaption object and deletes the caption font.Protected member functionsDoCommandFORMAT="LINESPECIFIC"TEventStatus DoCommand(uint id, HWND hWndCtl, uint notifyCode, LRESULT& evRes);REMAP='BodyNoLead'Displays the system menu using ROLE='italic'::TrackPopup so that ROLE='italic'TTinyCaption sends WM_COMMAND instead of WM_SYSCOMMAND messages. If a system menu command is received, it's then transformed into a WM_SYSCOMMAND message. If the tiny caption bar is ROLE='bold'false, ROLE='italic'DoCommand returns ROLE='italic'esPartial.See alsoREMAP='BodyNoLead'TTinyCaption::EvCommand, TEventStatus enumDoLButtonUpFORMAT="LINESPECIFIC"TEventStatus DoLButtonUp(uint hitTest, TPoint& screenPt);REMAP='BodyNoLead'Releases the mouse capture if the caption bar is enabled and a mouse button is pressed. Sets ROLE='italic'hitTest, indicating the mouse button has been pressed. Captures the mouse message and repaints the smaller buttons before returning ROLE='italic'esComplete.See alsoREMAP='BodyNoLead'TTinyCaption::EvLButtonUpDoMouseMoveFORMAT="LINESPECIFIC"TEventStatus DoMouseMove(uint hitTest, TPoint& screenPt);REMAP='BodyNoLead'Returns ROLE='italic'TEventStatus.DoNCActivateFORMAT="LINESPECIFIC"TEventStatus DoNCActivate(bool active, bool& evRes);REMAP='BodyNoLead'If the tiny caption is not enabled or is iconic, returns ROLE='italic'esPartial. Otherwise, repaints the caption as an active caption and returns ROLE='italic'esComplete.See alsoREMAP='BodyNoLead'TTinyCaption::EvNCActivateDoNCCalcSizeFORMAT="LINESPECIFIC"TEventStatus DoNCCalcSize(bool calcValidRects, NCCALCSIZE_PARAMS far&calcSize, uint& evRes);REMAP='BodyNoLead'If the caption bar is not enabled or is iconic, returns ROLE='italic'esPartial. Otherwise, calculates the dimensions of the caption and returns ROLE='italic'esComplete.See alsoREMAP='BodyNoLead'TTinyCaption::EvNCCalcSizeDoNCHitTestFORMAT="LINESPECIFIC"TEventStatus DoNCHitTest(TPoint& screenPt, uint& evRes);REMAP='BodyNoLead'If the caption bar is not enabled, returns ROLE='italic'esPartial. Otherwise, sends a message to the caption bar that the mouse or the cursor has moved, and returns ROLE='italic'esComplete.See alsoREMAP='BodyNoLead'TTinyCaption::EvNCHitTestDoNCLButtonDownFORMAT="LINESPECIFIC"TEventStatus DoNCLButtonDown(uint hitTest, TPoint& screenPt);REMAP='BodyNoLead'If the caption bar isn't enabled, returns ROLE='italic'esPartial. Otherwise, determines if the user released the button outside or inside a menu, and returns ROLE='italic'esComplete.See alsoREMAP='BodyNoLead'TTinyCaption::EvNCLButtonDownDoNCPaintFORMAT="LINESPECIFIC"TEventStatus DoNCPaint( );REMAP='BodyNoLead'If the caption bar isn't enabled or is iconized, returns ROLE='italic'esPartial. Otherwise, gets the focus, paints the caption, and returns ROLE='italic'esPartial, thus indicating that a separate paint function must be called to paint the borders of the caption.See alsoREMAP='BodyNoLead'TTinyCaption::EvNCPaintDoSysCommandFORMAT="LINESPECIFIC"TEventStatus DoSysCommand(uint cmdType, TPoint& p);REMAP='BodyNoLead'If the caption bar isn't enabled, returns ROLE='italic'esPartial. If the caption bar is iconized and the user clicks the icon, calls ROLE='italic'DoSysMenu to display the menu in its normal mode and returns ROLE='italic'esComplete.See alsoREMAP='BodyNoLead'TTinyCaption::EvSysCommandDoSysMenuFORMAT="LINESPECIFIC"void DoSysMenu;REMAP='BodyNoLead'Gets the system menu and sets up menu items. ROLE='italic'DoSysMenu is also responsible for displaying and tracking the status of the menu.EnableTinyCaptionFORMAT="LINESPECIFIC"void EnableTinyCaption(int ch=58, bool closeBox=false);REMAP='BodyNoLead'Activates the tiny caption bar. By default, ROLE='italic'EnableTinyCaption replaces the system window with a tiny caption window that doesn't close when the system window is clicked. If the ROLE='italic'closeBox argument is ROLE='bold'true, clicking on the system menu will close the window instead of bringing up the menu. You can use ROLE='italic'EnableTinyCaption to hide the window if you are using a tiny caption in a derived class. To diminish the tiny caption bar, try the following values:FORMAT="LINESPECIFIC"EnableTinyCaption(30, true);REMAP='Body'Or, to maximize the tiny caption bar, use these values:FORMAT="LINESPECIFIC"EnableTinyCaption(48, true);EvCommandFORMAT="LINESPECIFIC"LRESULT EvCommand(uint id, HWND hWndCtl, uint notifyCode);REMAP='BodyNoLead'ROLE='italic'EvCommand provides extra processing for commands, but lets the focus window and its parent windows handle the command first.See alsoREMAP='BodyNoLead'TTinyCaption::DoCommandEvLButtonUpFORMAT="LINESPECIFIC"void EvLButtonUp(uint hitTest, TPoint& screenPt);REMAP='BodyNoLead'Responds to a mouse button-up message by calling ROLE='italic'DoLButtonUp. If ROLE='italic'DoLButtonUp doesn't return ROLE='italic'IsComplete, ROLE='italic'EvLButtonUp calls ROLE='italic'TWindow::EvLButtonUp.See alsoREMAP='BodyNoLead'TTinyCaption::DoLButtonUpEvMouseMoveFORMAT="LINESPECIFIC"void EvMouseMove(uint hitTest, TPoint& screenPt);REMAP='BodyNoLead'Responds to a mouse-move message by calling ROLE='italic'DoMouseMove. If ROLE='italic'DoMouseMove doesn't return ROLE='italic'IsComplete,ROLE='BOLD' ROLE='italic'EvMouseMove calls ROLE='italic'TWindow::EvMouseMove.See alsoREMAP='BodyNoLead'TTinyCaption::DoMouseMoveEvNCActivateFORMAT="LINESPECIFIC"bool EvNCActivate(bool active);REMAP='BodyNoLead'Responds to a request to change a title bar or icon by calling ROLE='italic'DoNCActivate. If ROLE='italic'DoNCActivate doesn't return ROLE='italic'esComplete,ROLE='BOLD' ROLE='italic'EvNCActivate calls ROLE='italic'TWindow::EvNCActivate.See alsoREMAP='BodyNoLead'TTinyCaption::DoNCActivateEvNCCalcSizeFORMAT="LINESPECIFIC"uint EvNCCalcSize(bool calcValidRects, NCCALCSIZE_PARAMS far& calcSize);REMAP='BodyNoLead'Responds to a request to change a title bar or icon by calling ROLE='italic'DoNCActivate. If ROLE='italic'DoNCActivate doesn't return ROLE='italic'esComplete,ROLE='BOLD' ROLE='italic'EvNCActivate calls ROLE='italic'TWindow::EvNCActivate.REMAP='Body'Calculates the size of the command window including the caption and border so that it can fit within the window.See alsoREMAP='BodyNoLead'TTinyCaption::DoNCActivateEvNCHitTestFORMAT="LINESPECIFIC"uint EvNCHitTest(TPoint& screenPt);REMAP='BodyNoLead'Responds to a cursor move or press of a mouse button by calling ROLE='italic'DoNCHitTest. If ROLE='italic'DoNCHitTest doesn't return ROLE='italic'esComplete,ROLE='BOLD' ROLE='italic'EvNCHitTest calls ROLE='italic'TWindow::EvNCHitTest.See alsoREMAP='BodyNoLead'TTinyCaption::DoNCHitTestEvNCLButtonDownFORMAT="LINESPECIFIC"void EvNCLButtonDown(uint hitTest, TPoint& screenPt);REMAP='BodyNoLead'Responds to a press of the left mouse button while the cursor is within the nonclient area of the caption bar by calling ROLE='italic'DoNCLButtonDown. If ROLE='italic'DoNCLButtonDown doesn't return ROLE='italic'esComplete,ROLE='BOLD' ROLE='italic'EvNCLButtonDown calls ROLE='italic'TWindow::EvNCLButtonDown.See alsoREMAP='BodyNoLead'TTinyCaption::DoNCLButtonDownEvNCPaintFORMAT="LINESPECIFIC"void EvNCPaint( );REMAP='BodyNoLead'Responds to a request to change a title bar or icon. Paints the indicated device context or display screen and does any special painting required for the caption.See alsoREMAP='BodyNoLead'TTinyCaption::DoNCActivateEvSysCommandFORMAT="LINESPECIFIC"void EvSysCommand(uint cmdType, TPoint& p);REMAP='BodyNoLead'Responds to a WM_SYSCOMMAND message by calling ROLE='italic'DoSysCommand. If ROLE='italic'DoSysCommand returns ROLE='italic'esPartial,ROLE='BOLD' ROLE='italic'EvSysCommand calls ROLE='italic'TWindow::EvSysCommand.See alsoREMAP='BodyNoLead'TTinyCaption::DoSysCommandGetCaptionRectFORMAT="LINESPECIFIC"TRect GetCaptionRect( );REMAP='BodyNoLead'Gets the area of the caption for changing or repainting.See alsoREMAP='BodyNoLead'TTinyCaption::PaintCaptionGetMaxBoxRectFORMAT="LINESPECIFIC"TRect GetMaxBoxRect( );REMAP='BodyNoLead'Returns the size of the maximize box rectangle.See alsoREMAP='BodyNoLead'TTinyCaption::PaintMaxBoxRectGetMinBoxRectFORMAT="LINESPECIFIC"TRect GetMinBoxRect( );REMAP='BodyNoLead'Returns the size of the minimize box rectangle.See alsoREMAP='BodyNoLead'TTinyCaption::PaintMinBoxRectGetSysBoxRectFORMAT="LINESPECIFIC"TRect GetSysBoxRect( );REMAP='BodyNoLead'Returns the size of the system box rectangle.See alsoREMAP='BodyNoLead'TTinyCaption::PaintSysBoxRectPaintButtonFORMAT="LINESPECIFIC"void PaintButton(TDC& dc, TRect& boxRect, bool pressed);REMAP='BodyNoLead'Paints a blank button.PaintCaptionFORMAT="LINESPECIFIC"void PaintCaption(bool active);REMAP='BodyNoLead'Calls ROLE='italic'dc.ROLE='italic'SelectObject to select the given rectangle and ROLE='italic'dc.ROLE='italic'PatBlt to paint the tiny caption bar using the currently selected brush for this device context.See alsoREMAP='BodyNoLead'TDC::SelectObject, TDC::PatBltPaintCloseBoxFORMAT="LINESPECIFIC"void PaintCloseBox(TDC& dc, TRect& boxRect, bool pressed);REMAP='BodyNoLead'Paints a close box on the tiny caption bar. You can override the default box if you want to design your own close box.See alsoREMAP='BodyNoLead'TTinyCaption::GetSysBoxRectPaintMaxBoxFORMAT="LINESPECIFIC"void PaintMaxBox(TDC& dc, TRect& boxRect, bool pressed);REMAP='BodyNoLead'Paints a maximize box on the tiny caption bar.See alsoREMAP='BodyNoLead'TTinyCaption::GetMaxBoxRectPaintMinBoxFORMAT="LINESPECIFIC"void PaintMinBox(TDC& dc, TRect& boxRect, bool pressed);REMAP='BodyNoLead'Paints a minimize box on the tiny caption bar.See alsoREMAP='BodyNoLead'TTinyCaption::GetMinBoxRectPaintSysBoxFORMAT="LINESPECIFIC"void PaintSysBox(TDC& dc, TRect& boxRect, bool pressed);REMAP='BodyNoLead'Paints the system box.See alsoREMAP='BodyNoLead'TTinyCaption::GetSysBoxRectResponse table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='132*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCACTIVATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvNCActivateCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCCALCSIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvNcCalcSizeCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCHITTESTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvNcHitTestCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCPAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvNcPaintCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCLBUTTONDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvNclButtonDownCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_LBUTTONUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvLButtonUpCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MOUSEMOVECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvMouseMoveCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SYSCOMMANDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvSysCommandTToolBox classMOREINFO="NONE"toolbox.hREMAP='Body'Derived from ROLE='italic'TGadgetWindow,ROLE='BOLD' ROLE='italic'TToolBox arranges gadgets in a matrix in which all columns are the same width (as wide as the widest gadget) and all rows are the same height (as high as the highest gadget).REMAP='Body'You can specify exactly how many rows and columns you want for your toolbox, or you can let ROLE='italic'TToolbox calculate the number of columns and rows you need. If you specify AS_MANY_AS_NEEDED, the ROLE='italic'TToolBox calculates how many rows or columns are needed based on the opposite dimension. For example, if there are twenty gadgets, and you requested four columns, your matrix would have five rows.Public constructorConstructorFORMAT="LINESPECIFIC"TToolBox(TWindow* parent, int numColumns = 2, int numRows = AS_MANY_AS_NEEDED, TTileDirection direction = Horizontal, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TToolBox object with the specified number of columns and rows and tiling direction. Overlaps the borders of the toolbox with those of the gadget and sets ROLE='italic'ShrinkWrapWidth to true.Public member functionsGetDesiredSizeFORMAT="LINESPECIFIC"void GetDesiredSize(TSize& size);REMAP='BodyNoLead'Overrides ROLE='italic'TGadget'sROLE='BOLD' ROLE='italic'GetDesiredSize function and computes the size of the cell by calling ROLE='italic'GetMargins to get the margins.See alsoREMAP='BodyNoLead'TGadgetWindow::GetDesiredSizeInsertFORMAT="LINESPECIFIC"void Insert(TGadget& gadget, TPlacement = After, TGadget* sibling = 0);REMAP='BodyNoLead'Overrides ROLE='italic'TGadget's ROLE='italic'Insert function and tells the button not to notch its corners.See alsoREMAP='BodyNoLead'TGadgetWindow::InsertLayoutSessionFORMAT="LINESPECIFIC"void LayoutSession( );REMAP='BodyNoLead'Called when a change occurs in the size of the margins of the toolbox or size of the gadgets, ROLE='italic'LayoutSession gets the desired size and moves the window to adjust to the desired change in size.SetDirectionFORMAT="LINESPECIFIC"virtual void SetDirection(TTileDirection direction);REMAP='BodyNoLead'Sets the direction of the tilingname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'either horizontal or vertical.Protected data membersNumColumnsFORMAT="LINESPECIFIC"int NumColumns;REMAP='BodyNoLead'Contains the number of columns for the toolbox.NumRowsFORMAT="LINESPECIFIC"int NumRows;REMAP='BodyNoLead'Contains the number of rows for the toolbox.Protected member functionTileGadgetsFORMAT="LINESPECIFIC"TRect TileGadgets;REMAP='BodyNoLead'Tiles the gadgets in the direction requested (horizontal or vertical). Derived classes can adjust the spacing between gadgets.See alsoREMAP='BodyNoLead'TGadgetWindow::TileGadgetTTransferDirection enumMOREINFO="NONE"window.hFORMAT="LINESPECIFIC"enum TTransferDirection {tdGetData, tdSetData, tdSizeData};REMAP='BodyNoLead'ROLE='italic'TTransferDirection enum describes the following constants, which the transfer function uses to determine how to transfer data to and from the transfer buffer.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tdGetDataCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Retrieve data from the class.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tdSetDataCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Send data to the class.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tdSizeDataCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Return the size of data transferred by the class.See alsoREMAP='BodyNoLead'TWindow::Transfer, TWindow::TransferDataTUIHandle classMOREINFO="NONE"uihandle .hREMAP='Body'ROLE='italic'TUIHandle manages and draws various kinds of UI handles, including hatched border handles, and resizing grapples (small squares that appear along the edges) on a rectangle. You can use this class to create a hatched border that encloses various kinds of drawing objects you want to manipulate. REMAP='Body'With the help of this class, you can create an application that lets you: MARK='bullet'REMAP='Bullet1'Resize the shape of the rectangle by pointing to and grabbing one of the grapples on the border. REMAP='Bullet1'Move the entire rectangle by clicking in the middle of the rectangle. REMAP='Body'Although, by default, a hatched border with eight grapples is created, you can vary the existence of the grapples as well as the pattern of the border. You can also draw a dashed frame enclosing a rectangle or draw a rectangle filled with hatch marks. ROLE='italic'THatch8x8Brush contains brushes you can use to draw the hatched border.REMAP='Body'ROLE='italic'TUIHandle uses the ROLE='bold'enumROLE='italic' TWhere to return the area where the user points and clicks the mouse (referred to as a ROLE='italic'hitROLE='italic' area). REMAP='Body'The following code from SAMPCONT.CPP sets up a hatched border and UI grapples for an OLE2 container application.FORMAT="LINESPECIFIC"// Do the default rectangle painting.
TRect r // Insert your rectangle drawing code here.
// Draw 8 grapples with a border on top of the object.
TUIHandle handle(r, TUIHandle::HandlesIn|TUIHandle::Grapples
|TUIHandle::HatchBorder, 5);
handle.Paint(dc);
// Insert your code here....
// Draw a hatched border.
TUIHandle handle(r, TUIHandle::HatchBorder, 5);
handle.Paint(dc);See also REMAP='BodyNoLead'THatch8x8BrushType definitionsTStyleFORMAT="LINESPECIFIC"enum TStyle{HandlesIn, HandlesOut, Framed, DashFramed, Grapples, HatchBorder, HatchRect, InsideSpecial};REMAP='BodyNoLead'Enumerates the style of the border around the rectangle with combinations of the following styles:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='157*'COLNAME='C2' COLWIDTH='190*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Select one of the following styles:COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HandlesInCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Draw handles inside the rectangleCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HandlesOutCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Draw handles outside the rectangleCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Select zero or one of the following styles:COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FramedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Draw a solid frame around the rectangleCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DashFramedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Draw a dashed frame around the rectangleCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GrapplesCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Draw eight grapples for resizingCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Select zero or one of the following styles:COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HatchBorderCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Draw a hatched handle for moving the borderCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HatchRectCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Draw the entire rectangle filled in with hatch marksCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'InsideSpecialCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Treat the inside hit area in a special wayREMAP='Body'If a hatched border with grapples is drawn inside a rectangle, it sits within the borders of the outer frame of the rectangle. If a hatched border with grapples is drawn outside the rectangle, it is drawn outside the boundary of the rectangle's frame. In the latter case, the function ROLE='italic'GetBoundingRect returns a larger rectangle.TWhereFORMAT="LINESPECIFIC"enum TWhere {TopLeft, TopCenter, TopRight, MidLeft, MidCenter, MidRight, BottomLeft, BottomCenter, BottomRight, Outside, Inside};REMAP='BodyNoLead'ROLE='italic'TWhere indicates which one of the grapples or handle was hit. ROLE='italic'TWherecan contain one of the following values:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TopLeft COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The grapple in the top left corner of the border was hit.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TopCenter COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The grapple in the top center of the border was hit.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TopRightCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The grapple in the top left right corner of the border was hit.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MidLeftCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The grapple in the middle of the left border was hit.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MidCenterCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The area in the middle of the rectangle was hit. This indicates that either the hatched frame was hit or inside, non-special area was hit.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MidRightCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The grapple in the middle of the right border was hit.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BottomLeftCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The grapple in the left corner of the bottom border was hit.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BottomCenterCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The grapple in the center of the bottom border was hit.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BottomRightCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The grapple in the right corner of the bottom border was hit.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OutsideCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The hit area is completely outside the object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'InsideCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The hit area for the grapple is inside the object and ROLE='italic'InsideSpecial is set.REMAP='Body'The ROLE='italic'InsideSpecial designation refers to the area inside the rectangle when the hit area needs to be treated specially because it might contain text or graphics, for example. Normally, if the area inside the rectangle is hit, it means that user wants to move the rectangle. However, if there is text inside the rectangle, the user might click on this area in order to enter text. This latter situation is referred to as an ROLE='italic'insideROLE='italic' special case.REMAP='Body'The hit area (Where) can be converted to a row and a column by using the following equations:REMAP='.Indent1' ROLE='indent1'Row = Where / 3 REMAP='.Indent1' ROLE='indent1'Column = Where mod 3REMAP='Body'The value of ROLE='italic'Where ranges from 0 (ROLE='italic'TopLeft) to 8 (ROLE='italic'BottomRight) and corresponds to the following areas of a rectangle:FILEREF='uhand_2.gif'REMAP='Body'You can then use these values to calculate the movement of the object and to resize the object.Public constructorConstructorFORMAT="LINESPECIFIC"TUIHandle(const TRect& frame, uint style = HandlesIn|Grapples|HatchBorder, int thickness = 5);REMAP='BodyNoLead'Constructs a ROLE='BOLD' ROLE='italic'TUIHandle object for the specified frame, with eight grapples drawn in a hatched border and a default thickness of 5 pixels drawn to the inside.Public member functionsGetBoundingRectFORMAT="LINESPECIFIC"GetBoundingRect( )const;REMAP='BodyNoLead'ROLE='italic'GetBoundingRect returns a rectangle with the size adjusted according to the thickness. For example, if the handles are outside the rectangle, ROLE='italic'GetboundingRect returns a larger rectangle. The enum . ROLE='italic'TStyle defines the positions of the handles, that is, whether the handles are defined as ROLE='italic'HandlesIn or ROLE='italic'HandlesOut.GetCursorIdFORMAT="LINESPECIFIC"static uint16 GetCursorId(TWhere where);REMAP='BodyNoLead'Returns the lD of a standard cursor that's appropriate for use over the location specified in the ROLE='italic'where parameter.HitTestFORMAT="LINESPECIFIC"TWhere HitTest(const TPoint& point)const;REMAP='BodyNoLead'Compares a given point (ROLE='italic'point) to various parts of the rectangle. If the hit was outside the rectangle, ROLE='italic'HitTest returns ROLE='italic'Outside. If the hatched border handle of the rectangle was hit, returns ROLE='italic'MidCenter (inside). For any other hits, ROLE='italic'HitTest returns the location of the grapple that was hit. The enum ROLE='italic'TWhere defines the possible hit areas.MoveFORMAT="LINESPECIFIC"void Move(int dx, int dy);REMAP='BodyNoLead'Moves the rectangle relative to the values specified in ROLE='italic'dx and ROLE='italic'dy.See alsoREMAP='BodyNoLead'TUIHandle::MoveToMoveToFORMAT="LINESPECIFIC"void MoveTo(int x, int y);REMAP='BodyNoLead'Moves the rectangle to the given ROLE='italic'x and ROLE='italic'y coordinates.See alsoREMAP='BodyNoLead'TUIHandle::MovePaintFORMAT="LINESPECIFIC"void Paint(TDC& dc) const;REMAP='BodyNoLead'Paints the ROLE='italic'TUIHandle object onto the specified device context, ROLE='italic'dc.SizeFORMAT="LINESPECIFIC"void Size(int w, int h);REMAP='BodyNoLead'Sets the size of the rectangle according to the measurements specified in ROLE='italic'w, the width, and ROLE='BOLD' ROLE='italic'h, the height. TValidator classMOREINFO="NONE"validate.hREMAP='Body'A streamable class, ROLE='italic'TValidator defines an abstract data validation object. Although you will never actually create an instance of ROLE='italic'TValidator, it provides the abstract functions for the other data validation objects.REMAP='Body'The VALIDATE.CPP sample program on your distribution disk derives ROLE='italic'TValidateApp from ROLE='italic'TApplication in the following manner:FORMAT="LINESPECIFIC"class TValidateApp : public TApplication {
public:
TValidateApp( ) : TApplication("ValidateApp") {}
void InitMainWindow( ) {
MainWindow = new TTestWindow(0, "Validate Dialog Input");
}REMAP='Body'and displays am a message box if the user enters an invalid employee ID.REMAP='Body'Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TValidator( );REMAP='BodyNoLead'Constructs an abstract validator object and sets ROLE='italic'Options fields to 0.DestructorFORMAT="LINESPECIFIC"virtual ~TValidator( );REMAP='BodyNoLead'Destroys an abstract validator object.Public member functionsErrorFORMAT="LINESPECIFIC"virtual void Error( );REMAP='BodyNoLead'ROLE='italic'Error is an abstract function called by ROLE='italic'Valid when it detects that the user has entered invalid information. By default, ROLE='italic'TValidator::Error does nothing, but derived classes can override ROLE='italic'Error to provide feedback to the user.HasOptionFORMAT="LINESPECIFIC"bool HasOption(int option);REMAP='BodyNoLead'Gets the ROLE='italic'Options bits. Returns ROLE='bold'true if a specified option is set.See alsoREMAP='BodyNoLead'TValidator::Options, TValidatorOptions enumIsValidFORMAT="LINESPECIFIC"virtual bool IsValid(const char far* str);REMAP='BodyNoLead'By default, ROLE='italic'TValidator::IsValid returns ROLE='bold'true. Derived validator types can override ROLE='italic'IsValid to validate data for a completed edit control. If an edit control has an associated validator object, its ROLE='italic'Valid method calls the validator object's ROLE='italic'Valid method, which in turn calls ROLE='italic'IsValid to determine whether the contents of the edit control are valid.See alsoREMAP='BodyNoLead'TValidator::ValidIsValidInputFORMAT="LINESPECIFIC"virtual bool IsValidInput(char far* str, bool suppressFill);REMAP='BodyNoLead'If an edit control has an associated validator object, it calls ROLE='italic'IsValidInput after processing each keyboard event. This gives validators such as filter validators an opportunity to catch errors before the user fills the entire item or screen.REMAP='Body'By default, ROLE='italic'IsValidInput returns ROLE='bold'true. Derived data validators can override ROLE='italic'IsValidInput to validate data as the user types it, returning ROLE='bold'true if ROLE='italic'str holds valid data and ROLE='bold'false otherwise.REMAP='Body'ROLE='italic'str is the current input string. ROLE='italic'suppressFill determines whether the validator should automatically format the string before validating it. If ROLE='italic'suppressFill is ROLE='bold'true, validation takes place on the unmodified string ROLE='italic'str. If ROLE='italic'suppressFill is ROLE='bold'false, the validator should apply any filling or padding before validating data. Of the standard validator objects, only ROLE='italic'TPXPictureValidator checks ROLE='italic'suppressFill.REMAP='Body'ROLE='italic'IsValidInput can modify the contents of the input string; for example, it can force characters to uppercase or insert literal characters from a format picture. ROLE='italic'IsValidInput should not, however, delete invalid characters from the string. By returning ROLE='bold'false, ROLE='italic'IsValidInput indicates that the edit control should erase the incorrect characters.SetOptionFORMAT="LINESPECIFIC"void SetOption(int option);REMAP='BodyNoLead'Sets the bits for the ROLE='italic'Options data member.See alsoREMAP='BodyNoLead'TValidator::Options, TValidatorOptions enumTransferFORMAT="LINESPECIFIC"virtual uint Transfer(char far* str, void* buffer, TTransferDirection direction);REMAP='BodyNoLead'Allows a validator to set and read the values of its associated edit control. This is primarily useful for validators that check non-string data, such as numeric values. For example, ROLE='italic'TRangeValidator uses ROLE='italic'Transfer to read and write values instead of transferring an entire string.REMAP='Body'By default, edit controls with validators give the validator the first chance to respond to ROLE='italic'DataSize,ROLE='BOLD' ROLE='italic'GetData, and ROLE='italic'SetData by calling the validator's ROLE='italic'Transfer method. If ROLE='italic'Transfer returns anything other than 0, it indicates to the edit control that it has handled the appropriate transfer. The default action of ROLE='italic'TValidator:Transfer is to always return 0. If you want the validator to transfer data, you must override its ROLE='italic'Transfer method.REMAP='Body'ROLE='italic'Transfer's first two parameters are the associated edit control's text string and the ROLE='italic'tdGetData or ROLE='italic'tdSetData data record. Depending on the value of ROLE='italic'direction, ROLE='italic'Transfer can set str from buffer or read the data from ROLE='italic'str into ROLE='italic'buffer. The return value is always the number of bytes transferred.REMAP='Body'If direction is ROLE='italic'tdSizeData, ROLE='italic'Transfer doesn't change either ROLE='italic'str or ROLE='italic'buffer; it just returns the data size. If ROLE='italic'direction is ROLE='italic'tdSetData, ROLE='italic'Transfer reads the appropriate number of bytes from ROLE='italic'buffer, converts them into the proper string form, and sets them into ROLE='italic'str, returning the number of bytes read. If ROLE='italic'direction is ROLE='italic'tdGetData, ROLE='italic'Transfer converts ROLE='italic'str into the appropriate data type and writes the value into ROLE='italic'buffer, returning the number of bytes written.See alsoREMAP='BodyNoLead'TTransferDirection enumUnsetOptionFORMAT="LINESPECIFIC"void UnsetOption(int option);REMAP='BodyNoLead'Unsets the bits specified in the ROLE='italic'Options data member.See alsoREMAP='BodyNoLead'TValidator::Options, TValidatorOptions enumValidFORMAT="LINESPECIFIC"bool Valid(const char far* str);REMAP='BodyNoLead'Returns true if ROLE='italic'IsValid returns ROLE='bold'true. Otherwise, calls ROLE='italic'Error and returns ROLE='bold'false. A validator's ROLE='italic'Valid method is called by the ROLE='italic'Valid method of its associated edit control.REMAP='Body'Edit controls with associated validator objects call the validator's ROLE='italic'Valid method under two conditions. The first condition is when the edit control's ROLE='italic'ofValidate option is set and the edit control calls ROLE='italic'Valid when it loses focus. The second condition is when the dialog box that contains the edit control calls ROLE='italic'Valid for all its controls, usually because the user requested to close the dialog box or to accept an entry screen.Protected data membersOptionsFORMAT="LINESPECIFIC"uint16 Options;REMAP='BodyNoLead'A bitmap member used to control options for various descendants of ROLE='italic'TValidator. By default, the ROLE='italic'TValidator constructor clears all the bits in ROLE='italic'Options.See alsoREMAP='BodyNoLead'TVAlidatorOptions enum, TValidator::SetOption, TValidator::UnsetOptionType definitionsFORMAT="LINESPECIFIC"enum TValidatorOptions {voFill, voTransfer, voOnAppend, voReserved };REMAP='BodyNoLead'The ROLE='italic'TValidatorOptions enum constants represent bits in the bitmapped Options word in validator objects.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='62*'COLNAME='C2' COLWIDTH='312*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'voFillCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Used by picture validators to indicate whether to fill in literal characters as the user types.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'voTransferCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The validator handles data transfer for the input line. Currently only used by range validators.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'voOnAppendCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Used by picture validators to determine how to interact with edit controls.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'voReservedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The bits in this mask are reserved.TValidator::TXValidator classMOREINFO="NONE"validate.hREMAP='Body'A nested class, ROLE='italic'TXValidator describes an exception that results from an invalid validator object. That is, if a validator expression is not valid, this exception is thrown.Public constructorConstructorFORMAT="LINESPECIFIC"TXValidator(uint resId = IDS_VALIDATORSYNTAX);REMAP='BodyNoLead'Constructs a ROLE='italic'TXValidator object, setting the resource ID to IDS_VALIDATORSYNTAX string resource. TVbxControl classMOREINFO="NONE"vbxctl.hREMAP='Body'Derived from ROLE='italic'TControl,ROLE='BOLD' ROLE='italic'TVbxControl provides the interface for Visual Basic (VBX) controls. You can use this class to get or set the properties of VBX controls. Under certain conditions, you can also use additional methods for processing controls.REMAP='Body'You can manipulate the control's properties using either an index value or a name. Several overloaded ROLE='italic'GetProp functions are provided so that you can access different types of properties. Similarly, several overloaded ROLE='italic'SetProp functions let you set the properties of controls using either the name of the VBX control or the index value. Consult the documentation for your VBX controls to find the name that corresponds to the property you want to manipulate.REMAP='Body'The VBXCTLX.CPP sample program on your distribution disks displays several VBX controls.REMAP='Body'ROLE='italic'TVbxControl provides event-handling functions that process requests to compare, delete, draw, or measure VBX controls. If you want the ROLE='italic'TVbx control object to process additional VBX events, you can derive a class from ROLE='italic'TVbxControl and add a response table that has entries for the events you want processed. For information about creating response tables and handling VBX messages, see ROLE='italic'TVbxEventHandler.Public constructors and destructorConstructorsFORMAT="LINESPECIFIC"TVbxControl(TWindow* parent, int id, const char far* vbxName, const char far* vbxClass, const char far* title, int x, int y, int w, int h, long initLen = 0, void far* initData = 0, TModule* module = 0);REMAP='BodyNoLead'Constructs a VBX control where ROLE='italic'parent points to the parent window, id is the control's ID, ROLE='italic'vbxName is the name of the file containing the VBX control, ROLE='italic'vbxClass is the VBX class name, ROLE='italic'title is the control's caption, ROLE='italic'x and ROLE='italic'y are the coordinates in the parent window where the controls are to be placed, ROLE='italic'w and ROLE='italic'h are the width and height of the control, and module is the library resource ID for the control.FORMAT="LINESPECIFIC"TVbxControl(TWindow* parent, int resourceId, TModule* module = 0);REMAP='BodyNoLead'If a VBX control is part of a dialog resource, its ID can be used to construct a corresponding (or alias) ObjectWindows object. You can use this constructor if a VBX control has already been defined in the application's resource file. ROLE='italic'resourceId is the resource ID of the VBX control in the resource file.DestructorFORMAT="LINESPECIFIC"~TVbxControl( );REMAP='BodyNoLead'Destroys the ROLE='italic'TVbxControl object.Public member functionsAddItemFORMAT="LINESPECIFIC"bool AddItem(int index, const char far* item);REMAP='BodyNoLead'Adds an item (ROLE='italic'item) to the list of VBX control items at the specified index (ROLE='italic'index). Returns nonzero if successful.DragFORMAT="LINESPECIFIC"bool Drag(int action);REMAP='BodyNoLead'Controls the drag and drop state of the VBX control according to the value of ROLE='italic'action, which can be 0 (cancel a drag operation), 1 (begin dragging a control), or 2 (end dragging a control).GetEventIndexFORMAT="LINESPECIFIC"int GetEventIndex(const char far* name);REMAP='BodyNoLead'Returns the index of the event associated with the name of the event passed in ROLE='italic'name. Returns -1 if an error occurs.GetEventNameFORMAT="LINESPECIFIC"const char far* GetEventName(int eventindex);REMAP='BodyNoLead'Returns a string containing the name of an event associated with the integer event index number (ROLE='italic'eventindex). Returns 0 if an error occurs.GetHCTLFORMAT="LINESPECIFIC"HCTL GetHCTL( );REMAP='BodyNoLead'Returns a handle to a VBX control associated with this ROLE='italic'TVbxControl object.GetNumEventsFORMAT="LINESPECIFIC"int GetNumEvents( );REMAP='BodyNoLead'Returns the total number of events associated with the VBX control.GetNumPropsFORMAT="LINESPECIFIC"int GetNumProps( );REMAP='BodyNoLead'Returns the total number of properties associated with the VBX control.GetPropFORMAT="LINESPECIFIC"bool GetProp(int propIndex, int& value, int arrayIndex = -1);REMAP='BodyNoLead'Gets an integer property value. An overloaded function, ROLE='italic'GetProp gets a VBX control property using an index value. ROLE='italic'propIndex is the index value of the property whose value you want to get. ROLE='italic'value is a reference to the variable that will receive the property values. ROLE='italic'arrayIndex, an optional argument, specifies the position of the value in an array property if the property is an array type. If the property isn't an array type, ROLE='italic'arrayIndex defaults to -1. See the third-party reference guide for your VBX controls to determine a property's data type. ROLE='italic'GetProp returns nonzero if successful. To get the property by specifying the property index, use one of the following six ROLE='italic'GetProp functions.FORMAT="LINESPECIFIC"bool GetProp(int propIndex, long& value, int arrayIndex = -1);REMAP='BodyNoLead'Gets a ROLE='italic'long property value.FORMAT="LINESPECIFIC"bool GetProp(int propIndex, ENUM& value, int arrayIndex=-1);REMAP='BodyNoLead'Gets an enumerated property value. For example, a list of options associated with a font style might be defined as an enumerated type.FORMAT="LINESPECIFIC"bool GetProp(int propIndex, HPIC& value, int arrayIndex=-1);REMAP='BodyNoLead'Gets a picture (ROLE='italic'value). HPIC is a handle to the picture.FORMAT="LINESPECIFIC"bool GetProp(int propIndex, float& value, int arrayIndex = -1);REMAP='BodyNoLead'Gets a floating-point property value.FORMAT="LINESPECIFIC"bool GetProp(int propIndex, string& value, int arrayIndex = -1);REMAP='BodyNoLead'Gets a string property value.FORMAT="LINESPECIFIC"bool GetProp(int propIndex, COLORREF value, int arrayIndex = -1);REMAP='BodyNoLead'Gets a color property value.FORMAT="LINESPECIFIC"bool GetProp(const char far* name, int& value, int arrayIndex = -1);REMAP='BodyNoLead'Returns an integer data value. An overloaded function, ROLE='italic'GetProp gets a VBX control property. ROLE='italic'propIndex is the index value of the property whose value you want to get. ROLE='italic'value is a reference to the variable that will receive the property value. ROLE='italic'arrayIndex, an optional argument, specifies the position of the value in an array property if the property is an array type. If the property isn't an array type, ROLE='italic'arrayIndex defaults to -1. GetProp returns nonzero if successful. To get the property by specifying the name of the property, use one of the following five ROLE='italic'GetProp functions.FORMAT="LINESPECIFIC"bool GetProp(const char far* name, long& value, int arrayIndex = -1);REMAP='BodyNoLead'Gets a ROLE='bold'long property value.FORMAT="LINESPECIFIC"bool GetProp(const char far* name, float& value, int arrayIndex = -1);REMAP='BodyNoLead'Gets a floating-point property value.FORMAT="LINESPECIFIC"bool GetProp(const char far* name, ENUM& value, int arrayIndex=-1);REMAP='BodyNoLead'Gets an enumerated property value.FORMAT="LINESPECIFIC"bool Getprop(const char far* name, HPIC& value, int arrayIndex=-1);REMAP='BodyNoLead'Gets a picture (ROLE='italic'value) property value. HPIC is a handle to the picture.FORMAT="LINESPECIFIC"bool GetProp(const char far* name, string& value, int arrayIndex = -1);REMAP='BodyNoLead'Gets a string property value.FORMAT="LINESPECIFIC"bool GetProp(const char far* name, COLORREF value, int arrayIndex = -1);REMAP='BodyNoLead'Gets a string color property value.See alsoREMAP='BodyNoLead'TVbxControl::SetPropGetPropIndexFORMAT="LINESPECIFIC"int GetPropIndex(const char far* name);REMAP='BodyNoLead'Gets the integer index value for the property name passed in ROLE='italic'name. Returns -1 if an error occurs. This usually indicates that the property name passed in ROLE='italic'name couldn't be located.GetPropNameFORMAT="LINESPECIFIC"const char far* GetPropName(int propIndex);REMAP='BodyNoLead'Gets the name for the property index passed in ROLE='italic'index. Returns 0 if an error occurs.GetPropTypeFORMAT="LINESPECIFIC"int GetPropType(int propIndex);FORMAT="LINESPECIFIC"int GetPropType(char far* name);REMAP='BodyNoLead'Form 1 gets the type for the property specified by ROLE='italic'index. Form 2 gets the property string type specified by ROLE='italic'name. Returns 0 if an error occurs. The following table lists the names of the property types and their corresponding C++ data types.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Property typeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'C++ typeVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PTYPE_CSTRINGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HSZCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PTYPE_SHORTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'shortCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PTYPE_LONGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int32COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PTYPE_BOOLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'boolCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PTYPE_COLORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'uint32 or COLORREFCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PTYPE_ENUMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'uint8 or ENUMCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PTYPE_REALCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'floatCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PTYPE_XPOSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int32 (Twips)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PTYPE_XSIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int32(Twips)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PTYPE_YPOSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int32 (Twips)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PTYPE_YSIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int32 (Twips)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PTYPE_PICTURECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HPICCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PTYPE_BSTRINGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HLSTRIsArrayPropFORMAT="LINESPECIFIC"bool IsArrayProp(int propIndex);FORMAT="LINESPECIFIC"bool IsArrayProp(char far* name);REMAP='BodyNoLead'Returns true if the property specified by ROLE='italic'index (Form 1) or ROLE='italic'name (Form 2) is an array property.MethodFORMAT="LINESPECIFIC"bool Method(int method, long far* args);REMAP='BodyNoLead'Used for invoking customized methods, ROLE='italic'Method returns true if a VBX control can respond to the specified method (ROLE='italic'method).MoveFORMAT="LINESPECIFIC"bool Move(long x, long y, long w, long h);REMAP='BodyNoLead'Moves a VBX control to the coordinates specified in ROLE='italic'x and ROLE='italic'y, which designate the upper left corner screen coordinates. Resizes the VBX control to ROLE='italic'wROLE='italic' twips wide by ROLE='italic'hROLE='italic' twips high. Returns nonzero if successful.RefreshFORMAT="LINESPECIFIC"bool Refresh( );REMAP='BodyNoLead'Repaints the control's display area.RemoveItemFORMAT="LINESPECIFIC"bool RemoveItem(int index);REMAP='BodyNoLead'Removes an item (specified by ROLE='italic'index). The item could be removed from a list box, a combo box, or a database, for example.SetPropFORMAT="LINESPECIFIC"bool SetProp(int propIndex, int value, int arrayIndex = -1);REMAP='BodyNoLead'Sets the property to an integer value. An overloaded function, ROLE='italic'SetProp sets a VBX control property. ROLE='italic'propIndex is the index number of the property whose value you want to set. ROLE='italic'value specifies the new value for the property. ROLE='italic'arrayIndex specifies the position of the value in an array property if the property is an array type. If the property isn't an array type, ROLE='italic'arrayIndex defaults to -1. To set the property by passing the property's index value, use one of the following six ROLE='italic'SetProp functions.FORMAT="LINESPECIFIC"bool SetProp(int propIndex, long value, int arrayIndex = -1);REMAP='BodyNoLead'Sets the property to a ROLE='bold'long value.FORMAT="LINESPECIFIC"bool SetProp(int propIndex, ENUM value, int arrayIndex=-1);REMAP='BodyNoLead'Sets the property to an enumerated value.FORMAT="LINESPECIFIC"bool SetProp(int propIndex, HPIC value, int arrayIndex=-1);REMAP='BodyNoLead'Sets a picture to an HPIC, or picture, value.FORMAT="LINESPECIFIC"bool SetProp(int propIndex, float value, int arrayIndex = -1);REMAP='BodyNoLead'Sets the property to a floating-point value.FORMAT="LINESPECIFIC"bool SetProp(int propIndex, const string& value, int arrayIndex = -1);REMAP='BodyNoLead'Sets the property to a string value.FORMAT="LINESPECIFIC"bool SetProp(int propIndex, const char far* value, int arrayIndex = -1);REMAP='BodyNoLead'Sets the property to a character string value.FORMAT="LINESPECIFIC"bool SetProp(int propIndex, COLORREF value, int arrayIndex = -1);REMAP='BodyNoLead'Sets the property to a color value.FORMAT="LINESPECIFIC"bool SetProp(const char far* name, int value, int arrayIndex = -1);REMAP='BodyNoLead'Sets the property to an integer value. An overloaded function, ROLE='italic'SetProp sets a VBX control property. ROLE='italic'arrayIndex specifies the position of the value in an array property if the property is an array type. If the property isn't an array type, ROLE='italic'arrayIndex defaults to -1. To set the property by using the property's name, use one of the following six ROLE='italic'SetProp functions.FORMAT="LINESPECIFIC"bool SetProp(const char far* name, long value, int arrayIndex = -1);REMAP='BodyNoLead'Sets the property to a ROLE='italic'long value.FORMAT="LINESPECIFIC"bool SetProp(const char far* name, ENUM value, int arrayIndex=-1);REMAP='BodyNoLead'Sets the property to an enumerated value.FORMAT="LINESPECIFIC"bool SetProp(const char far* name, HPIC value, int arrayIndex = -1);REMAP='BodyNoLead'Sets the picture property to an HPIC, or picture, value.FORMAT="LINESPECIFIC"bool SetProp(const char far* name, float value, int arrayIndex = -1);REMAP='BodyNoLead'Sets the property to a floating-point value.FORMAT="LINESPECIFIC"bool SetProp(const char far* name, const string& value, int arrayIndex = -1);REMAP='BodyNoLead'Sets the property to a string value.FORMAT="LINESPECIFIC"bool SetProp(const char far* name, const char far* value, int arrayIndex = -1);REMAP='BodyNoLead'Sets the property to a character string value.FORMAT="LINESPECIFIC"bool SetProp(const char far* name, COLORREF value, int arrayIndex = -1);REMAP='BodyNoLead'Sets the property to a color string value.See alsoREMAP='BodyNoLead'TVbxControl::GetPropSetUpWindowFORMAT="LINESPECIFIC"void SetupWindow( );REMAP='BodyNoLead'A VBX control has an HWND plus a VBX handle. Usually, the VBX control handle is created first. However, if the window has already been created, you can use this function to extract the VBX control handle.Protected member functionsGetClassNameFORMAT="LINESPECIFIC"char far* GetClassName( );REMAP='BodyNoLead'Gets the name of the VBX window class.GetVBXPropertyFORMAT="LINESPECIFIC"bool GetVBXProperty(int propIndex, void far* value, int arrayIndex = -1);REMAP='BodyNoLead'Returns nonzero if the specified property exists. ROLE='italic'propIndex specifies the index value of the integer property whose value you want to get. ROLE='italic'value points to the variable where the value will be stored.PerformCreateFORMAT="LINESPECIFIC"void PerformCreate(int menuOrId);REMAP='BodyNoLead'Creates a new control window and associates the VBX control with the window. Establishes the control ID, the VBX control name and class, and the window caption. Sets ROLE='italic'Attr.ROLE='italic'style to the window style of the control, ROLE='italic'Attr.ROLE='italic'X and ROLE='italic'Attr.ROLE='italic'Y to the upper left screen coordinates of the control, and ROLE='italic'Attr.ROLE='italic'W and ROLE='italic'Attr.ROLE='italic'H to the width and height of the control.SetVBXPropertyFORMAT="LINESPECIFIC"bool SetVBXProperty(int propIndex, int32 value, int arrayIndex=-1);REMAP='BodyNoLead'Returns nonzero if the specified property value is set, or 0 if unsuccessful. ROLE='italic'propindex is the index number of the property whose value you want to set. ROLE='italic'value is the value to be stored. An optional argument, ROLE='italic'arrayIndex, which is -1 by default, specifies the index value in an array of values of the property to be set.Response table entriesREMAP='Body'The ROLE='italic'TVbxControl class has no response table entries.TVbxEventHandler classMOREINFO="NONE"vbxctl.hREMAP='Body'Derived from ROLE='italic'TEventHandler,ROLE='BOLD' ROLE='italic'TVbxEventHandler handles events from VBX controls. Although you will never need to modify this class, ROLE='italic'TVbxEventHandler needs to be mixed in with your window class so that it can receive events from VBX controls. For example,FORMAT="LINESPECIFIC"class TMyWindow:public TWindow, public TVbxEventHandler
{
// Include class definition here.
}REMAP='Body'When a VBX control fires an event (sends an event message), the following sequence of events occurs:NUMERATION='ARABIC' CONTINUATION="RESTARTS" INHERITNUM="IGNORE"REMAP='.NumList1'The VBX Control sends a WM_VBXFIREEVENT message to ROLE='italic'TMyWindow.REMAP='.NumList1'ROLE='italic'TMyWindow's ROLE='italic'TVbxEventHandler finds a WM_VBXFIREEVENT message in its response table and calls ROLE='italic'EvVbxDispatch.REMAP='.NumList1'If a child window is present, ROLE='italic'EvVbxDispatch dispatches the event to the child.REMAP='.NumList1'If there is an event-handling function in the child window's response table, the child window handles the event.REMAP='.NumList1'If there is no child window, or the child window doesn't handle the event, ROLE='italic'EvVbxDispatch dispatches the event to ROLE='italic'TMyWindow's response table.REMAP='Body'In other words, when a VBX control sends a WM_VBXFIREEVENT message, the parent window's ROLE='italic'TVbxEventHandler catches this message first, converts it into a form understood by a window's response table, and attempts to send the converted message to the child window. If there is no child window or if the child window doesn't handle the message, ROLE='italic'TVbxEventHandler sends the converted message to the parent window. When the parent window receives the message, it calls the handler function that corresponds to the message.REMAP='Body'Two response table macros, EV_VBXEVENTNAME and EV_VBXEVENTINDEX, map VBX events to handler functions. Of the two macros, EV_VBXEVENTNAME is more commonly used. EV_VBXEVENTINDEX is intended for use with code generators, which can determine the event index values for a VBX control. Both macros call an event handler function and point to the VBXEVENT structure. A typical EV_VBXEVENTNAME response table entry might beFORMAT="LINESPECIFIC"EV_VBXEVENTNAME(IDC_BUTTON1, "MouseMove", EvMouseMove);REMAP='Body'where IDC_BUTTON1 is the event ID, "EvMouseMove" is the event name, and ROLE='italic'EvMouseMove is the handler function.REMAP='Body'The ROLE='italic'lparam of a WM_VBX FIREEVENT message points to a VBXEVENT structure, which holds information about the event and the control that generated the event. The VBXEVENT structure contains the following members:FORMAT="LINESPECIFIC"typedef struct VBXEVENT {
HCTL Control;
HWND Window;
int ID;
int EventIndex;
LPCSTR EventName;
int NumParams;
LPVOID ParamList;
} VBXEVENT;REMAP='Body'whereMARK='bullet'REMAP='Bullet1'ROLE='italic'Control is a handle to the VBX control sending the message.REMAP='Bullet1'ROLE='italic'Window is the handle of the VBX control window.REMAP='Bullet1'ROLE='italic'ID is the ID of the VBX control.REMAP='Bullet1'ROLE='italic'EventIndex is the event index.REMAP='Bullet1'ROLE='italic'EventName is the name of the event.REMAP='Bullet1'ROLE='italic'NumParams holds the number of event arguments.REMAP='Bullet1'ROLE='italic'ParamList is a pointer to a list of pointers to the event's arguments. The ROLE='italic'ParamList data member provides access to the actual arguments of the event.REMAP='Body'To handle VBX events, your program uses an event-handling function. In the following example, ROLE='italic'EvMouseMove is the name of the handler function, which passes a pointer to the VBXEVENT event structure. VBX_EVENTARGNUM is the macro that takes ROLE='italic'event, type, and an index number as its parameters. ROLE='italic'event references the VBXEVENT structure, ROLE='bold'short is the event argument type, and 0 and 1 are the index numbers of the argument. The argument types and indexes can be found in the documentation for the VBX control.FORMAT="LINESPECIFIC"void EvMouseMove(VBXEVENT FAR* event)
{
short X = VBX_EVENTARGNUM(event, short, 0);
short Y = VBX_EVENTARGNUM(event, short, 1);
}REMAP='Body'Because VBX controls were originally designed to be used with Visual Basic, their event arguments are documented in terms of Basic data types. The following table lists the Basic types, their C++ equivalents, and macros.COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='46*'COLNAME='C2' COLWIDTH='46*'COLNAME='C3' COLWIDTH='174*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'BasicCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'C++COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'MacroVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BooleanCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'shortCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'VBX_EVENTARGNUM(ROLE='italic'event, short, index)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ControlCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HCTLCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'VBX_EVENTARGNUM(ROLE='italic'event, HCTL, index)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DoubleCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'doubleCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'VBX_EVENTARGNUM(ROLE='italic'event, double, index)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EnumCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'shortCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'VBX_EVENTARGNUM(ROLE='italic'event, ROLE='italic'short, ROLE='italic'index)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IntegerCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'shortCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'VBX_EVENTARGNUM(ROLE='italic'event, ROLE='italic'short, ROLE='italic'index)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LongCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'longCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'VBX_EVENTARGNUM(ROLE='italic'event, ROLE='italic'long, ROLE='italic'index)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SingleCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'floatCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'VBX_EVENTARGNUM(ROLE='italic'event, ROLE='italic'float, ROLE='italic'index)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'StringCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HLSTRCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'VBX_EVENTARGSTR(ROLE='italic'event, ROLE='italic'index)REMAP='Body'The following table lists the standard VBX events and corresponding arguments that the Borland C++ VBX emulation library supports.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='66*'COLNAME='C2' COLWIDTH='236*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'EventCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'ArgumentsVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ClickCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'NoneCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DblClickCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'NoneCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DragDropCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Source as Control, X as Integer, Y as IntegerCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DragOverCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Source as Control, X as Integer, Y as Integer, State as IntegerCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GotFocus COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'NoneCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'KeyDownCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Key as Integer, Shift as IntegerCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'KeyPressCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Key as Integer, Shift as IntegerCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'KeyUpCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Key as Integer, Shift as IntegerCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LostFocusCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'NoneCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MouseDownCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'X as Integer, Y as IntegerCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MouseMoveCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'X as Integer, Y as Integer, Shift as Integer, Button as IntegerCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MouseUpCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'X as Integer, Y as Integer, Shift as Integer, Button as IntegerREMAP='Body'For the DragOver event, the state argument can be one of the following values:MARK='bullet'REMAP='Bullet1'0, where the source control is being dragged within a target's range.REMAP='Bullet1'1, where the source control is being dragged out of a target's range.REMAP='Bullet1'2, where the source control is being moved from one position in the target to another.REMAP='Body'For both the DragOver and DragDrop events, the Control argument type should be translated to HCTL (a handle to the VBX control) for C++. The X and Y values are in pixels, not twips.REMAP='Body'If a standard VBX event has a Shift key argument, the argument has these bit values:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='42*'COLNAME='C2' COLWIDTH='178*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'KeyCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Bit valueVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ShiftCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'0x1COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CtrlCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'0x2COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AltCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'0x4 (Used in connection with a Menu selection)REMAP='Body'If a standard VBX event has a Button key argument, the argument has these bit values:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='51*'COLNAME='C2' COLWIDTH='51*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ButtonCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Bit valueVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LeftCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'0x1COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Right COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'0x2COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MiddleCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'0x4REMAP='Body'The following example shows how you might use these Shift key arguments. For example, if you want the VBX control to perform some action when the mouse is moved and the Shift key is pressed, you could write a function such asFORMAT="LINESPECIFIC"void EvMouseMove(VBXEVENT FAR* event)
{
short X = VBX_EVENTARGNUM(event, short, 0);
short Y = VBX_EVENTARGNUM(event, short, 1);
short Shift = VBX_EVENTARGNUM(event, short, 2);
short Button = VBX_EVENTARGNUM(event, short, 3);
if (shift & 0x2)
MessageBox ("The control key is pressed.");
}REMAP='Body'Borland C++ uses pixels to express the X and Y coordinate arguments of standard VBX events. This differs from Visual Basic, which expresses coordinates in twips (1/20th of a point or 1/1440 of an inch). Custom events are usually expressed in terms of twips. You can use these functions to convert between pixels and twips.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='71*'COLNAME='C2' COLWIDTH='180*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'FunctionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'VBXPix2TwpXCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Converts an X argument from pixels to twipsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'VBXPix2TwpYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Converts a Y argument from pixels to twipsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'VBXTwp2PixXCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Converts an X argument from twips to pixelsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'VBXTwp2PixYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Converts a Y argument from twips to pixelsProtected member functionsTVbxEventHandler::EvVbxDispatchFORMAT="LINESPECIFIC"LRESULT EvVbxDispatch(WPARAM wp, LPARAM lp);REMAP='BodyNoLead'After ROLE='italic'TVbxEventHandler receives a WM_VBXFIREEVENT message from the parent window, it calls ROLE='italic'EvVbxDispatch, which sends the message to the correct event-handling function and passes a pointer to the VBXEVENT structure.TVbxEventHandler::EvVbxInitFormFORMAT="LINESPECIFIC"LRESULT EvVbxInitForm(WPARAM wp, LPARAM lp);REMAP='Body'This function is used internally to initialize a dialog box which contains VBX controls.Response table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='214*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_MESSAGE(WM_VBXFIREEVENT, EvVbxDispatch)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvVbxDispatchCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_MESSAGE(WM_VBXINITFORM, EvVbxinitForm)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvVbxInitFormTView classMOREINFO="NONE"docview.hREMAP='Body'Derived virtually from both ROLE='italic'TEventHandler and ROLE='italic'TStreamableBase, ROLE='italic'TView is the interface presented to a document so it can access its client views. Views then call the document functions to request input and output streams. Views own the streams and are responsible for attaching and deleting them.REMAP='Body'Instead of creating an instance of ROLE='italic'TView, you create a derived class that has access to ROLE='italic'TView's virtual functions. The derived class must have a way of knowing the associated window (provided by ROLE='italic'GetWindow), of describing the view (provided by ROLE='italic'GetViewName), and of displaying a range of data (ROLE='italic'GetSelection). The view must also be able to restore the view later (ROLE='italic'SetSelection) and to display the document title in its window (ROLE='italic'SetDocTitle).REMAP='Body'ROLE='italic'TView uses several event handler functions to query views, commit, and close views. For example, to query views to find the one with the focus, you would use the ROLE='italic'vnIsWindow function, passing a handle to the current window.REMAP='Body'View classes can take various forms. For example, a view class can be a window (through inheritance), can contain a window (an embedded object), can reference a window, or can be contained within a window object. A view class might not even have a window, as in the case of a voice mail or a format converter. Some remote views (for example, those displayed by DDE servers) might not have local windows.REMAP='Body'Other viewer classes derived from ROLE='italic'TView include ROLE='italic'TEditView, ROLE='italic'TListView, and ROLE='italic'TWindowView. These classes display different types of data: ROLE='italic'TEditView displays unformatted text files, ROLE='italic'TListView displays text information in a list box, and ROLE='italic'TWindowView is a basic viewer from which you can derive other types of viewers such as hex file viewers.REMAP='Body'For OLE-enabled applications, use ROLE='italic'TOleView, which supports views for embedded objects and compound documents.See alsoREMAP='BodyNoLead'TOleView classPublic data membersenumFORMAT="LINESPECIFIC"enum {PrevProperty = 0, ViewClass, ViewName, NextProperty,};REMAP='BodyNoLead'These property values, defined for ROLE='italic'TView, are available in classes derived from ROLE='italic'TView. ROLE='italic'PrevProperty and ROLE='italic'NextProperty are delimiters for every document's property list. TagFORMAT="LINESPECIFIC"void far* Tag;REMAP='BodyNoLead'ROLE='italic'Tag holds a pointer to the application defined data. Typically, you can use ROLE='italic'Tag to install a pointer to your own application's associated data structure. ROLE='italic'TView zeros ROLE='italic'Tag during construction and doesn't access it again.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TView(TDocument& doc);REMAP='BodyNoLead'Constructs a ROLE='italic'TView object of the document associated with the view. Sets ROLE='italic'ViewId to ROLE='italic'NextViewId. Calls ROLE='italic'TDocument::AttachView to attach the view to the associated document.DestructorFORMAT="LINESPECIFIC"virtual ~TView( );REMAP='BodyNoLead'Frees a ROLE='italic'TView object and calls ROLE='italic'DetachView to detach the view from the associated document.Public member functionsFindPropertyFORMAT="LINESPECIFIC"virtual int FindProperty(const char far* name);REMAP='BodyNoLead'ROLE='italic'FindProperty gets the property index, given the property name (ROLE='italic'name). Returns 0 if the name isn't found.See alsoREMAP='BodyNoLead'pfxxxx property access constantsGetDocumentFORMAT="LINESPECIFIC"TDocument& GetDocument( );REMAP='BodyNoLead'Returns a reference to the view's document.GetNextViewIdFORMAT="LINESPECIFIC"static unsigned GetNextViewId{};REMAP='BodyNoLead'Returns the next view ID to be assigned.GetPropertyFORMAT="LINESPECIFIC"virtual int GetProperty(int index, void far* dest, int textlen=0);REMAP='BodyNoLead'Returns the total number of properties where ROLE='italic'index is the property index, ROLE='italic'dest contains the property data, and ROLE='italic'textlen is the size of the property array. If ROLE='italic'textlen is 0, property data is returned as binary data; otherwise, property data is returned as text data.See alsoREMAP='BodyNoLead'pfxxxx property access constants, TView::SetPropertyGetViewIdFORMAT="LINESPECIFIC"unsigned GetViewId( );REMAP='BodyNoLead'Returns the unique ID for this view.GetViewMenuFORMAT="LINESPECIFIC"TMenuDescr* GetViewMenu( );REMAP='BodyNoLead'Returns the menu descriptor for this view. This can be any existing ROLE='italic'TMenuDescr object. If no descriptor exists, ROLE='italic'ViewMenu is 0.GetViewNameFORMAT="LINESPECIFIC"virtual const char far* GetViewName( )=0;REMAP='BodyNoLead'Pure virtual function that returns 0. Override this function in your derived class to return the name of the class.See alsoREMAP='BodyNoLead'TEditView::StaticName, TEditView::GetViewNameGetWindowFORMAT="LINESPECIFIC"virtual TWindow* GetWindow( )REMAP='BodyNoLead'ROLE='italic'GetWindow returns the ROLE='italic'TWindow instance associated with the view or 0 if no view exists.See alsoREMAP='BodyNoLead'TeditView::GetWindowIsOKFORMAT="LINESPECIFIC"bool IsOK( );REMAP='BodyNoLead'Returns nonzero if the view is successfully constructed.See alsoREMAP='BodyNoLead'TView::NotOKPropertyCountFORMAT="LINESPECIFIC"virtual int PropertyCount( );REMAP='BodyNoLead'Gets the total number of properties for the ROLE='italic'TDocument object. Returns ROLE='italic'NextProperty -1.See alsoREMAP='BodyNoLead'pfxxxx property access constantsPropertyFlagsFORMAT="LINESPECIFIC"virtual int PropertyFlags(int index);REMAP='BodyNoLead'Returns the attributes of a specified property given the index (ROLE='italic'index) of the property whose attributes you want to retrieve.See alsoREMAP='BodyNoLead'pfxxxx property access constants, TView::FindProperty, TView::PropertyNamePropertyNameFORMAT="LINESPECIFIC"virtual const char* PropertyName(int index);REMAP='BodyNoLead'Returns the text name of the property given the index value.See alsoREMAP='BodyNoLead'pfxxxx property access constants, TView::FindPropertySetDocTitleFORMAT="LINESPECIFIC"virtual bool SetDocTitle(const char far* docname, int index)REMAP='BodyNoLead'Stores the document title.See alsoREMAP='BodyNoLead'TWindow::SetDocTitleSetPropertyFORMAT="LINESPECIFIC"virtual bool SetProperty(int index, const void far* src);REMAP='BodyNoLead'Sets the value of the property, given the index of the property, and ROLE='italic'src, the data type (either binary or text) to which the property must be set.See alsoREMAP='BodyNoLead'pfxxxx property access constants, TView::GetPropertySetViewMenuFORMAT="LINESPECIFIC"void SetViewMenu(TMenuDescr* menu);REMAP='BodyNoLead'Sets the menu descriptor for this view. This can be any existing ROLE='italic'TMenuDescr object. If no descriptor exists, ROLE='italic'ViewMenu is 0.See alsoREMAP='BodyNoLead'TView::GetViewMenuProtected data memberDocFORMAT="LINESPECIFIC"TDocument* Doc;REMAP='BodyNoLead'Holds the current document.Protected member functionsNotOKFORMAT="LINESPECIFIC"void NotOK( );REMAP='BodyNoLead'Sets the view to an invalid state, thus causing ROLE='italic'IsOK to return 0.See alsoREMAP='BodyNoLead'TView::IsOKTWidthHeight enumMOREINFO="NONE"layoutco.hFORMAT="LINESPECIFIC"enum TWidthHeight {lmWidth = lmCenter + 1, lmHeight};REMAP='BodyNoLead'Used by the ROLE='italic'TLayoutConstraint struct, ROLE='BOLD' ROLE='italic'TWidthHeight enumerates the values that control the width (ROLE='italic'lmWidth) and height (ROLE='italic'lmHeight) of the window.See alsoREMAP='BodyNoLead'TLayoutConstraint structTWindow classMOREINFO="NONE"window.hREMAP='Body'ROLE='italic'TWindow, derived from ROLE='italic'TEventHandler and ROLE='italic'TStreamableBase, provides window-specific behavior and encapsulates many functions that control window behavior and specify window creation and registration attributes.REMAP='Body'ROLE='italic'TWindow is a generic window that can be resized and moved. You can construct an instance of ROLE='italic'TWindow, though normally you'll use ROLE='italic'TWindow as a base for your specialized window classes. In general, to associate and disassociate a ROLE='italic'TWindow object with a window element, you need to follow these steps:NUMERATION='ARABIC' CONTINUATION="RESTARTS" INHERITNUM="IGNORE"REMAP='.NumList1'Construct an instance of a ROLE='italic'TWindow.REMAP='.NumList1'Call ROLE='italic'Create or ROLE='italic'Execute, which creates the interface element (HWND) and then calls ROLE='italic'SetupWindow, which calls the base ROLE='italic'SetupWindow for normal processing, which in turn involvesMARK='bullet'REMAP='Bullet2'Creating the HWindow and any child HWindows.REMAP='Bullet2'Calling ROLE='italic'TransferData to setup the transfer of data between the parent and child windows.REMAP='.NumList1'To destroy the interface element, choose one of the following actions, depending on your application:MARK='bullet'REMAP='Bullet2'Call ROLE='italic'Destroy to destroy the interface element unconditionally.REMAP='Bullet2'Call ROLE='italic'CloseWindow, which calls ROLE='italic'CanClose to test whether it's OK to destroy the interface element.REMAP='.NumList1'There are two ways to destroy the interface object:MARK='bullet'REMAP='Bullet2'If the object has been ROLE='bold'new'd, use ROLE='bold'delete.REMAP='Bullet2'If the object hasn't been ROLE='bold'new'd, the compiler automatically destructs the object.REMAP='Body'The ObjectWindows destroy process consists of two parts: (1) call ROLE='italic'Destroy to destroy the interface element and (2) then delete the C++ object. However, it is perfectly valid to call ROLE='italic'Destroy on the interface element without deleting the C++ object and then to call Create at a later time to re-create the window. Because it is also valid to construct a C++ window object on the stack or as an aggregated member, the ROLE='italic'Destroy function can't assume it should delete the C++ object.REMAP='Body'The user-generated WM_CLOSE event handler, ROLE='italic'EvClose, also causes a C++ object to be deleted by passing the "ROLE='bold'this" pointer to the application. The C++ object is deleted automatically because the ROLE='italic'EvClose event frequently occurs in response to a user action, and this is the most convenient place for the deletion to take place. Later, when it's safe to do so, the application then deletes the window pointer. Because the stack often contains selectors that refer to the addresses of objects that may become invalid during the delete process, it's not safe to delete the "ROLE='bold'this" pointer while events are still being processed. If the addresses become invalid, they could cause trouble when they are reloaded from the stack. REMAP='Body'ROLE='italic'TWindow is the base class for all window classes, including ROLE='italic'TFrameWindow, ROLE='italic'TControl,ROLE='BOLD' ROLE='italic'TDialog, and ROLE='italic'TMDIChild. The ObjectWindows hierarchy diagram shows the many classes that are derived from ROLE='italic'TWindow.Public data membersAttrFORMAT="LINESPECIFIC"TWindowAttr Attr;REMAP='BodyNoLead'Holds a ROLE='italic'TWindowAttr structure, which contains the window's creation attributes. These attributes, which include the window's style, extended style, position, size, menu ID, child window ID, and menu accelerator table ID, are passed to the function that creates the window.See alsoREMAP='BodyNoLead'TWindow::TWindow, TWindow::Create, TWindowAttr structDefaultProcFORMAT="LINESPECIFIC"WNDPROC DefaultProc;REMAP='BodyNoLead'Holds the address of the default window procedure. ROLE='italic'DefWindowProc calls ROLE='italic'DefaultProc to process Windows messages that are not handled by the window.See alsoREMAP='BodyNoLead'TWindow::DefWindowProcHWindowFORMAT="LINESPECIFIC"HWND HWindow;REMAP='BodyNoLead'Holds the handle to the associated MS-Windows window, which you'll need to access if you make calls directly to Windows API functions. ParentFORMAT="LINESPECIFIC"TWindow* Parent;REMAP='BodyNoLead'Points to the interface object that serves as the parent window for this interface object.ScrollerFORMAT="LINESPECIFIC"TScroller* Scroller;REMAP='BodyNoLead'Points to the scroller object that supports either the horizontal or vertical scrolling for this window. StatusFORMAT="LINESPECIFIC"TStatus Status;REMAP='BodyNoLead'ROLE='BOLD'Status is used to signal an error in the initialization of an interface object. Setting ROLE='italic'Status to a nonzero value causes a ROLE='italic'TXIncompatibility exception to be thrown. Classes derived from ROLE='italic'TWindow do not attempt to associate an interface element with an object whose previous initialization has failed. ROLE='italic'Status is included only to provide backward compatibility with previous versions of ObjectWindows.TitleFORMAT="LINESPECIFIC"char far* Title;REMAP='BodyNoLead'ROLE='italic'Title points to the window's caption. When there is a valid HWindow, ROLE='italic'Title will yield the same information as ROLE='italic'::GetWindowText if you use ROLE='italic'TWindow::SetCaption to set it.See alsoREMAP='BodyNoLead'TDialog::SetCaption, TDialog::SetupWindow, TWindow::GetWindowTextTitle, TWindow::SetCaptionPublic constructors and destructorConstructors FORMAT="LINESPECIFIC"TWindow(HWND hWnd, TModule* module = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TWindow that is used as an alias for a non-ObjectWindows window, and sets wfAlias. Because the HWND is already available, this constructor, unlike the other ROLE='italic'TWindow constructor, performs the "thunking" and extraction of HWND information instead of waiting until the function ROLE='italic'Create creates the interface element.REMAP='Body'Both forms: The following paragraphs describe procedures common to both constructors. module specifies the application or DLL that owns the ROLE='italic'TWindow instance. ObjectWindows needs the correct value of module to find needed resources. If module is 0, ROLE='italic'TWindow sets its module according to the following rules:MARK='bullet'REMAP='Bullet1'If the window has a parent, the parent's module is used.REMAP='Bullet1'If the ROLE='italic'TWindow constructor is invoked from an application, the module is set to the application.REMAP='Bullet1'If the ROLE='italic'TWindow constructor is invoked from a DLL that is dynamically linked with the ObjectWindows DLL and the currently running application is linked the same way, the module is set to the currently running application.REMAP='Bullet1'If the ROLE='italic'TWindow constructor is invoked from a DLL that is statically linked with the ObjectWindows library or the invoking DLL is dynamically linked with ObjectWindows DLL but the currently running application is not, no default is used for setting the module. Instead, a ROLE='italic'TXInvalidModule exception is thrown and the object is not created.FORMAT="LINESPECIFIC"TWindow(TWindow* parent, const char far* title = 0, TModule* module = 0);REMAP='BodyNoLead'Adds ROLE='bold'this to the child list of ROLE='italic'parent if nonzero, and calls ROLE='italic'EnableAutoCreate so that ROLE='bold'this will be created displayed along with ROLE='italic'parent. Also sets the title of the window initializes the window's creation attributes.REMAP='Body'See the previous constructor for a description of the procedures common to both constructors.DestructorFORMAT="LINESPECIFIC"virtual ~TWindow( );REMAP='BodyNoLead'Destroys a still-associated interface element by calling ROLE='italic'Destroy. Deletes the window objects in the child list, then removes ROLE='bold'this from the parent window's child list. Deletes the ROLE='italic'Scroller if it is nonzero. Frees the cursor, if any exists, and the object instance (thunk).See alsoREMAP='BodyNoLead'TWindowFlag enum, TWindow::EnableAutoCreatePublic member functionsAdjustWindowRectFORMAT="LINESPECIFIC"static void AdjustWindowRect(TRect& rect, uint32 style, bool menu);REMAP='BodyNoLead'ROLE='italic'AdjustWindowRect calculates the size of the window rectangle according to the indicated client-rectangle size. ROLE='italic'rect refers to the structure that contains the client rectangle's coordinates. ROLE='italic'style specifies the style of the window. ROLE='italic'menu is ROLE='bold'true if the window has a menu.AdjustWindowRectExFORMAT="LINESPECIFIC"static void AdjustWindowRectEx(TRect& rect, uint32 style, bool menu, uint32 exStyle);REMAP='BodyNoLead'ROLE='italic'AdjustWindowRectEx calculates the size of a window rectangle that has an extended style. ROLE='italic'TRect refers to the structure that contains the client rectangle's coordinates. ROLE='italic'style specifies the window styles of the window to be adjusted, and ROLE='italic'menu returns ROLE='bold'true if the window has a menu. ROLE='italic'exStyle indicates the extended styles to be used for the window. Extended styles include the following styles:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='125*'COLNAME='C2' COLWIDTH='249*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_EX_ACCEPTFILESCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The window can make use of drag and drop files.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_EX_DLGMODALFRAMECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The window has a double border that can be created with a title bar if the WS_CAPTION style flag is specified.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_EX_NOPARENTNOTIFYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The child window created from this style does not send parent notify messages to the parent window when the child is created or destroyed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_EX_TOPMOSTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A window having this style is placed above windows that aren't topmost and remains above the non-topmost windows even when it's deactivated.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_EX_TRANSPARENTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A window having this style is transparent, that is, any windows beneath this window are not concealed by this window.See alsoREMAP='BodyNoLead'TWindowAttr structBringWindowToTopFORMAT="LINESPECIFIC"void BringWindowToTop( );REMAP='BodyNoLead'ROLE='italic'BringWindowToTop brings a pop-up or child window to the top of the stack of overlapping windows and activates it.CanCloseFORMAT="LINESPECIFIC"virtual bool CanClose( );REMAP='BodyNoLead'Use this function to determine if it's okay to close a window. Returns ROLE='bold'true if the associated interface element can be closed. Calls the ROLE='italic'CanClose member function of each of its child windows. Returns ROLE='bold'false if any of the ROLE='italic'CanClose calls returns ROLE='bold'false. REMAP='Body'In your application's main window, you can override ROLE='italic'TWindow'sROLE='italic' CanClose and call ROLE='italic'TWindow::MessageBox to display a YESNOCANCEL message prompting the user to REMAP='Body'YESname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'Save the data, or REMAP='Body'NOname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'Don't save the data, but close the window, orREMAP='Body'CANCELname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'Cancel the close operation and return to the edit window.REMAP='Body'The following example shows how to write a ROLE='italic'CanClose function that displays a message box asking if the user wants to save a drawing that has changed. To save time, ROLE='italic'CanClose uses the ROLE='italic'IsDirty flag to see if the drawing has changed. If so, ROLE='italic'CanClose queries the user before closing the window. FORMAT="LINESPECIFIC"bool TMyWindow::CanClose( )
{
if (IsDirty)
switch(MessageBox("Do you want to save?", "Drawing has changed.",
MB_YESNOCANCEL | MB_ICONQUESTION)) {
case IDCANCEL:
// Choosing Cancel means to abort the close name='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]' return false.
return false;
case IDYES:
// Choosing Yes means to save the drawing.
CmFileSave( );
}
return true;
}CheckDlgButtonFORMAT="LINESPECIFIC"void CheckDlgButton(int buttonId, uint check);REMAP='BodyNoLead'Places a checkmark in (or removes a checkmark from) the button specified in ROLE='italic'buttonId. If ROLE='italic'check is nonzero, the checkmark is placed next to the button; if 0, the checkmark is removed. For buttons having three states, ROLE='italic'check can be 0 (clear), 1 (checked), or 2 (gray).CheckRadioButtonFORMAT="LINESPECIFIC"void CheckRadioButton(int firstButtonId, int lastButtonId, int checkButtonId);REMAP='BodyNoLead'Checks the radio button specified by ROLE='italic'checkButtonId and removes the checkmark from the other radio buttons in the group. ROLE='italic'firstButtonId and ROLE='italic'lastButtonId specify the first and last buttons, respectively, in the group.ChildBroadcastMessageFORMAT="LINESPECIFIC"void ChildBroadcastMessage(uint msg, WPARAM wParam, LPARAM lParam);REMAP='BodyNoLead'Sends the specified message to all immediate children using ROLE='italic'SendMessage.See alsoREMAP='BodyNoLead'TWindow::SendMessageChildWindowFromPointFORMAT="LINESPECIFIC"HWND ChildWindowFromPoint(const TPoint&) const;REMAP='BodyNoLead'Determines which of the child windows contains the point specified in ROLE='italic'TPoint. Returns a handle to the window that contains the point, or 0 if the point lies outside the parent window.See alsoREMAP='BodyNoLead'TWindow::WindowFromPointChildWithIdFORMAT="LINESPECIFIC"TWindow* ChildWithId(int id) const;REMAP='BodyNoLead'Returns a pointer to the window in the child window list that has the supplied ID. Returns 0 if no child window has the indicated ROLE='italic'id.ClearFlagFORMAT="LINESPECIFIC"void ClearFlag(TWindowFlag mask);REMAP='BodyNoLead'Clears the specified ROLE='italic'TWindow wfXxxx constant flags (for example wfAlias, wfTransfer, and so on) in the ROLE='italic'Flags member.See alsoREMAP='BodyNoLead'TWindowFlag enumClientToScreenFORMAT="LINESPECIFIC"void ClientToScreen(TPoint& point) const;REMAP='BodyNoLead'Converts the client coordinates specified in ROLE='italic'TPoint to screen coordinates for the new window.CloseWindowFORMAT="LINESPECIFIC"virtual void CloseWindow(int retval = 0);REMAP='BodyNoLead'Determines if it's okay to close a window before actually closing the window. If ROLE='italic'this is the main window of the application, calls ROLE='italic'GetApplication->ROLE='italic'CanClose. Otherwise, calls ROLE='italic'this-ROLE='BOLD'>ROLE='italic'CanClose to determine whether the window can be closed. After determining that it is okay to close the window, ROLE='italic'CloseWindow calls ROLE='italic'Destroy to destroy the HWND.See alsoREMAP='BodyNoLead'TApplication::CanClose, TWindow::CanCloseCmExitFORMAT="LINESPECIFIC"void CmExit( );REMAP='BodyNoLead'ROLE='italic'CmExit is called in response to the selection of a menu item that has an ID of CM_EXIT. If ROLE='italic'this is the main window, ROLE='italic'CmExit calls ROLE='italic'CloseWindow.CreateFORMAT="LINESPECIFIC"virtual bool Create( );REMAP='BodyNoLead'Creates the windows interface element to be associated with this ObjectWindows interface element.CreateCaretFORMAT="LINESPECIFIC"void CreateCaret(HBITMAP hBitmap);REMAP='BodyNoLead'Creates a new caret for the system. ROLE='italic'HBITMAP specifies the bitmapped caret shape.FORMAT="LINESPECIFIC"void CreateCaret(bool isGray, int width, int height);REMAP='BodyNoLead'Create a new caret for the system with the specified shape, bitmap shade, ROLE='italic'width, and height. If ROLE='italic'width or ROLE='italic'height is 0, the corresponding system-defined border size is used.CreateChildrenFORMAT="LINESPECIFIC"bool CreateChildren( );REMAP='BodyNoLead'Creates the child windows in the child list whose auto-create flags (with wfAutoCreate mask) are set.See alsoREMAP='BodyNoLead'TWindow::EnableAutoCreate, TWindow::DisableAutoCreate, TWindowFlag enumDefaultProcessingFORMAT="LINESPECIFIC"LRESULT DefaultProcessing( );REMAP='BodyNoLead'ROLE='italic'DefaultProcessing serves as a general-purpose default processing function that handles a variety of messages. After being created and before calling ROLE='italic'DefaultProcessing, however, a window completes this sequence of events:MARK='bullet'REMAP='Bullet1'If the window is already created, ROLE='italic'SubclassWindow is used to install ROLE='italic'StdWndProc in place of the window's current procedure. The previous window procedure is saved in ROLE='italic'DefaultProc.REMAP='Bullet1'If the window hasn't been created, ROLE='italic'InitWndProc is set up as the window proc in the class. Then, when the window first receives a message, ROLE='italic'InitWndProc calls ROLE='italic'GetThunk to get the window's instance thunk (created by the constructor by calling ROLE='italic'CreateInstanceThunk). ROLE='italic'InitWndProc then switches the message-receiving capability from the window's procedure to ROLE='italic'StdWndProc.REMAP='Body'After this point, ROLE='italic'StdWndProc responds to incoming messages by calling the window's virtual ROLE='italic'WindowProc to process the messages. ObjectWindows uses the special registered message ROLE='italic'::GetWindowPtrMsgId to get the ROLE='bold'this pointer of an HWND. ROLE='italic'StdWndProc responds to this message by returning the ROLE='bold'this pointer obtained from the thunk.REMAP='Body'If the incoming message is not a command or command enable message, ROLE='italic'WindowProc immediately searches the window's response table for a matching entry. If the incoming message is a command or command enable message, ROLE='italic'WindowProc calls ROLE='italic'EvCommand or ROLE='italic'EvCommandEnable. ROLE='italic'EvCommand and ROLE='italic'EvCommandEnable begin searching for a matching entry in the focus window's response table. If an entry is found, the corresponding function is dispatched; otherwise ObjectWindows calls ROLE='italic'DefaultProcessing to finish the recursive walk back up the parent chain, searching for a match until the receiving window (the window that initially received the message) is reached. At this point, one of the following actions occurs:MARK='bullet'REMAP='Bullet1'If there is still no match and this is the ROLE='italic'MainWindow of the application, the window searches the application's response table.REMAP='Bullet1'If there are no matches and this is a command, ROLE='italic'DefWindowProc is called.REMAP='Bullet1'If this is a ROLE='italic'CommandEnable message, no further action is taken.REMAP='Bullet1'If this is not a command, and if a response table entry exists for the window, ROLE='italic'WindowProc dispatches the corresponding ROLE='italic'EvXxxx function to handle the message.REMAP='Bullet1'If this is the application's ROLE='italic'MainWindow, and the message is designed for the application, the message is forwarded to the application.REMAP='Bullet1'For any other cases, the window calls ROLE='italic'DefWindowProc.REMAP='Body'The following diagram illustrates this sequence of message-processing events:REMAP='Body'FILEREF='mpe_1.gif'See alsoREMAP='BodyNoLead'TWindow::DefWindowProcDefWindowProcFORMAT="LINESPECIFIC"virtual LRESULT DefWindowProc(uint msg, WPARAM wParam, LPARAM lParam);REMAP='BodyNoLead'Performs default Windows processing and passes the incoming Windows message. You usually don't need to call this function directly. Classes such as ROLE='italic'TMDIFrame and ROLE='italic'TMDIChild'sROLE='italic' DefWindowProc override this function to perform specialized default processing.See alsoREMAP='BodyNoLead'TWindow::DefaultProc, TWindow::WindowProc, TMDIFrame::DefWindowProcDestroyFORMAT="LINESPECIFIC"virtual void Destroy(int retVal = 0);REMAP='BodyNoLead'First, ROLE='italic'Destroy calls ROLE='italic'EnableAutoCreate for each window in the child list to ensure that windows in the child list will be re-created if ROLE='italic'this is re-created. Then, it destroys the associated interface element.REMAP='Body'If a derived window class expects to be destructed directly, it should call ROLE='italic'Destroy as the first step in its destruction so that any virtual functions and event handlers can be called during the destroy sequence.See alsoREMAP='BodyNoLead'TWindow::EnableAutoCreateDestroyCaretFORMAT="LINESPECIFIC"static void DestroyCaret( );REMAP='BodyNoLead'ROLE='italic'DestroyCaret first checks the ownership of the caret. If a window in the current task owns the caret, ROLE='italic'DestroyCaret destroys the caret and removes it from the screen.See alsoREMAP='BodyNoLead'TWindow::CreateCaretDisableAutoCreateFORMAT="LINESPECIFIC"void DisableAutoCreate( );REMAP='BodyNoLead'Disables the feature that allows an associated child window interface element to be created and displayed along with its parent window. Call ROLE='italic'DisableAutoCreate for pop-up windows and controls if you want to create and display them at a time later than their parent windows.See alsoREMAP='BodyNoLead'TWindow::EnableAutoCreateDisableTransferFORMAT="LINESPECIFIC"void DisableTransfer( );REMAP='BodyNoLead'Disables (for the interface object) the transfer mechanism, which allows state data to be transferred to and from a transfer buffer.See alsoREMAP='BodyNoLead'TWindowFlag enumDispatchFORMAT="LINESPECIFIC"virtual LRESULT Dispatch(TEventInfo& info, WPARAM wp, LPARAM lp = 0);REMAP='BodyNoLead' Cracks and dispatches a ROLE='BOLD' ROLE='italic'TWindow message. The ROLE='BOLD' ROLE='italic'info parameter is the event-handling function. The ROLE='BOLD' ROLE='italic'wp and ROLE='BOLD' ROLE='italic'lp parameters are the message parameters the dispatcher cracks. DragAcceptFilesFORMAT="LINESPECIFIC"void DragAcceptFiles(bool accept);REMAP='BodyNoLead'If a window can process dropped files, ROLE='italic'DragAcceptFiles sets accept to TRUE.DrawMenuBarFORMAT="LINESPECIFIC"void DrawMenuBar( );REMAP='BodyNoLead'ROLE='italic'DrawMenuBar redraws the menu bar. This function should be called to redraw the menu if the menu is changed after the window is created.EnableAutoCreateFORMAT="LINESPECIFIC"void EnableAutoCreate( );REMAP='BodyNoLead'Ensures that an associated child-window interface element is created and displayed along with its parent window. By default, this feature is enabled for windows and controls, but disabled for dialog boxes.See alsoREMAP='BodyNoLead'TWindow::DisableAutoCreateEnableScrollBarFORMAT="LINESPECIFIC"void EnableScrollBar(uint sbFlags = SB_BOTH, uint arrowFlags = ESB_ENABLE_BOTH); REMAP='BodyNoLead'Disables or enables one or both of the scroll bar arrows on the scroll bars associated with this window. ROLE='italic'sbFlags, which specifies the type of scroll bar, can be one of the Scroll Bar constants (SB_CTL, SB_HORZ, SB_VERT, or SB_BOTH). By default, the arrows on both the horizontal and vertical scroll bars are either enabled or disabled. ROLE='italic'arrowFlags, which indicates whether the scroll bar arrows are enabled or disabled, can be one of the Enable Scroll Bar constants (ESB_ENABLE_BOTH, ESB_DISABLE_LTUP, ESB_DISABLE_RTDN, ESB_DISABLE_BOTH). By default, the arrows on both the horizontal and vertical scroll bars are enabled.See alsoREMAP='BodyNoLead'SB_Xxxx ScrollBar ConstantsEnableTransferFORMAT="LINESPECIFIC"void EnableTransfer( );REMAP='BodyNoLead'Enables the transfer mechanism, which allows state data to be transferred between the window and a transfer buffer.EnableWindowFORMAT="LINESPECIFIC"virtual bool EnableWindow(bool enable);REMAP='BodyNoLead'Allows the given window to receive input from the keyboard of mouse. If enable is TRUE, the window can receive input. Use the function ROLE='italic'IsWindowEnabled to determine if the window has been enabled.See alsoREMAP='BodyNoLead'TWindow::IsWindowEnabledEnumPropsFORMAT="LINESPECIFIC"int EnumProps(PROPENUMPROC proc);REMAP='BodyNoLead'Enumerates all the items in the property list of the current window and passes them one by one to the callback function indicated in ROLE='italic'proc. The process continues until every item has been enumerated or until ROLE='italic'proc returns zero. ROLE='italic'proc holds the address of the callback function.EvChildInvalidFORMAT="LINESPECIFIC"void EvChildInvalid(HWND hWnd);REMAP='BodyNoLead'Responds to a WM_CHILDINVALID message posted by a child edit control. Indicates that the contents of the child window are invalid.EvCommandFORMAT="LINESPECIFIC"virtual LRESULT EvCommand(uint id, HWND hWndCtl, uint notifyCode);REMAP='BodyNoLead'ROLE='italic'WindowProc calls ROLE='italic'EvCommand to handle WM_COMMAND messages. ROLE='italic'id is the identifier of the menu item or control. ROLE='italic'hWndCtl holds a value that represents the control sending the message. If the message is not from a control, it is 0. ROLE='italic'notifyCode holds a value that represents the control's notification message. If the message is from an accelerator, ROLE='italic'notifyCode is 1; if the message is from a menu, ROLE='italic'notifyCode is 0.See alsoREMAP='BodyNoLead'TWindow::DefaultProcessingEvCommandEnableFORMAT="LINESPECIFIC"virtual void EvCommandEnable(TCommandEnabler& ce);REMAP='BodyNoLead'Called by ROLE='italic'WindowProc to handle WM_COMMAND_ENABLE messages, EvCommand calls the ROLE='italic'CmXxxx command-handling function or calls ROLE='italic'DefaultProcessing to handle the incoming message.See alsoREMAP='BodyNoLead'TWindow::DefaultProcessing, TCommandEnablerEvSysCommandFORMAT="LINESPECIFIC"void EvSysCommand(uint cmdType, TPoint& point);REMAP='BodyNoLead'Responds to a user-selected command from the System menu or when the user selects the maximize or minimize box. Applications that modify the system menu must process ROLE='italic'EvSysCommand messages. Any ROLE='italic'EvSysCommand messages not handled by the application must be passed to ROLE='italic'DefWindowProc. The parameter ROLE='italic'cmdType can be one of the following system commands:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='132*'COLNAME='C2' COLWIDTH='147*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SC_CLOSECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Close the window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SC_HOTKEYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Activate the specified window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SC_HSCROLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Scroll horizontally.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SC_KEYMENUCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Retrieve a menu through a keystroke.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SC_MAXIMIZE (or SC_ZOOM)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Maximize the window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SC_MINIMIZE (or SC_ICON)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Minimize the window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SC_MOUSEMENUCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Retrieve a menu through a mouse click.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SC_NEXTWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Move to the next window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SC_PREVWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Move to the previous window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SC_SCREENSAVECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Execute the specified screen saver.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SC_SIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Size the windowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SC_TASKLISTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Activate the Windows Task Manager.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SC_VSCROLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Scroll vertically.REMAP='Body'In the following example, ROLE='italic'EvSysCommand either processes system messages or calls ROLE='italic'DefaultProcessing:FORMAT="LINESPECIFIC"void MyWindow::EvSysCommand(uint cmdType, TPoint&)
{
switch (cmdType& 0xFFF0) {
case SC_MOUSEMENU:
case SC_KEYMENU:
break;
default:
DefaultProcessing( );
}
}See alsoREMAP='BodyNoLead'TWindow::DefaultProcessingFirstThatFORMAT="LINESPECIFIC"TWindow* FirstThat(TCondFunc test, void* paramList = 0);FORMAT="LINESPECIFIC"TWindow* FirstThat(TCondMemFunc test, void* paramList = 0);REMAP='BodyNoLead'There are two ROLE='italic'FirstThat functions, both of which pass a pointer to an iterator function. The first ROLE='italic'FirstThat points to a nonmember function as its first parameter; the second ROLE='italic'FirstThat points to a member function instead.REMAP='Body'Both ROLE='italic'FirstThat functions iterate over the child list, calling a Boolean ROLE='italic'test function and passing each child window in turn as an argument (along with ROLE='italic'paramList). If a test call returns TRUE, the iteration is stopped and ROLE='italic'FirstThat returns the child window object that was supplied to test. Otherwise, ROLE='italic'FirstThat returns 0.REMAP='Body'In the following example, ROLE='italic'GetFirstChecked calls ROLE='italic'FirstThat to obtain a pointer (ROLE='italic'p) to the first check box in the child list that is checked:FORMAT="LINESPECIFIC"bool IsThisBoxChecked(TWindow* p, void*) {
return ((TCheckBox*)p)->GetCheck( ) == BF_CHECKED;
}
TCheckBox* TMyWindow::GetFirstChecked( ) {
return FirstThat(IsThisBoxChecked);
}See alsoREMAP='BodyNoLead'TCondFunc typeFlashWindowFORMAT="LINESPECIFIC"bool FlashWindow(bool invert);REMAP='BodyNoLead'ROLE='italic'FlashWindow changes the window from active to inactive or vice versa. If ROLE='italic'invert is nonzero, the window is flashed. If ROLE='italic'invert is 0, the window is returned to its original statename='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'either active or inactive.ForEachFORMAT="LINESPECIFIC"void ForEach(TActionFunc action, void* paramList = 0);REMAP='BodyNoLead'There are two ROLE='italic'ForEach functions. This ROLE='italic'ForEach takes a nonmember function as its first parameter; the other ROLE='italic'ForEach (see the following entry) takes a member function instead. This version of ROLE='italic'ForEach iterates over the child list, calling a nonmember function supplied as the action to be performed and passing each child window in turn as the argument (along with ROLE='italic'paramList).REMAP='Body'In the following example, ROLE='italic'CheckAllBoxes calls ROLE='italic'ForEach, checking all the check boxes in the child list:FORMAT="LINESPECIFIC"void CheckTheBox(TWindow* p, void*) {
((TCheckBox*)p)->Check( );
}
void CheckAllBoxes( ) {
ForEach(CheckTheBox);
}FORMAT="LINESPECIFIC"void ForEach(TActionMemFunc action, void* paramList = 0);REMAP='BodyNoLead'Refer to the previous ROLE='italic'ForEach description. The difference between the two ROLE='italic'ForEach members is that the first ROLE='italic'ForEach takes a nonmember function as a parameter and this ROLE='italic'ForEach takes a member function as a parameter.See alsoREMAP='BodyNoLead'TActionFunc typedef, TActionMemFunc typedefForwardMessageFORMAT="LINESPECIFIC"LRESULT ForwardMessage(bool send = true)REMAP='BodyNoLead'Forwards the window's current message. Calls ROLE='italic'SendMessage if send is TRUE; otherwise calls ROLE='italic'PostMessage.FORMAT="LINESPECIFIC"LRESULT ForwardMessage(HWND hWnd, bool send = true);REMAP='BodyNoLead'Forwards the window's current message to another HWND. Calls ROLE='italic'SendMessage if send is ROLE='bold'true; otherwise calls ROLE='italic'PostMessage.See alsoREMAP='BodyNoLead'TWindow::PostMessageGetActiveWindowFORMAT="LINESPECIFIC"static HWND GetActiveWindow( );REMAP='BodyNoLead'ROLE='italic'GetActiveWindow retrieves the handle of the active window. Returns 0 if no window is associated with the calling thread.GetApplicationFORMAT="LINESPECIFIC"TApplication* GetApplication( )const;REMAP='BodyNoLead'Gets a pointer to the ROLE='italic'TApplication object associated with this. Use ROLE='italic'GetApplication to obtain access to data and functions in the ROLE='italic'TApplication object. GetCaptureFORMAT="LINESPECIFIC"static HWND GetCapture( );REMAP='BodyNoLead'Returns the handle of the window that has captured the mouse.GetCaretBlinkTimeFORMAT="LINESPECIFIC"static uint GetCaretBlinkTime( );REMAP='BodyNoLead'ROLE='italic'GetCaretBlinkTime retrieve the caret blink rate in milliseconds.See alsoREMAP='BodyNoLead'TWindow::SetCaretBlinkTimeGetCaretPosFORMAT="LINESPECIFIC"static void GetCaretPos(TPoint& point);REMAP='BodyNoLead'ROLE='italic'GetCaretPos gets the position of the caret in the coordinates of the client window. ROLE='italic'point refers to the structure that receives the client coordinates of the caret.See alsoREMAP='BodyNoLead'TWindow::SetCaretPosGetClassLongFORMAT="LINESPECIFIC"long GetClassLong(int index) const;REMAP='BodyNoLead'ROLE='italic'GetClassLong retrieves the 32-bit value about the window class. If unsuccessful, returns 0. Depending on the value of ROLE='italic'index, ROLE='italic'GetClassLong can retrieve the following information:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='111*'COLNAME='C2' COLWIDTH='226*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCL_CBCLSEXTRACOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Size in bytes of memory associated with this classCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCL_CBWINDEXTRACOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Size of extra window memory associated with each windowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCL_HBRBACKGROUNDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Handle of the background brush associated with the classCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCL_HCURSORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Handle of the cursorCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCL_HICONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Handle of the iconCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCL_HMODULECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Handle of the module that registered the classCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCL_MENUNAMECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Address of the menu name stringCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCL_STYLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The style bits associated with a window classCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCL_WNDPROCCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Address of the window procedure associated with this classSee alsoREMAP='BodyNoLead'Twindow::SetClassLongGetClassWordFORMAT="LINESPECIFIC"uint16 GetClassWord(int index) const;REMAP='BodyNoLead'ROLE='italic'GetClassWord gets a 16-bit value containing information about the class or style of the window. If unsuccessful; returns 0. Depending on the value of ROLE='italic'index, ROLE='italic'GetClassWord can retrieve the following information:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='111*'COLNAME='C2' COLWIDTH='226*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCW_CBCLSEXTRACOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Number of additional class informationCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCW_CBWINDEXTRACOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Number of bytes of additional window informationCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCW_HBRBACKGROUNDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Handle of the background brushCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCW_HCURSORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Handle of the cursorCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCW_HICONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Handle of the iconCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCW_HMODULECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Handle of the moduleCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCW_STYLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The style bits associated with a window classSee alsoREMAP='BodyNoLead'TWindow::SetClassWordGetClientRectFORMAT="LINESPECIFIC"TRect GetClientRect( ) const;REMAP='BodyNoLead'ROLE='italic'GetClientRect gets the coordinates of the window's client area (the area in a window you can use for drawing).FORMAT="LINESPECIFIC"void GetClientRect(TRect& rect) const;REMAP='BodyNoLead'Gets the coordinates of the window's client area and then copies them into the object referred to by ROLE='italic'TRect.GetCursorPosFORMAT="LINESPECIFIC"static void GetCursorPos(TPoint& pos);REMAP='BodyNoLead'ROLE='italic'GetCursorPos retrieves the cursor's current position (in window screen coordinates) and copies the values into the structure pointed to by ROLE='italic'TPoint.GetDesktopWindowFORMAT="LINESPECIFIC"static HWND GetDesktopWindow( );REMAP='BodyNoLead'ROLE='italic'GetDesktopWindow returns a handle to the desktop window.GetDlgCtrlIDFORMAT="LINESPECIFIC"int GetDlgCtrlID( ) const;REMAP='BodyNoLead'ROLE='italic'GetDlgCtrlID returns the ID of the control.GetDlgItemFORMAT="LINESPECIFIC"HWND GetDlgItem(int childId) const;REMAP='BodyNoLead'ROLE='italic'GetDlgItem retrieves the handle of a control specified by ROLE='italic'childId.See alsoREMAP='BodyNoLead'TWindow::GetDlgItemIntGetDlgItemIntFORMAT="LINESPECIFIC"uint GetDlgItemInt(int childId, bool *translated = 0,bool isSigned = true) const;REMAP='BodyNoLead'ROLE='italic'GetDlgItemInt retrieves the text of a control specified by ROLE='italic'childId. translated points to the variable that receives the translated value. ROLE='italic'isSigned indicates that the retrieved value is signed (the default).See alsoREMAP='BodyNoLead'TWindow::GetDlgItemGetDlgItemTextFORMAT="LINESPECIFIC"uint GetDlgItemText(int childId, char far* text, int max) const;REMAP='BodyNoLead'ROLE='italic'GetDlgItemText retrieves the text of a control specified by ROLE='italic'childId. ROLE='italic'text points to the text buffer to receive the text. ROLE='italic'max specifies the maximum length of the caption, which is truncated if it exceeds this length.See alsoREMAP='BodyNoLead'TWindow::SetDlgItemTextGetFirstChildFORMAT="LINESPECIFIC"TWindow* GetFirstChild( )REMAP='BodyNoLead'Returns a pointer to the first child window, which is the first window created, in the interface object's child list.See alsoREMAP='BodyNoLead'TWindowAttr strucGetFocusFORMAT="LINESPECIFIC"static HWND GetFocus( );REMAP='BodyNoLead'Gets a handle to the window that has the focus. Use the function ROLE='italic'SetFocus to set the keyboard focus to this window. See alsoREMAP='BodyNoLead'TWindow::SetFocusGetHWndStateFORMAT="LINESPECIFIC"void GetHWndState( );REMAP='BodyNoLead'Copies the style, coordinate, and the resource ROLE='italic'id (but not the title) from the existing HWnd into the ObjectWindows' ROLE='italic'TWindow members. GetIdFORMAT="LINESPECIFIC"int GetId( );REMAP='BodyNoLead'Returns ROLE='italic'Attr.ROLE='italic'Id, the ID used to find the window in a specified parent's child list.See alsoREMAP='BodyNoLead'TWindowAttr structGetModuleFORMAT="LINESPECIFIC"TModule* GetModule( ) const;REMAP='BodyNoLead'Returns a pointer to the module object.GetLastActivePopupFORMAT="LINESPECIFIC"HWND GetLastActivePopup( ) const;REMAP='BodyNoLead'Returns the last active pop-up window in the list.GetLastChildFORMAT="LINESPECIFIC"TWindow* GetLastChild( );REMAP='BodyNoLead'Returns a pointer to the last child window in the interface object's child list.GetMenuFORMAT="LINESPECIFIC"HMENU GetMenu( ) const;REMAP='BodyNoLead'ROLE='italic'GetMenu returns the handle to the menu of the indicated window. If the window has no menu, the return value is 0.See alsoREMAP='BodyNoLead'TWindow::SetMenuGetNextDlgGroupItemFORMAT="LINESPECIFIC"HWND GetNextDlgGroupItem(HWND hWndCtrl, bool previous = false) const;REMAP='BodyNoLead'ROLE='italic'GetNextDlgGroupItem returns either the next or the previous control in the dialog box. ROLE='italic'hWndCtrl identifies the control in the dialog box where the search begins. If previous is 0, ROLE='italic'GetNextDlgGroupItem searches for the next control; if nonzero, it searches for the previous control.GetNextDlgTabItemFORMAT="LINESPECIFIC"HWND GetNextDlgTabItem(HWND HWndCtrl, bool previous = false) const;REMAP='BodyNoLead'ROLE='italic'GetNextDlgTabItem returns the handle of the first control that lets the user press the TAB key to move to the next control (that is, the first control with the WS_TABSTOP style associated with it). ROLE='italic'hWndCtrl identifies the control in the dialog box where the search begins. If previous is 0, ROLE='italic'GetNextDlgGroupItem searches for the next control; if nonzero, it searches for the previous control.GetNextWindowFORMAT="LINESPECIFIC"HWND GetNextWindow(uint dirFlag) const;REMAP='BodyNoLead'ROLE='italic'GetNextWindow finds the handle associated with either the next or previous window in the window manager's list. ROLE='italic'dirFlag specifies the direction of the search. Under the Win 32 API, ROLE='italic'GetNextWindow returns either the next or the previous window's handle. If the application is not running under Win32, ROLE='italic'GetNextWindow returns the next window's handle.GetWindowPtrFORMAT="LINESPECIFIC"TWindow* GetWindowPtr(HWND hWnd);REMAP='BodyNoLead'This version of ROLE='italic'GetWindowPtr actually calls ROLE='italic'TApplication's GetWindowPtr on the application associated with this window. Then, given the handle to this window (ROLE='italic'hWnd), ROLE='italic'GetWindowPtr returns the ROLE='italic'TWindow pointer associated with ths window. See alsoREMAP='BodyNoLead'TApplication:GetWindowPtrGetParentFORMAT="LINESPECIFIC"HWND GetParent( ) const;REMAP='BodyNoLead'ROLE='italic'GetParent retrieves the handle of the parent window. If none exists, returns 0.See alsoREMAP='BodyNoLead'TWindow::SetParentGetPropFORMAT="LINESPECIFIC"HANDLE GetProp(uint16 atom) const;REMAP='BodyNoLead'ROLE='italic'GetProp returns a handle to the property list of the specified window. ROLE='italic'atom contains a value that identifies the character string whose handle is to be retrieved. If the specified string is not found in the property list for this window, returns NULL.FORMAT="LINESPECIFIC"HANDLE GetProp(const char far* string) const;REMAP='BodyNoLead'ROLE='italic'GetProp returns a handle to the property list of the specified window. Unlike the previous ROLE='italic'GetProp function, ROLE='italic'string points to the string whose handle is to be retrieved. If the specified string is not found in the property list for this window, returns NULL.See alsoREMAP='BodyNoLead'TWindow::SetPropGetScrollPosFORMAT="LINESPECIFIC"int GetScrollPos(int bar) const;REMAP='BodyNoLead'ROLE='italic'GetScrollPos returns the thumb position in the scroll bar. The position returned is relative to the scrolling range. If ROLE='italic'bar is SB_CTL, it returns the position of a control in the scroll bar; if ROLE='italic'bar is SB_HORZ, it returns the position of a horizontal scroll bar; if ROLE='italic'bar is SB_VERT, it returns the position of a vertical scroll bar.See alsoREMAP='BodyNoLead'TWindow::SetScrollPos, SB_Xxxx Scroll Bar ConstantsGetScrollRangeFORMAT="LINESPECIFIC"void GetScrollRange(int bar, int& minPos, int& maxPos) const;REMAP='BodyNoLead'ROLE='italic'GetScrollRange returns the minimum and maximum positions in the scroll bar. If ROLE='italic'bar is SB_CTL, it returns the position of a control in the scroll bar; if ROLE='italic'bar is SB_HORZ, it returns the position of a horizontal scroll bar; if ROLE='italic'bar is SB_VERT, it returns the position of a vertical scroll bar. ROLE='italic'minPos and ROLE='italic'maxPos hold the lower and upper range, respectively, of the scroll bar positions. If there are no scroll bar controls or if the scrolls are non-standard, ROLE='italic'minPos and ROLE='italic'maxPos are zero.See alsoREMAP='BodyNoLead'TWindow::SetScrollRange, SB_Xxxx Scroll Bar ConstantsGetSysModalWindowFORMAT="LINESPECIFIC"static HWND GetSysModalWindow( );REMAP='BodyNoLead'Retrieves the handle of the system-modal window.See alsoREMAP='BodyNoLead'TWindow::SetSysModalWindowGetSystemMenuFORMAT="LINESPECIFIC"HMENU GetSystemMenu(bool revert = false) const;REMAP='BodyNoLead'ROLE='italic'GetSystemMenu returns a handle to the system menu so that an application can access the system menu.GetThunkFORMAT="LINESPECIFIC"WNDPROC GetThunk( )const;REMAP='BodyNoLead'Gets the instance thunk, a small piece of code created for use with exported callback functions. (A callback function is a function that exists within a program but is called from outside the program by a Windows library routine, for example, a dialog box function.)GetTopWindowFORMAT="LINESPECIFIC"HWND GetTopWindow( )const;REMAP='BodyNoLead'ROLE='italic'GetTopWindow returns a handle to the top window currently owned by this parent window. If no children exist, ROLE='italic'GetTopWindow returns 0.GetUpdateRectFORMAT="LINESPECIFIC"bool GetUpdateRect(TRect& rect, bool erase = true) const;REMAP='BodyNoLead'ROLE='italic'GetUpdateRect retrieves the screen coordinates of the rectangle that encloses the updated region of the specified window. erase specifies whether ROLE='italic'GetUpdateRect should erase the background of the updated region.See alsoREMAP='BodyNoLead'TWindow::RedrawWindowGetUpdateRgnFORMAT="LINESPECIFIC"bool GetUpdateRgn(TRegion& rgn, bool erase = true) const;REMAP='BodyNoLead'ROLE='italic'GetUpdateRgn copies a window's update region into a region specified by ROLE='italic'region. If ROLE='italic'erase is ROLE='bold'true, ROLE='italic'GetUpdateRgn erases the background of the updated region and redraws nonclient regions of any child windows. If ROLE='italic'erase is ROLE='bold'false, no redrawing occurs. REMAP='Body'If the call is successful, ROLE='italic'GetUpdateRgn returns a value indicating the kind of region that was updated. If the region has no overlapping borders, it returns SIMPLEREGION; if the region has overlapping borders, it returns COMPLEXREGION; if the region is empty, it returns NULLREGION; if an error occurs, it returns ERROR.See alsoREMAP='BodyNoLead'TWindow::RedrawWindowGetWindowFORMAT="LINESPECIFIC"HWND GetWindow (uint cmd) const;REMAP='BodyNoLead'Returns the handle of the window that has the indicated relationship to this window. ROLE='BOLD' ROLE='italic'cmd , which indicates the type of relationship to be obtained, can be one of the following values:See alsoREMAP='BodyNoLead'TApplication:GetWindowPtrGetWindowFontFORMAT="LINESPECIFIC"HFONT GetWindowFont( );REMAP='BodyNoLead'Gets the font the control uses to draw text. The return value is a handle of the font the control uses. If a system default font is being used, ROLE='BOLD' ROLE='italic'GetWindowFont returns NULL.GetWindowLongFORMAT="LINESPECIFIC"long GetWindowLong(int index) const;REMAP='BodyNoLead'ROLE='italic'GetWindowLong retrieves information about the window depending on the value stored in ROLE='italic'index. The values returned, which provide information about the window, include the following ROLE='italic'GWL_Xxxx window style constants: COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='95*'COLNAME='C2' COLWIDTH='279*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GWL_EXSTYLE COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The extended window styleCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GWL_STYLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The window style (position, device context creation, size, and so on)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GWL_WNDPROC - COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The address of the window procedure being processedCOLNAME='C1' MOREROWS='0' NAMEEND='C2' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'In the case of the dialog box, additional information can be retrieved, such as:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DWL_DLGPROC COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body' The address of the procedure processed by the dialog boxCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DWL_MSGRESULT COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The value that a message processed by the dialog box returnsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DWL_USERCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Additional information that pertains to the application, such as pointers or handles the application uses.See alsoREMAP='BodyNoLead'TWindow::GetClassLongGetWindowPlacementFORMAT="LINESPECIFIC"bool GetWindowPlacement(WINDOWPLACEMENT* place) const;REMAP='BodyNoLead'ROLE='italic'GetWindowPlacement retrieves display and placement information (normal, minimized, and maximized positions) about the window and stores that information in the argument, ROLE='BOLD' ROLE='italic'place .See alsoREMAP='BodyNoLead'TWindow::SetWindowPlacement, TWindow::ShowGetWindowRectFORMAT="LINESPECIFIC"void GetWindowRect(Trect& rect) const;REMAP='BodyNoLead'Gets the screen coordinates of the window's rectangle and copies them into ROLE='italic'rect.FORMAT="LINESPECIFIC"TRect GetWindowRect( ) const;REMAP='BodyNoLead'Gets the screen coordinates of the window's rectangle.See alsoREMAP='BodyNoLead'TWindow::GetClientRectGetWindowTaskFORMAT="LINESPECIFIC"HTASK GetWindowTask( ) const;REMAP='BodyNoLead'Returns a handle to the task that created the specified window.GetWindowTextFORMAT="LINESPECIFIC"int GetWindowText(char far* string, int maxCount) const;REMAP='BodyNoLead'ROLE='italic'GetWindowText copies the window's title into a buffer pointed to by ROLE='italic'string. ROLE='italic'maxCount indicates the maximum number of characters to copy into the buffer. A string of characters longer than ROLE='italic'maxCount is truncated. ROLE='italic'GetWindowText returns the length of the string or 0 if no title exists.See alsoREMAP='BodyNoLead'TWindow::SetWindowText, TWindow::GetWindowTextTitle, TWindow::SetCaptionGetWindowTextLengthFORMAT="LINESPECIFIC"int GetWindowTextLength( ) const;REMAP='BodyNoLead'ROLE='italic'GetWindowTextLength returns the length, in characters, of the specified window's title. If the window is a control, returns the length of the text within the control. If the window does not contain any text, ROLE='italic'GetWindowTextLength returns 0.See alsoREMAP='BodyNoLead'TWindow::SetWindowTextGetWindowTextTitleFORMAT="LINESPECIFIC"void GetWindowTextTitle( );REMAP='BodyNoLead'Updates the ROLE='italic'TWindow title data member (ROLE='italic'Title) from the current window's caption. ROLE='italic'GetWindowTextTitle is used to keep ROLE='italic'Title synchronized with the actual window state when there is a possibility that the state might have changed.See alsoREMAP='BodyNoLead'TWindow::SetCaption, TWindow::TitleGetWindowWordFORMAT="LINESPECIFIC"uint16 GetWindowWord(int index) const;REMAP='BodyNoLead'ROLE='italic'GetWindowWord retrieves information about this window depending on the value of index. ROLE='italic'GetWindowWord returns one of the following values that indicate information about the window:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='106*'COLNAME='C2' COLWIDTH='208*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GWW_HINSTANCECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The instance handle of the module owning the window COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GWW_HWNDPARENTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The handle of the parent window COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GWW_IDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The ID number of the child windowSee alsoREMAP='BodyNoLead'TWindow::GetWindowLong, TWindow::SetWindowWord, TWindow::SetParentHandleMessageFORMAT="LINESPECIFIC"LRESULT HandleMessage(uint msg, WPARAM wParam = 0, LPARAM lParam = 0);REMAP='BodyNoLead'Handles message sent to a window. ROLE='italic'HandleMessage can be called directly to handle Windows messages without going through ROLE='italic'SendMessage.See alsoREMAP='BodyNoLead'TWindow::SendMessageHideCaretFORMAT="LINESPECIFIC"void HideCaret( );REMAP='BodyNoLead'ROLE='italic'HideCaret removes the caret from the specified display screen. The caret is hidden only if the current task's window owns the caret. Although the caret is not visible, it can be displayed again using ROLE='italic'ShowCaretSee alsoREMAP='BodyNoLead'TWindow::CreateCaret, TWindow::ShowCaretHiliteMenuItemFORMAT="LINESPECIFIC"bool HiliteMenuItem(HMENU hMenu, uint idItem, uint hilite);REMAP='BodyNoLead'ROLE='italic'HiliteMenuItem either highlights or removes highlighting from a top-level item in the menu. ROLE='italic'idItem indicates the menu item to be processed. ROLE='italic'hilite (which contains a value that indicates if the ROLE='italic'idItem is to be highlighted or is to have the highlight removed) can be one or more of the following constants:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='286*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MF_BYCOMMANDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The ROLE='italic'idItem parameter contains the menu item's identifier.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MF_BYPOSITIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The ROLE='italic'idItem parameter contains the zero-based relative position of the menu item.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MF_HILITECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Highlights the menu item. If this value is not specified, highlighting is removed from the item.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MF_UNHILITECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Removes the menu item's highlighting.REMAP='Body'If the menu is set to the specified condition, ROLE='italic'HiliteMenuItem returns ROLE='bold'true; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TWindow::GetMenuHoldFocusHWndFORMAT="LINESPECIFIC"virtual bool HoldFocusHWnd(HWND hWndLose, HWND hWndGain);REMAP='BodyNoLead'Responds to a request by a child window to hold its HWND when it is losing focus. Stores the child's HWND in ROLE='italic'HwndRestoreFocus.See alsoREMAP='BodyNoLead'TFrameWindow::HoldFocusHwndHWNDFORMAT="LINESPECIFIC"operator HWND( )const;REMAP='BodyNoLead'Allows a ROLE='italic'TWindow& to be used as an HWND in Windows API calls by providing an implicit conversion from ROLE='italic'TWindow to HWND.IdleActionFORMAT="LINESPECIFIC"virtual bool IdleAction(long idleCount);REMAP='BodyNoLead'Called when no messages are waiting to be processed, ROLE='italic'IdleAction performs idle processing as long as ROLE='bold'true is returned. ROLE='italic'idleCount specifies the number of times ROLE='italic'idleAction has been called between messages.InvalidateFORMAT="LINESPECIFIC"void Invalidate(bool erase = true);REMAP='BodyNoLead'Invalidates (mark for painting) the entire client area of a window. The window then receives a message to redraw the window. By default, the background of the client area is marked for erasing.See alsoREMAP='BodyNoLead'TWindow::Validate, TWindow::InvalidateRectInvalidateRectFORMAT="LINESPECIFIC"void InvalidateRect(const TRect&, bool erase = true);;REMAP='BodyNoLead'Invalidates a specified client area. By default, the background of the client area to be invalidated is marked for erasing.See alsoREMAP='BodyNoLead'TWindow::ValidateRect, TWindow::InvalidateInvalidateRgnFORMAT="LINESPECIFIC"void InvalidateRgn(HRGN hRgn, bool erase = true);REMAP='BodyNoLead'ROLE='italic'InvalidateRgn invalidates a client area within a region specified by the ROLE='italic'hRgn parameter when the application receives a WM_PAINT message. The region to be invalidated is assumed to have client coordinates. If ROLE='italic'hRgn is 0, the entire client area is included in the region to be updated. The parameter ROLE='italic'erase specifies whether the background with the update region needs to be erased when the region to be updated is determined. If ROLE='italic'erase is ROLE='bold'true, the background is erased; if erase is ROLE='bold'false, the background is not erased when the ROLE='italic'Paint function is called. By default, the background within the region is marked for erasing. See alsoREMAP='BodyNoLead'TWindow::ValidateRgn, TWindow::PaintIsChildFORMAT="LINESPECIFIC"bool IsChild(HWND hWnd) const;REMAP='BodyNoLead'ROLE='BOLD' ROLE='italic'IsChild is TRUE if the window is a child window or a descendant window of this window. A window is considered a child window if it is the direct descendant of a given parent window and the parent window is in a chain of windows leading from the original overlapped or pop-up window down to the child window. ROLE='BOLD' ROLE='italic'hWnd identifes the window to be tested. IsDlgButtonCheckedFORMAT="LINESPECIFIC"uint IsDlgButtonChecked(int buttonId) const;REMAP='BodyNoLead'ROLE='italic'IsDlgButtonChecked indicates if the child button specified in the integer parameter, ROLE='italic'buttonId , is checked or if a button is grayed, checked or neither. If the return value is 0, the button is unchecked. If the return value is 1, the button is checked. If the return value is 3, the button state is undetermined. This function sends a BM_GETCHECK message to the specified button control. IsFlagSetFORMAT="LINESPECIFIC"bool IsFlagSet(TWindowFlag mask);REMAP='BodyNoLead'Returns the state of the bit flag in ROLE='italic'Attr.Flags whose ROLE='italic'mask is supplied. Returns ROLE='bold'true if the bit flag is set, and ROLE='bold'false if not set.See alsoREMAP='BodyNoLead'TWindowAttr strucIsIconicFORMAT="LINESPECIFIC"bool IsIconic( ) const;REMAP='BodyNoLead'Is TRUE if window is iconic or minimized.IsWindowFORMAT="LINESPECIFIC"bool IsWindow( ) const;REMAP='BodyNoLead'Is TRUE if an HWND is being used.IsWindowEnabledFORMAT="LINESPECIFIC"bool IsWindowEnabled( );REMAP='BodyNoLead'Is ROLE='bold'true if the window is enabled. Use the function ROLE='italic'EnableWindow to enable or disable a window.See alsoREMAP='BodyNoLead'TWindow::EnableWindowIsWindowVisibleFORMAT="LINESPECIFIC"bool IsWindowVisible( ) const;REMAP='BodyNoLead'Is ROLE='bold'true if the window is visible. By default, ROLE='italic'TWindow's constructor sets the window style attribute (WS_VISIBLE) so that the window is visible.IsZoomedFORMAT="LINESPECIFIC"bool IsZoomed( ) const;REMAP='BodyNoLead'Is ROLE='bold'true if window is zoomed or maximized.KillTimerFORMAT="LINESPECIFIC"bool KillTimer(uint timerId);REMAP='BodyNoLead'ROLE='italic'KillTimer gets rid of the timer and removes any WM_TIMER messages from the message queue. ROLE='italic'timerId contains the ID number of the timer event to be killed.See alsoREMAP='BodyNoLead'TWindow::SetTimerLockWindowUpdateFORMAT="LINESPECIFIC"bool LockWindowUpdate( );REMAP='BodyNoLead'ROLE='italic'LockWindowUpdate prevents or enables window drawing for one window at a time. If the window is locked, returns ROLE='bold'true; otherwise, returns ROLE='bold'false, which indicates an error occurred or some other window is already locked.REMAP='Body'If there is any attempted drawing attempted within a locked window or locked child windows, the extent of the attempted operation is saved within a bounding rectangle. When the window is then unlocked, the area withing the rectangle is invalidated. This causes a paint message to be sent to this window. If any drawing occurred while the window was locked for updates, the area is invalidated. MapWindowPointsFORMAT="LINESPECIFIC"void MapWindowPoints(HWND hWndTo, TPoint* points, int count) const;REMAP='BodyNoLead'ROLE='italic'MapWindowPoints maps a set of points in one window to a relative set of points in another window. ROLE='italic'hWndTo specifies the window to which the points are converted. ROLE='italic'points points to the array containing the points. If ROLE='italic'hWndTo is 0, the points are converted to screen coordinates. ROLE='italic'count specifies the number of ROLE='italic'points structures in the array.MessageBoxFORMAT="LINESPECIFIC"int MessageBox(const char far* text,const char far* caption = 0, uint type = MB_OK);REMAP='BodyNoLead'Creates and displays a message box that contains a message (ROLE='italic'text), a title (ROLE='italic'caption), and icons or push buttons (ROLE='italic'type). If ROLE='italic'caption is 0, the default title is displayed. Although ROLE='italic'type is set to one push button by default, it can contain a combination of the ROLE='italic'MB_Xxxx message constants. This function returns one of the following constants: COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='72*'COLNAME='C2' COLWIDTH='128*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDABORTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'User selected the abort button.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDCANCELCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'User selected the cancel button.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDIGNORECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'User selected the ignore button.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDNOCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'User selected the no button.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDOKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'User selected the OK buttonCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDRETRYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'User selected the retry button.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDYESCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'User selected the yes button.REMAP='Body'If BWCC is already enabled, then the message box will be a BWCC enabled. If CTRL 3D is already enabled, then the message box will be CTRL 3D enabled. If neither BWCC nor CTRL 3D is enabled, the message box will be displayed as a standard windows message box.See alsoREMAP='BodyNoLead'TWindow::PostMessage, MB_Xxxx message constantsMoveWindowFORMAT="LINESPECIFIC"void MoveWindow(int x, int y, int w, int h, bool repaint = false);REMAP='BodyNoLead'ROLE='italic'MoveWindow repositions the specified window. ROLE='italic'x and ROLE='italic'y specify the new upper left coordinates of the window; ROLE='italic'w and ROLE='italic'h specify the new width and height, respectively. If ROLE='italic'repaint is ROLE='bold'false, the window is not repainted after it is moved.FORMAT="LINESPECIFIC"void MoveWindow(const TRect& rect, bool repaint = false);REMAP='BodyNoLead'ROLE='italic'MoveWindow repositions the window. ROLE='italic'rect references the left and top coordinates and the width and height of the new screen rectangle. If ROLE='italic'repaint is FALSE, the window is not repainted after it is moved.See alsoREMAP='BodyNoLead'TWindow::RedrawWindowNextFORMAT="LINESPECIFIC"TWindow* Next( );REMAP='BodyNoLead'Returns a pointer to the next sibling window in the window's sibling list.See alsoREMAP='BodyNoLead'TWindow::PreviousNumChildrenFORMAT="LINESPECIFIC"unsigned NumChildren( );REMAP='BodyNoLead'Returns the number of child windows of the window.OpenClipboardFORMAT="LINESPECIFIC"TClipboard& OpenClipboard( );REMAP='BodyNoLead'Opens the clipboard and prevents other application from changing the contents of the clipboard. This function fails if another window has already opened the clipboard.PaintFORMAT="LINESPECIFIC"virtual void Paint(TDC& dc, bool erase, TRect& rect);REMAP='BodyNoLead'Repaints the client area (the area you can use for drawing) of a window. Called by base classes when responding to a WM_PAINT message, ROLE='italic'Paint serves as a placeholder for derived types that define ROLE='italic'Paint member functions. ROLE='italic'Paint is called by ROLE='italic'EvPaint and requested automatically by Windows to redisplay the window's contents. ROLE='italic'dc is the paint display context supplied to text and graphics output functions. The supplied reference to the rect structure is the bounding rectangle of the area that requires painting. ROLE='italic'erase indicates whether the background needs erasing.PostMessageFORMAT="LINESPECIFIC"bool PostMessage(uint msg, WPARAM wParam = 0, LPARAM lParam=0) const;REMAP='BodyNoLead'ROLE='italic'PostMessage posts a message (ROLE='italic'msg) to the window in the application's message queue. It returns without waiting for the corresponding window to process the message.See alsoREMAP='BodyNoLead'TWindow::ForwardMessage, TWindow::MessageBoxPerformCreateFORMAT="LINESPECIFIC"virtual void PerformCreate(int menuOrId);REMAP='BodyNoLead'ROLE='italic'PerformCreate is called from within ROLE='italic'Create to perform the final step in creating an MS_Windows interface element to be associated with an ObjectWindows window. ROLE='italic'PerformCreate can be overridden to provide alternate HWND create implementation.See alsoREMAP='BodyNoLead'TWindow::CreatePreProcessMsgFORMAT="LINESPECIFIC"virtual bool PreProcessMsg(MSG& msg);REMAP='BodyNoLead'ROLE='italic'PreProcessMsg allows preprocessing of queued messages prior to dispatching. If you override this method in a derived class, be sure to call the base class's ROLE='italic'PreProcessMsg because it handles the translation of accelerator keys. When nonzero is returned, message processing stops.See alsoREMAP='BodyNoLead'TApplication::ProcessAppMsgPreviousFORMAT="LINESPECIFIC"TWindow* Previous( );REMAP='BodyNoLead'Returns a pointer to the previous window in the window's sibling list.See alsoREMAP='BodyNoLead'TWindow::NextReceiveMessageFORMAT="LINESPECIFIC"LRESULT ReceiveMessage(uint msg, WPARAM wParam = 0, LPARAM lParam = 0);REMAP='BodyNoLead'Called from ROLE='italic'StdWndProc, ROLE='italic'ReceiveMessage is the first member function called when a message is received. It calls ROLE='italic'HandleMessage from within the try block of the exception-handling code. In this way, exceptions can be caught and suspended before control is returned to exception-unsafe Windows code.See alsoREMAP='BodyNoLead'TWindow::HandleMessageRedrawWindowFORMAT="LINESPECIFIC"bool RedrawWindow(TRect* update, HRGN hUpdateRgn, uint redrawFlags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);REMAP='BodyNoLead'ROLE='italic'RedrawWindow redraws the rectangle specified by update, and the region specified by ROLE='italic'hUpdateRgn. ROLE='italic'redrawFlags can be a combination of one or more of the following ROLE='italic'RDW_Xxxx Redraw Window constants used to invalidate or validate a window.REMAP='Body'These values invalidate a window:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='120*'COLNAME='C2' COLWIDTH='250*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RDW_ERASECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'When the window is repainted, it receives a WM_ERASEBKGND message. If RDW_INVALIDATE is not also specified, this flag has no effect.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RDW_FRAMECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Any part of the non-client area of the window receives a WM_NCPAINT message if it intersects the region to be updated.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RDW_INTERNALPAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A WM_PAINT message is posted to the window whether or not it contains an invalid region.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RDW_INVALIDATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Invalidates either ROLE='italic'hUpdateRgn or ROLE='italic'update. In cases where both are 0, the entire window becomes invalid.COLNAME='C1' MOREROWS='0' NAMEEND='C2' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'These values validate a window:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RDW_NOERASECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The window is prevented from receiving any WM_ERASEBKGND messages.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RDW_NOFRAMECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The window is prevented from receiving any WM_NCPAINT messages. The flag RDW_VALIDATE must also be used with this flag.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RDW_NOINTERNALPAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The window is prevented from receiving internal WM_PAINT messages, but does not prevent the window from receiving WM_PAINT messages from invalid regions.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RDW_VALIDATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Validates ROLE='italic'update and ROLE='italic'hUpdateRgn. However, if both are 0, the entire window area is validated. The flag does not have any effect on internal WM_PAINT messages.COLNAME='C1' MOREROWS='0' NAMEEND='C2' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'These flags control when the window is repainted:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RDW_ERASENOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Before the function returns, the specified windows will receive WM_NCPAINT and WM_ERASEBKGND messages.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RDW_UPDATENOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Body'Before the function returns, the specified windows will receive WM_NCPAINT, WM_ERASEBKGND, as well as WM_PAINT messages.See alsoREMAP='BodyNoLead'TWindow::GetUpdateRectRegisterFORMAT="LINESPECIFIC"virtual bool Register( );REMAP='BodyNoLead'Registers the Windows registration class of ROLE='bold'this window, if ROLE='bold'this window is not already registered. Calls ROLE='italic'GetClassName and ROLE='italic'GetWindowClass to retrieve the Windows registration class name and attributes of ROLE='bold'this window. Register returns ROLE='bold'true if ROLE='bold'this window is registered.See alsoREMAP='BodyNoLead'TWindow::GetClassName, TWindow::GetWindowClass, WNDCLASS structRegisterHotKeyFORMAT="LINESPECIFIC"bool RegisterHotKey(int idHotKey, uint modifiers, uint virtKey);REMAP='BodyNoLead'ROLE='italic'RegisterHotKey registers a hotkey ID with the current application. ROLE='italic'modifiers can be a combination of keys that must be pressed to activate the specified ROLE='italic'hotkey, for example, HOTKEYF_SHIFT, HOTKEYF_CONTROL, and HOTKEYF_ALT.See alsoREMAP='BodyNoLead'TWindow::UnRegisterHotKeyReleaseCaptureFORMAT="LINESPECIFIC"static void ReleaseCapture( );REMAP='BodyNoLead'Releases the mouse capture from this window.RemovePropREMAP='Body'ROLE='BOLD'HANDLE RemoveProp(uint16 atom) const;REMAP='BodyNoLead'ROLE='italic'RemoveProp removes the property specified by ROLE='italic'atom from the application's property list. ROLE='italic'atom indicates the string to be removed. Returns the handle of the given string or NULL if no string exists in the window's property list.FORMAT="LINESPECIFIC"HANDLE RemoveProp(const char far* str) const;REMAP='BodyNoLead'ROLE='italic'RemoveProp removes the property specified by ROLE='italic'str, a null-terminated string, from the application's property list. Returns the handle of the given string or NULL if no string exists in the window's property list.See alsoREMAP='BodyNoLead'TWindow::GetPropScreenToClientFORMAT="LINESPECIFIC"void ScreenToClient(TPoint& point) const;REMAP='BodyNoLead'ROLE='italic'ScreenToClient uses the screen coordinates specified in point to calculate client window's coordinates and then place the new coordinates into point.ScrollWindowFORMAT="LINESPECIFIC"void ScrollWindow(int dx, int dy, const TRect* scroll = 0, const TRect far* clip = 0);REMAP='BodyNoLead'ROLE='italic'ScrollWindow scrolls a window in the vertical (ROLE='italic'dx) and horizontal (ROLE='italic'dy) directions. TRect indicates the area to be scrolled. If 0, the entire client area is scrolled. ROLE='italic'clip specifies the clipping rectangle to be scrolled. Only the area within ROLE='italic'clip is scrolled. If ROLE='italic'clip is 0, the entire window is scrolled.See alsoREMAP='BodyNoLead'TWindow::ScrollWindowExScrollWindowExFORMAT="LINESPECIFIC"void ScrollWindowEx(int dx, int dy, const TRect far* scroll = 0, const TRect far* clip = 0, HRGN hUpdateRgn = 0, TRect far* update = 0, uint flags = 0);REMAP='BodyNoLead'ROLE='italic'ScrollWindowEx scrolls a window in the vertical (ROLE='italic'dx) and horizontal (ROLE='italic'dy) directions. scroll indicates the area to be scrolled. If 0, the entire client area is scrolled. ROLE='italic'clip specifies the clipping rectangle to be scrolled. Only the area within ROLE='italic'clip is scrolled. If ROLE='italic'clip is 0, the entire window is scrolled. ROLE='italic'update indicates the region that will receive the boundaries of the area that becomes invalidated as a result of scrolling. ROLE='italic'flags, which determines how the window's children are scrolled, can be one of the following ROLE='italic'SW_Xxxx Scroll Window constants:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='102*'COLNAME='C2' COLWIDTH='272*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SW_ERASECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Erases the invalidated region after sending an erase background message to the window indicated by the SW_INVALIDATE flag value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SW_INVALIDATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Invalidates the region indicated by the ROLE='italic'hUpdate parameter.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SW_SCROLLCHILDRENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Scrolls all the child window intersecting the rectangle pointed to by theROLE='italic' scroll parameter.See alsoREMAP='BodyNoLead'TWindow::ScrollWindow, TWindow::ShowSendDlgItemMessageFORMAT="LINESPECIFIC"LRESULT SendDlgItemMessage(int childId, uint msg, WPARAM wParam = 0, LPARAM lParam = 0);REMAP='BodyNoLead'ROLE='italic'SendDlgItemMessage sends a message (ROLE='italic'msg) to the control specified in ROLE='italic'childId.See alsoREMAP='BodyNoLead'TWindow::SendMessageSendMessageFORMAT="LINESPECIFIC"LRESULT SendMessage(uint msg, WPARAM wParam = 0, LPARAM lParam = 0);REMAP='BodyNoLead'ROLE='italic'SendMessage sends a message (ROLE='italic'msg) to a specified window or windows. After it calls the window procedure, it waits until the window procedure has processed the message before returning.See alsoREMAP='BodyNoLead'TWindow::ChildBroadcastMessage, TWindow::HandleMessage, TWindow::SendDlgItemMessageSendNotificationFORMAT="LINESPECIFIC"void SendNotification(int id, int notifyCode, HWND hCtl, uint msg = WM_COMMAND);REMAP='BodyNoLead'Repacks a command message (ROLE='italic'msg) so that a child window (ROLE='italic'hCtl) can send a message to its parent regardless of whether this is a WIN16 or WIN32 application.SetActiveWindowFORMAT="LINESPECIFIC"HWND SetActiveWindow( );REMAP='BodyNoLead'ROLE='italic'SetActiveWindow activates a top-level window. Returns a handle to the previously active window.See alsoREMAP='BodyNoLead'TWindow::GetActiveWindowSetBkgndColorFORMAT="LINESPECIFIC"void SetBkgndColor(uint32 color);REMAP='BodyNoLead'Sets the background color (ROLE='italic'color) for the window. You can also get the current color of an element displayed on the screen. For example,FORMAT="LINESPECIFIC"layout -> SetBkgndColor(GetSysColor(COLOR_APPWORKSPACE));REMAP='Body'uses one of the Windows COLOR values (in this case, the color of multiple document interface applications (ROLE='italic'MDI).See alsoREMAP='BodyNoLead'TWindow::BkgndColorSetCaptionFORMAT="LINESPECIFIC"void SetCaption(const char far* title);REMAP='BodyNoLead'Copies ROLE='italic'title to an allocated string pointed to by ROLE='italic'title. Sets the caption of the interface element to ROLE='italic'title. Deletes any previous title.See alsoREMAP='BodyNoLead'TWindow::GetWindowTextTitle, TWindow::TitleSetCaptureFORMAT="LINESPECIFIC"HWND SetCapture( );REMAP='BodyNoLead'Sets the mouse capture to the current window. All mouse input is directed to this window.SetCaretBlinkTimeFORMAT="LINESPECIFIC"static void SetCaretBlinkTime(uint16 milliSecs);REMAP='BodyNoLead'ROLE='italic'SetCaretBlinkTime sets the caret blink rate in milliseconds.See alsoREMAP='BodyNoLead'TWindow::GetCaretBlinkTimeSetCaretPosFORMAT="LINESPECIFIC"MOREINFO="NONE"static void SetCaretPos(int x, int y);REMAP='BodyNoLead'ROLE='italic'SetCaretPos sets the position of the caret in the coordinates of the client window. ROLE='italic'x and ROLE='italic'y indicate the client coordinates of the caret.FORMAT="LINESPECIFIC"MOREINFO="NONE"static void SetCaretPos(const TPoint& pos);REMAP='BodyNoLead'ROLE='italic'SetCaretPos sets the position of the caret in the coordinates of the client window. ROLE='italic'pos indicates the client coordinates of the caret.See alsoREMAP='BodyNoLead'TWindow::GetCaretPos, TWindow::ShowCaretSetClassLongFORMAT="LINESPECIFIC"long SetClassLong(int index) const;REMAP='BodyNoLead'ROLE='italic'SetClassLong sets the long value at the specified offsetROLE='italic' (index). Depending on the value of ROLE='italic'index, ROLE='italic'SetClassLong sets a handle to a background brush, cursor, icon, module, menu, window function, or extra class bytes.See alsoREMAP='BodyNoLead'TWindow::GetClassLongSetClassWordFORMAT="LINESPECIFIC"uint16 SetClassWord(int index, uint16 newWord);REMAP='BodyNoLead'ROLE='italic'SetClassWord sets the word value at the specified offset (ROLE='italic'index). Depending on the value of ROLE='italic'index , ROLE='italic'SetClassLong sets the number of bytes of class information, of additional window information, or the style bits. Unlike ROLE='italic'SetClassLong, ROLE='italic'SetClassWord uses one of the following ROLE='italic'GCW_xxxx Class Word constants:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='112*'COLNAME='C2' COLWIDTH='145*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCW_HBRBACKGROUNDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Sets a handle for a background brush.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCW_HCURSORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Sets a handle of a cursor.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCW_HICONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Sets a handle of an icon.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GCW_STYLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Sets a style bit for a window class.See alsoREMAP='BodyNoLead'TWindow::GetClassWordSetCursorFORMAT="LINESPECIFIC"bool SetCursor(TModule* module, TResId resId);REMAP='BodyNoLead'Sets the cursor position for the window using the given ROLE='italic'module and ROLE='italic'ResId. If the ROLE='italic'module parameter is 0, ROLE='italic'CursorResId can be one of the IDC_xxxx constants that represent different kinds of cursors. See the data member for a list of these cursor values. If the mouse is over the client area, ROLE='italic'SetCursor changes the cursor that is displayed. See alsoREMAP='BodyNoLead'TWindow::GetCursorPos, TWindow::CursorResIdSetDlgItemIntFORMAT="LINESPECIFIC"void SetDlgItemInt(int childId, uint value, bool isSigned = true) const;REMAP='BodyNoLead'ROLE='italic'SetDlgItem sets the child window with the Id (ROLE='italic'childId) in the window to the integer value specified in ROLE='BOLD'value. If ROLE='italic'isSigned is ROLE='bold'true, the value is signed.See alsoREMAP='BodyNoLead'TWindow::GetDlgItemSetDlgItemTextFORMAT="LINESPECIFIC"void SetDlgItemText(int childId, const char far* text) const;REMAP='BodyNoLead'ROLE='italic'SetDlgItemText sets the text of a child with Id. ROLE='italic'text points to the text buffer containing the window caption or text that is to be copied into the child window caption or text.See alsoREMAP='BodyNoLead'TWindow::GetDlgItemTextSetDocTitleFORMAT="LINESPECIFIC"virtual bool SetDocTitle(const char far* docname, int index);REMAP='BodyNoLead'Stores the title of the document (docname). index is the number of the view displayed in the document's caption bar. In order to determine what the view number should be, ROLE='italic'SetDocTitle makes two passes: the first pass checks to see if there's more than one view, and the second pass, if there is more than one view, assigns the next number to the view. If there is only one view, ROLE='italic'index is 0, and therefore, the document doesn't display a view number. When ROLE='italic'TDocument's checking to see if more than one view exists, ROLE='italic'index is -1. In such cases, only the document's title is displayed in the caption bar.REMAP='Body'ROLE='italic'SetDocTitle returns ROLE='bold'true if there is more than one view, and if ROLE='italic'TDocument displays the number of the view passed in ROLE='italic'index. SetFlagFORMAT="LINESPECIFIC"void SetFlag(TWindowFlag mask);REMAP='BodyNoLead'If TRUE is supplied, the bits in ROLE='italic'Attr.Flags in ROLE='italic'Mask are set. Otherwise, the bit is cleared. ROLE='italic'Mask can be any one, or a combination, of the ROLE='italic'wfXxxx constants.See alsoREMAP='BodyNoLead'TWindow::IsFlagSet, TWindow: Flag enumSetFocusFORMAT="LINESPECIFIC"HWND SetFocus( );REMAP='BodyNoLead'Sets the keyboard focus to current window and activates the window that receives the focus by sending a WM_SETFOCUS message to the window. All future keyboard input is directed to this window, and any previous window that had the input focus loses it. If successful, returns a handle to the window that has the focus; otherwise, returns NULL. See alsoREMAP='BodyNoLead'TWindow::GetFocusSetMenuFORMAT="LINESPECIFIC"bool SetMenu(HMENU hMenu);REMAP='BodyNoLead'Sets the specified window's menu to the menu indicated by ROLE='italic'hMenu. If ROLE='italic'hMenu is 0, the window's current menu is removed. ROLE='italic'SetMenu returns 0 if the menu remains unchanged; otherwise, it returns a nonzero value.See alsoREMAP='BodyNoLead'TWindow::GetMenu, TMDIFrame::SetMenuSetModuleFORMAT="LINESPECIFIC"void SetModule(TModule* module);REMAP='BodyNoLead'Sets the default module for this window.See alsoREMAP='BodyNoLead'TWindow::GetModuleSetNextFORMAT="LINESPECIFIC"void SetNext(TWindow* next);REMAP='BodyNoLead'Sets the next window in the sibling list.SetParentFORMAT="LINESPECIFIC"virtual void SetParent(TWindow* newParent);REMAP='BodyNoLead'Sets the parent for the specified window by setting ROLE='italic'Parent to the specified new ROLE='italic'Parent window object. Removes ROLE='bold'this window from the child list of the previous parent window, if any, and ROLE='bold'adds this window to the new parent's child list.See alsoREMAP='BodyNoLead'TWindow::GetParentSetPropFORMAT="LINESPECIFIC"bool SetProp(uint16 atom, HANDLE data) const;REMAP='BodyNoLead'Adds an item to the property list of the specified window. ROLE='italic'atom contains a value that identifies the data entry to be added to the property list.FORMAT="LINESPECIFIC"bool SetProp(const char far* str, HANDLE data) const;REMAP='BodyNoLead'Adds an item to the property list of the specified window. ROLE='italic'str points to the string used to identify the entry data to be added to the property list.See alsoREMAP='BodyNoLead'TWindow::GetPropSetRedrawFORMAT="LINESPECIFIC"void SetRedraw(bool redraw);REMAP='BodyNoLead'Sends a WM_SETREDRAW message to a window so that changes can be redrawn (redraw = ROLE='bold'true) or to prevent changes from being redrawn (redraw = ROLE='bold'false).SetScrollPosFORMAT="LINESPECIFIC"int SetScrollPos(int bar, int pos, bool redraw = true);REMAP='BodyNoLead'ROLE='italic'SetScrollPos sets the thumb position in the scroll bar. ROLE='italic'bar identifies the position (horizontal, vertical, or scroll bar control) to return and can be one of the SB_xxxx scroll bar constants.See alsoREMAP='BodyNoLead'TWindow::GetScrollPos, SB_Xxxx Scroll Bar ConstantsSetScrollRangeFORMAT="LINESPECIFIC"void SetScrollRange(int bar, int minPos, int maxPos, bool redraw = true);REMAP='BodyNoLead'ROLE='italic'SetScrollRange sets the thumb position in the scroll bar. ROLE='italic'bar identifies the position (horizontal, vertical, or scroll bar control) to set and can be one of the SB_xxxx scroll bar onstants. minPos and maxPos specify the lower and upper range, respectively, of the scroll bar positions.See alsoREMAP='BodyNoLead'TWindow::GetScrollRange, TWindow::SetScrollRange, SB_Xxxx scroll bar constantsSetSysModalWindowFORMAT="LINESPECIFIC"HWND SetSysModalWindow( );REMAP='BodyNoLead'Makes the indicated window a system-modal window.See alsoREMAP='BodyNoLead'TWindow::GetSysModalWindowSetTimerFORMAT="LINESPECIFIC"uint SetTimer(uint timerId, uint timeout, TIMERPROC proc = 0);REMAP='BodyNoLead'ROLE='italic'SetTimer creates a timer object associated with this window. ROLE='italic'timerID contains the ID number of the timer to be created, timeout specifies the length of time in milliseconds, and ROLE='italic'proc identifies the address of the function that's to be notified when the timed event occurs. If ROLE='italic'proc is 0, WM_TIMER messages are placed in the queue of the application that called ROLE='italic'SetTimer for this window.See alsoREMAP='BodyNoLead'TWindow::KillTimerSetTransferBufferFORMAT="LINESPECIFIC"void SetTransferBuffer(void* transferBuffer);REMAP='BodyNoLead'Sets ROLE='italic'TransferBuffer to ROLE='italic'transferBuffer.See alsoREMAP='BodyNoLead'TWindow::Transfer, TWindow::TransferDataSetWindowFontFORMAT="LINESPECIFIC"void SetWindowFont(HFONT font, bool redraw);REMAP='BodyNoLead'Sets the font that a control uses to draw text. ROLE='italic'font, which specifies the font being used, is NULL if the default system font is used. If ROLE='italic'redraw is ROLE='bold'true, the control redraws itself after the font is set; if ROLE='bold'false, the control doesn't redraw itself. See the sample program, FILEBROW.CPP, for an example of how to set the font for a file browser list box.SetWindowLongFORMAT="LINESPECIFIC"long SetWindowLong(int index, long newLong);REMAP='BodyNoLead'ROLE='italic'SetWindowLong changes information about the window. Depending on the value of ROLE='italic'index, ROLE='italic'SetWindowLong sets a handle to a background brush, cursor, icon, module, menu, or window function. The window style can be one of the ROLE='italic'GWL_xxxx values that represent styles. See ROLE='italic'GetWindowLong for a description of these values.See alsoREMAP='BodyNoLead'TWindow::GetWindowLong, TWindow::SetWindowWordSetWindowPlacementFORMAT="LINESPECIFIC"bool SetWindowPlacement(const WINDOWPLACEMENT* place);REMAP='BodyNoLead'ROLE='italic'SetWindowPlacement sets the window to a display mode and screen position. ROLE='italic'place points to a window placement structure that specifies whether the window is to be hidden, minimized or displayed as an icon, maximized, restored to a previous position, activated in its current form, or activated and displayed in its normal position. See alsoREMAP='BodyNoLead'TWindow::GetWindowPlacement, TWindow::ShowSetWindowPosFORMAT="LINESPECIFIC"void SetWindowPos(HWND hWndInsertAfter, const TRect& rect, uint flags);REMAP='BodyNoLead'Changes the size of the window pointed to by ROLE='italic'rect. ROLE='italic'flags contains one of the SWP_XxxxSet Window Position constants that specify the size and position of the window. If ROLE='italic'flags is set to SWP_NOZORDER, ROLE='italic'SetWindowPos ignores the ROLE='italic'hWndInsertAfter parameter and retains the current ordering of the child, pop-up, or top-level windows.FORMAT="LINESPECIFIC"void SetWindowPos(HWND hWndInsertAfter, int x, int y, int w, int h, uint flags);REMAP='BodyNoLead'Changes the size of the window pointed to by ROLE='italic'x, y, w, and ROLE='italic'h. ROLE='italic'flags contains one of the SWP_Xxxx Set Window Position constants that specify the size and position of the window. If ROLE='italic'flags is set to SWP_NOZORDER, ROLE='italic'SetWindowPos ignores the ROLE='italic'hWndInsertAfter parameter and retains the current ordering of the child, pop-up, or top-level windows.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='107*'COLNAME='C2' COLWIDTH='267*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SWP_DRAWFRAMECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Draws a frame around the window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SWP_FRAMECHANGEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Sends a message to the window to recalculate the window's size. If this flag is not set, a recalculate size message is sent only at the time the window's size is being changed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SWP_HIDEWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Hides the window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SWP_NOACTIVATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Does not activate the window. If this flag is not set, the window is activated and moved to the top of the stack of windows.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SWP_NOCOPYBITSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Discards the entire content area of the client area of the window. If this flag is not set, the valid contents are saved and copied into the window after the window is resized or positioned.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SWP_NOMOVECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Remembers the window's current position.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SWP_NOSIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Remembers the window's current size.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SWP_NOREDRAWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Does not redraw any changes to the window. If this flag is set, no repainting of any window area (including client, nonclient, and any window part uncovered as a result of a move) occurs. When this flag is set, the application must explicitly indicate if any area of the window is invalid and needs to be redrawn.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SWP_NOZORDERCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Remembers the current Z-order (window stacking order).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SWP_SHOWWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Displays the window.See alsoREMAP='BodyNoLead'TWindow::GetWindowPlacementSetWindowTextFORMAT="LINESPECIFIC"void SetWindowText(const char far* str);REMAP='BodyNoLead'ROLE='italic'SetWindowText sets the window's title to a buffer pointed to by ROLE='italic'str. ROLE='italic'maxCount indicates the number of characters to copy into the buffer. Note that this does not update this window's ROLE='italic'Title member. Use ROLE='italic'SetCaption if the window's ROLE='italic'Title member needs to be synchronized with the window's title.See alsoREMAP='BodyNoLead'TWindow::GetWindowTextSetWindowWordFORMAT="LINESPECIFIC"uint16 SetWindowWord(int index, uint16 newWord);REMAP='BodyNoLead'ROLE='italic'SetWindowWord changes information about the window. ROLE='italic'index specifies a byte offset of the word to be changed to the new value (ROLE='italic'newWord).See alsoREMAP='BodyNoLead'TWindow::GetWindowWord, TWindow::SetWindowLongShowFORMAT="LINESPECIFIC"void Show(int cmdShow);REMAP='BodyNoLead'After ensuring that the ROLE='italic'TWindow interface element has a valid handle, ROLE='italic'Show displays the ROLE='italic'TWindow on the screen in a manner specified by ROLE='italic'cmdShow, which can be one of the following SW_Xxxx show window constants:ShowCaretFORMAT="LINESPECIFIC"void ShowCaret( );REMAP='BodyNoLead'ROLE='italic'ShowCaret displays the caret in the specified shape in the active window at the current position.See alsoREMAP='BodyNoLead'TWindow::CreateCaret, TWindow::HideCaretShowOwnedPopupsFORMAT="LINESPECIFIC"void ShowOwnedPopups(bool show);REMAP='BodyNoLead'Shows or hides all owned popup windows according to the value of ROLE='italic'show. See alsoREMAP='BodyNoLead'TWindow::ShowShowScrollBarFORMAT="LINESPECIFIC"void ShowScrollBar(int bar, bool show = true);REMAP='BodyNoLead'ROLE='italic'ShowScrollBar displays or hides the scroll bar. ROLE='italic'bar specifies whether the bar is a control itself or part of the window's nonclient area. If ROLE='italic'bar is part of the nonclient area, it can be one of the ROLE='italic'SB_xxxx scroll bar constants (specifically, SB_BOTH, SB_HORZ, or SB_VERT). If it is a control, it should be SB_CTRL. If ROLE='italic'show is ROLE='bold'true, the scroll bar is displayed; if ROLE='bold'false, it is hidden.See alsoREMAP='BodyNoLead'TWindow::GetScrollRange, SB_Xxxx Scroll Bar ConstantsShowWindowFORMAT="LINESPECIFIC"virtual bool ShowWindow(int cmdShow);REMAP='BodyNoLead'Displays the window according to the value of ROLE='italic'cmdShow. See the function ROLE='italic'Show for a description of the SW_xxxx constants passed in ROLE='italic'cmdShow. Show is the preferred method of showing the window.See alsoREMAP='BodyNoLead'TWindow::ShowShutDownWindowFORMAT="LINESPECIFIC"void ShutDownWindow(int retVal = 0);REMAP='BodyNoLead'This inline version of ROLE='italic'ShutDownWindow calls the static version of ROLE='italic'ShutDownWindow.FORMAT="LINESPECIFIC"static void ShutDownWindow(TWindow* win, int retVal = 0);REMAP='BodyNoLead'This version of ROLE='italic'ShutDownWindow unconditionally shuts down a given window, calls ROLE='italic'Destroy on the interface element, and then deletes the interface object. Instead of using ROLE='italic'ShutDownWindow, you can call ROLE='italic'Destroy directly and then delete the interface object.SubclassWindowFunctionFORMAT="LINESPECIFIC"void SubclassWindowFunction( );REMAP='BodyNoLead'Installs the instance thunk as the ROLE='italic'WindowProc and saves the old window function in ROLE='italic'DefaultProc.See alsoREMAP='BodyNoLead'TWindow::DefaultProc, TWindow::DefaultProcessingTransferFORMAT="LINESPECIFIC"virtual uint Transfer(void* buffer, TTransferDirection direction);REMAP='BodyNoLead'Transfers data to or from any window with or without children and returns the total size of the data transferred. ROLE='italic'Transfer is a general mechanism for data transfer that can be used with or without using ROLE='italic'TransferData. The ROLE='italic'direction supplied specifies whether data is to be read from or written to the supplied buffer, or whether the size of the transfer data is simply to be returned. Data is not transferred to or from any child windows whose ROLE='italic'wfTransferROLE='italic' flag is not set. The return value is the size (in ROLE='italic'bTransferData).FORMAT="LINESPECIFIC"virtual void TransferData(TTransferDirection direction);REMAP='BodyNoLead'A window usually calls on ROLE='italic'TransferData during setup and closing of windows and relies on the constructor to set ROLE='italic'TransferBuffer to something meaningful. ROLE='italic'TransferData calls the ROLE='italic'Transfer member function of each participating child window, passing a pointer to ROLE='italic'TransferBuffer as well as the direction specified in ROLE='italic'direction (tdSetData, tdGetData, or tdSizeData).See alsoREMAP='BodyNoLead'TWindow::EnableTransfer, TWindow::DisableTransfer, TWindow::SetupWindow, TWindow::TransferBufferUnregisterHotKeyFORMAT="LINESPECIFIC"bool UnregisterHotKey(int idHotKey);REMAP='BodyNoLead'ROLE='italic'UnregisterHotKey unregisters a hotkey ID with the current application.See alsoREMAP='BodyNoLead'TWindow::RegisterHotKeyUpdateWindowFORMAT="LINESPECIFIC"void UpdateWindow( );REMAP='BodyNoLead'ROLE='italic'UpdateWindow updates the client area of the specified window by immediately sending a WM_PAINT message.ValidateFORMAT="LINESPECIFIC"void Validate( );REMAP='Body'Calls the function ROLE='italic'ValidateRect to validate (that is, remove from the area to be updated) the entire client area (the area you can use for drawing).See alsoREMAP='BodyNoLead'TWindow::InValidateValidateRectFORMAT="LINESPECIFIC"void ValidateRect(const TRect& rect);REMAP='BodyNoLead'ROLE='italic'ValidateRect validates a portion of the client area indicated by ROLE='italic'rect.ValidateRgnFORMAT="LINESPECIFIC"void ValidateRgn(HRGN hRgn);REMAP='BodyNoLead'ROLE='italic'ValidateRgn validates the client area within a region of the current window. ROLE='italic'hRgn is a handle to the client area that's to be removed from the region to be updated. If ROLE='italic'hRgn is NULL, the entire client area is removed from the region to be updated.See alsoREMAP='BodyNoLead'TWindow::InvalidateRgnWindowFromPointFORMAT="LINESPECIFIC"static HWND WindowFromPoint(const TPoint& point) const;REMAP='BodyNoLead'Returns the handle of the window in which the specified point (ROLE='italic'point) lies.See alsoREMAP='BodyNoLead'TWindow::ChildWindowFromPointWindowProcFORMAT="LINESPECIFIC"virtual LRESULT WindowProc(uint msg, WPARAM wParam, LPARAM lParam);REMAP='BodyNoLead'ROLE='italic'WindowProc processes incoming messages by calling ROLE='italic'EvCommand to handle WM_COMMAND messages, ROLE='italic'EvCommandEnable to handle WM_COMMAND_ENABLE messages, and dispatching for all other messages.See alsoREMAP='BodyNoLead'TWindow::DefWindowProcWinHelpFORMAT="LINESPECIFIC"bool WinHelp(const char far* helpFile, uint command, uint32 data);REMAP='BodyNoLead'ROLE='italic'WinHelp invokes a specified help system. ROLE='italic'helpFile points to a string containing the directory path and name of the help file. ROLE='italic'command, which indicates the type of help requested, can be one of the Windows Help_xxxx constants such as HELP_CONTEXT, HELP_HELPONHELP, HELP_INDEX, HELP_MULTIKEY, HELP_QUIT, or HELP_SETINDEX. ROLE='italic'data contains keywords that indicate the help topic items. For example, in the sample ObjectWindows file, HELP.CPP, ROLE='italic'WinHelp is called with the arguments HELP_CONTEXT and HELP_MENUITEMA if the F1 key is pressed.FORMAT="LINESPECIFIC"void TOwlHelpWnd::CmMenuItemA( )
{
if (F1Pressed) {
WinHelp(HelpFile, HELP_CONTEXT, HELP_MENUITEMA);
F1Pressed = false;
} else {
MessageBox("In Menu Item A command", Title, MB_ICONINFORMATION);
}
}REMAP='Body'You can also include bitmaps in your Help file by referencing their file names or by copying them from the Clipboard. For more information about how to create Help files, see the online Help documentation.Protected data membersBkgndColorFORMAT="LINESPECIFIC"uint32 BkgndColor;REMAP='BodyNoLead'Stores the current background color set by the ROLE='italic'TWindow::SetBkgndColor function.See alsoREMAP='BodyNoLead'TWindow::SetBkgndColorCursorModuleFORMAT="LINESPECIFIC"TModule* CursorModule;REMAP='BodyNoLead'Holds the module ID for the specified cursor. A value of 0 indicates a standard system cursor.See alsoREMAP='BodyNoLead'TWindow::CursorResIdCursorResIdFORMAT="LINESPECIFIC"TResId CursorResId;REMAP='BodyNoLead'Holds the cursor resource ID for the window's cursor. If the data member, ROLE='italic'CursorModule is 0, ROLE='italic'CursorResId could be one of the following IDC_Xxxx constants that represent different kinds of cursors:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='252*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDC_ARROWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Customary arrow cursorCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDC_CROSSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Crosshair cursorCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDC_IBEAMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'I-beam cursorCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDC_ICONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Unfilled icon cursorCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDC_SIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A smaller square in the right inside corner of a larger squareCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDC_SIZENESWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Dual-pointing cursor with arrows pointing southwest and northeastCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDC_SIZENSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Dual-pointing cursor with arrows pointing south and northCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDC_SIZENWSECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Dual-pointing cursor with arrows pointing southeast and northwestCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDC_SIZEWECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Dual-pointing cursor with arrows pointing east and westCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDC_UPARROWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Vertical arrow cursorCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDC_WAITCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Hourglass cursorSee alsoREMAP='BodyNoLead'TWindow::SetCursorhAccelFORMAT="LINESPECIFIC"HACCEL hAccel;REMAP='BodyNoLead'Holds the handle to the current Windows accelerator table associated with this window.HCursorFORMAT="LINESPECIFIC"HCURSOR HCursor;REMAP='BodyNoLead'Holds a handle to the window's cursor. The cursor is retrieved using ROLE='italic'CursorModule and ROLE='italic'CursorResId and set using ROLE='italic'SetCursor.TransferBufferFORMAT="LINESPECIFIC"void* TransferBuffer;REMAP='BodyNoLead'ROLE='italic'TransferBuffer points to a buffer to be used in transferring data in and out of the ROLE='italic'TWindow. A ROLE='italic'TWindow assumes that the buffer contains data used by the windows in its child list. If 0, no data is to be transferred.See alsoREMAP='BodyNoLead'tdxxxx constantsProtected constructorConstructorFORMAT="LINESPECIFIC"TWindow( );REMAP='BodyNoLead'Constructor used with virtually derived classes. Immediate derived classes must call ROLE='bold'Init before the construction of the object is finished.Protected member functionsCleanupWindowFORMAT="LINESPECIFIC"virtual void CleanupWindow( );REMAP='BodyNoLead'Always called immediately before the HWindow becomes invalid, ROLE='italic'CleanupWindow gives derived classes an opportunity to clean up HWND related resources. This function is the complement to ROLE='italic'SetupWindow.REMAP='Body'Override this function in your derived class to handle window cleanup. ROLE='italic'CleanupWindow gives derived classes a chance to clean up hwnd-related resources. Derived classes should call the base class's version of ROLE='italic'CleanupWindow as the last step before returning. The following example from the sample program, appwin.cpp, illustrates this process:FORMAT="LINESPECIFIC"//Tell windows that we are not accepting drag and drop transactions any more and perform other window cleanup.
void
TAppWindow::CleanupWindow( )
{
AppLauncherCleanup( );
DragAcceptFiles(false);
TWindow::CleanupWindow( );
}See alsoREMAP='BodyNoLead'TWindow::SetupWindowDispatchScrollFORMAT="LINESPECIFIC"void DispatchScroll(uint scrollCode, uint thumbPos, HWND hWndCtrl);REMAP='BodyNoLead'Called by ROLE='italic'EvHScroll and ROLE='italic'EvVScroll to dispatch messages from scroll bars.GetClassNameFORMAT="LINESPECIFIC"virtual char far* GetClassName( );REMAP='BodyNoLead'Returns the Windows registration class name. The default class name is generated using the module name plus "Window." If you are registering a new class or changing the name of an existing window class, override this function in your derived class.See alsoREMAP='BodyNoLead'TWindow::GetWindowClass, WNDCLASS structGetWindowClassFORMAT="LINESPECIFIC"virtual void GetWindowClass(WNDCLASS& wndClass);REMAP='BodyNoLead'Redefined by derived classes, ROLE='italic'GetWindowClass fills the supplied MS-Windows registration class structure with registration attributes, thus, allowing instances of ROLE='italic'TWindow to be registered. This function, along with ROLE='italic'GetClassName, allows Windows classes to be used for the specified ObjectWindows class and its derivatives. It sets the fields of the passed ROLE='italic'WNDCLASS parameter to the default attributes appropriate for a ROLE='italic'TWindow. The fields and their default attributes for the class are the following:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='72*'COLNAME='C2' COLWIDTH='302*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'cbClsExtraCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'0 (the number of extra bytes to reserve after the Window class structure). This value is not used by ObjectWindows. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'cbWndExtraCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'0 (the number of extra bytes to reserve after the Window instance). This value is not used by ObjectWindows. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hInstanceCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The instance of the class in which the window procedure existsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hIconCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'0 (Provides a handle to the class resource.) By default, the application must create an icon if the application's window is minimized.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hCursorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'IDC_ARROW (provides a handle to a cursor resource)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hbrBackgroundCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLOR_WINDOW + 1 (the system background color)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lpszMenuNameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'0 (Points to a string that contains the name of the class's menu.) By default, the windows in this class have no assigned menus.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lpszClassNameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Points to a string that contains the name of the window class.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lpfnWndProcCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The address of the window procedure. This value is not used by ObjectWindows.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'styleCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CS_DBLCLKSREMAP='Body'The style field can contain one or more of the following values:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='112*'COLNAME='C2' COLWIDTH='254*'VALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CS_BYTEALIGNCLIENTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Aligns the window's client on a byte boundary in the x direction. This alignment, designed to improve performance, determines the width and horizontal position of the window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CS_BYTEALIGNWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Aligns a window on a byte boundary in the x direction. This alignment, designed to improve performance, determines the width and horizontal position of the window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CS_CLASSDCCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Allocates a single device context (DC) that's going to be shared by all of the window in the class. This style controls how multi-threaded applications that have windows belonging to the same class share the same DC.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CS_DBLCLKSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Sends a double-click mouse message to the window procedure when the mouse is double-clicked on a window belonging to this class.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CS_GLOBALCLASSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Allows an application to create a window class regardless of the instance parameter. You can also create a global class by writing a DLL that contains the window class.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CS_HREDRAWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'If the size of the window changes as a result of some movement or resizing, redraws the entire window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CS_NOCLOSECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Disables the Close option on this window's system menu.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CS_OWNDCCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Enables each window in the class to have a different DC.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CS_PARENTDCCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Passes the parent window's DC to the child windows.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CS_SAVEBITSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Saves the section of the screen as a bitmap if the screen is covered by another window. This bitmap is later used to recreate the window when it is no longer obscured by another window. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CS_VREDRAWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'If the height of the client area is changed, redraws the entire window.REMAP='Body'After the Windows class structure has been filled with default values by the base class, you can override this function to change the values of the Windows class structure. For example, you might want to change the window's colors or the cursor displayed.See alsoREMAP='BodyNoLead'TWindow::GetClassName, WNDCLASS structInitFORMAT="LINESPECIFIC"void Init(TWindow* parent, const char far* title, TModule* module);REMAP='BodyNoLead'Allows for further initialization after default construction of a window in virtually derived classes.LoadAcceleratorTableFORMAT="LINESPECIFIC"void LoadAcceleratorTable( );REMAP='BodyNoLead'Loads a handle to the window's accelerator table specified in ROLE='italic'TWindowsAttr structure (ROLE='italic'Attr.AccelTable). If the accelerator does not exist, ROLE='italic'LoadAcceleratorTable produces an "Unable to load accelerator table" diagnostic message.See alsoREMAP='BodyNoLead'TWindowAttr structureRemoveChildFORMAT="LINESPECIFIC"void RemoveChild(TWindow* child);REMAP='BodyNoLead'Removes a child window. This family of ObjectWindows ROLE='italic'TWindow functions uses the ObjectWindows list of objects rather the Window's HWND list.See alsoREMAP='BodyNoLead'TWindow::GetFirstChild, TWindow::GetLastChild, TWindow::Next, TWindow::PreviousSetupWindowFORMAT="LINESPECIFIC"virtual void SetupWindow( );REMAP='BodyNoLead'ROLE='italic'SetupWindow is the first virtual function called when the HWindow becomes valid. ROLE='italic'TWindow's implementation performs window setup by iterating through the child list, attempting to create an associated interface element for each child window object for whom autocreation is enabled. (By default, autocreation is enabled for windows and controls, and disabled for dialog boxes.) ROLE='italic'SetupWindow then calls ROLE='italic'TransferData.REMAP='Body'ROLE='italic'SetupWindow can be redefined in derived classes to perform additional special initialization. Note that the HWindow is valid when the overridden ROLE='italic'SetupWindow is called and that the children's HWindows are valid after calling the base classes' ROLE='italic'SetupWindow function.REMAP='Body'The following example from the sample program, appwin.cpp, illustrates the use of an overridden ROLE='italic'SetupWindow to setup a window, initialize .INI entries, and tell Windows that we want to accept drag and drop transactions.FORMAT="LINESPECIFIC"void TAppWindow::SetupWindow( )
{
TFloatingFrame::SetupWindow( );
InitEntries( ); // Initialize .INI entries.
RestoreFromINIFile( ); // from Applaunc.ini in the startup directory
UpdateAppButtons( );
DragAcceptFiles(true);
}See alsoREMAP='BodyNoLead'TFrameWindow::SetupWindow, TComboBox::SetupWindow, TWindow::CleanupWindowResponse table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='254*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CREATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvCreateCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CLOSECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvCloseCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_DESTROYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvDestroyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvSizeCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MOVECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvMoveCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCDESTROYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvNcDestroyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_QUERYENDSESSIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvQueryEndSessionCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_COMPAREITEMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvCompareItemCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_DELETEITEMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvDeleteItemCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_DRAWITEMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvDrawItemCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MEASUREITEMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvMeasureItemCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CHILDINVALIDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvChildInvalidCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_VSCROLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvVScrollCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_HSCROLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvHScrollCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_PAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvPaintCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SETCURSORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvSetCursorCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_LBUTTONDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvLButtonDownCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND(CM_EXIT, CmExit)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CmExitCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SYSCOLORCHANGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvSysColorChangeCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_KILLFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvKillFocusCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_ERASEBKGNDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvEraseBkgndCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_MESSAGE(WM_CTLCOLORMSGBOX, EvWin32CtlColor)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvWin32CtlColorID='X-2'REMAP='Tbl.Footnote'ROLE='BOLD'ID='X-15656'These response table entries are used only under the Win32 API.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_MESSAGE(WM_CTLCOLOREDIT, EvWin32CtlColor)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvWin32CtlColorID='X-3'REMAP='Tbl.Footnote'ROLE='BOLD'These response table entries are used only under the Win32 API.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_MESSAGE(WM_CTLCOLORLISTBOX, EvWin32CtlColor)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvWin32CtlColorID='X-4'REMAP='Tbl.Footnote'ROLE='BOLD'These response table entries are used only under the Win32 API.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_MESSAGE(WM_CTLCOLORBTN, EvWin32CtlColor)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvWin32CtlColorID='X-5'REMAP='Tbl.Footnote'ROLE='BOLD'These response table entries are used only under the Win32 API.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_MESSAGE(WM_CTLCOLORDLG, EvWin32CtlColor)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvWin32CtlColorID='X-6'REMAP='Tbl.Footnote'ROLE='BOLD'These response table entries are used only under the Win32 API.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_MESSAGE(WM_CTLCOLORSCROLLBAR, EvWin32CtlColor)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvWin32CtlColorID='X-7'REMAP='Tbl.Footnote'ROLE='BOLD'These response table entries are used only under the Win32 API.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_MESSAGE(WM_CTLCOLORSTATIC, EvWin32CtlColor)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EvWin32CtlColorID='X-8'REMAP='Tbl.Footnote'ROLE='BOLD'These response table entries are used only under the Win32 API.TWindowAttr structMOREINFO="NONE"window.hREMAP='Body'Holds ROLE='italic'TWindow attributes set during construction of a window. Your program controls a window's creation by passing these values to one of ROLE='italic'TWindow'ROLE='italic's creation routines. If the window is streamed, these attributes are also used for re-creation.Public data membersAccelTableFORMAT="LINESPECIFIC"TResID AccelTable;REMAP='BodyNoLead'Holds the resource ID for the window's accelerator table.See alsoREMAP='BodyNoLead'TApplication::HAccTable, TWindow::LoadAcceleratorTableExStyleFORMAT="LINESPECIFIC"uint32 ExStyle;REMAP='BodyNoLead'Contains the extended style values of your window. These can be any one of the extended style constants (WS_EX_DLGMODALFRAME, WS_EX_NOPARENTNOTIFY, WS_EX_TOPMOST, WS_EX_SHADOW). See ROLE='italic'TWindow::ROLE='italic'AdjustWindowRectEx for a description of these constants.See alsoREMAP='BodyNoLead'TWindow::AdjustWindowRectExIdFORMAT="LINESPECIFIC"int Id;REMAP='BodyNoLead'Contains the identifier of the child window. For a dialog box control, ROLE='italic'Id is its resource identifier. If Win32 is defined, ROLE='italic'Id is set to ROLE='italic'GetWindowLong ; otherwise ROLE='italic'Id is set to ROLE='italic'GetWindowWord.MenuFORMAT="LINESPECIFIC"TResId Menu;REMAP='BodyNoLead'Contains the resource ID for the menu associated with this window. If no menu exists, Menu is 0.ParamFORMAT="LINESPECIFIC"char far* Param;REMAP='BodyNoLead'Contains a value that is passed to Windows when the window is created. This value identifies a data block that is then available in the message response functions associated with WM_CREATE. ROLE='italic'Param is used by ROLE='italic'TMDIClient and can be useful when converting non-ObjectWindows code.StyleFORMAT="LINESPECIFIC"uint32 Style;REMAP='BodyNoLead'Contains the values that define the style, shape, and size of your window. Although ROLE='italic'TWindow sets ROLE='italic'Attr.Style to WS_CHILD and WS_VISIBLE, you can also use other combinations of the following style constants:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='120*'COLNAME='C2' COLWIDTH='253*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_BORDERCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Creates a window with a thin lined borderCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_CAPTIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Creates a window with a title bar.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_CHILDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Creates a child windows. Cannot be used with popup styles.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_CHILDWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Creates a child window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_CLIPCHILDRENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Used when creating a parent window. Excludes the area occupied by child windows when drawing takes place within the parent window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_CLIPSIBLINGSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clips child windows relative to the child window that receives a paint message.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_DISABLEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Creates a window that cannot receive user input.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_DLGFRAMECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Creates a window having a typical dialog box style (without a title bar).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_GROUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates the first control in a group of controls, which the user can change by pressing the direction keys.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_HSCROLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Window has a horizontal scroll bar.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_MAXIMIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Window is initially maximized.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_MAXIMIZEBOXCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Window has a maximize button.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_MINIMIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Window is initially minimized.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_MINIMIZEBOXCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Window has a minimize button.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_OVERLAPPEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Creates an overlapped window with a title bar and a border.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_OVERLAPPEDWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Overlapped window has the WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX, and WS_MAXIMIZEBOX styles.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_POPUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Creates a popup window. Cannot be used with child window styles.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_POPUPWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Creates a popup window with WS_BORDER, WS_POPUP, and WS_SYSMENU styles. The WS_CAPTION and WS_POPUPWINDOW styles combine to create a system menu.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_SYSMENUCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Window has a system menu box in its title bar. Must also indicate the WS_CAPTION style.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_TABSTOPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Control can receive the keyboard focus when TAB key is pressed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_THICKFRAMECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Window has a border that lets you change the window size.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_VISIBLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Window is initially visible.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WS_VSCROLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Window has a vertical scroll bar.See alsoREMAP='BodyNoLead'TWindow::IsWindowVisibleX, Y, W, HFORMAT="LINESPECIFIC"int X, Y, W, H;REMAP='BodyNoLead'ROLE='italic'Xand ROLE='italic'Y contain the screen coordinates of the top left corner of the window. ROLE='italic'W and ROLE='italic'H contain the width and height values of the window.TWindowFlag enumwindow.hTWindowFlag enumFORMAT="LINESPECIFIC"enum TWindowFlag {FORMAT="LINESPECIFIC" wfAlias, wfAutoCreate, wfFromResource, wfShrinkToClient, wfMainWindow, wfFullyCreated, wfStreamTop, wfPredefinedClass, wfTransfer, wfUnHidden, wfUnDisabled,FORMAT="LINESPECIFIC"};REMAP='BodyNoLead'Define bit masks for the internally used flag attributes of ROLE='italic'TWindow. A ROLE='italic'wfXxxx mask is defined for each of these attributes:REMAP='TblWideCap'TWindow attribute masksCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Meaning if setVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'wfAliasCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The window object is an alias for an existing HWND.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'wfAutoCreateCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Create the ROLE='italic'HWindow when the parent window is created.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'wfFullyCreatedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Window is fully created and not being destroyed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'wfFromResourceCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'HWindow comes from an HWND created from a resource definition.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'wfMainWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Window is a main window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'wfPredefinedClassCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The window belongs to a predefined Window's not an ObjectWindows' class.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'wfShrinkToClientCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Tells a frame window to shrink itself to fit around the client window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'wfStreamTopCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates the topmost window of the collection of windows to be streamed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'wfTransferCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Participates in the ROLE='italic'Transfer mechanism.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'wfUnDisabledCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Temporarily used when an MDI child window is destroyed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'wfUnHiddenCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Temporarily used when an MDI child window is destroyed.See alsoREMAP='BodyNoLead'TWindow::CreateChildren, TWindow::EnableAutoCreateTWindowDC classMOREINFO="NONE"dc.hREMAP='Body'Derived from ROLE='italic'TDC,ROLE='BOLD' ROLE='italic'TWindowDC is a DC class that provides access to the entire area owned by a window. This is the base class for any DC class that releases its handle when it is finished.See alsoREMAP='BodyNoLead'TWindowDC::WndPublic constructor and destructorConstructorFORMAT="LINESPECIFIC"TWindowDC(HWND wnd);REMAP='BodyNoLead'Creates a ROLE='italic'TWindow object with the given owned window. The data member ROLE='italic'Wnd is set to ROLE='italic'wnd.DestructorFORMAT="LINESPECIFIC"~TWindowDC( );REMAP='BodyNoLead'Destroys this object.Protected constructorConstructorFORMAT="LINESPECIFIC"TWindowDC( );REMAP='BodyNoLead'Used for derived classes only.Protected data memberWndFORMAT="LINESPECIFIC"HWND Wnd;REMAP='BodyNoLead'Holds a handle to the window owned by this DC.See alsoREMAP='BodyNoLead'TWindowDC::TWindowDCTWindowView classMOREINFO="NONE"docview.hREMAP='Body'Derived from both ROLE='italic'TWindow and ROLE='italic'TView, ROLE='italic'TWindowView is a streamable base class that can be used for deriving window-based views. ROLE='italic'TWindowView's functions override ROLE='italic'TView's virtual function to provide their own implementation. By deriving a window-view class from ROLE='italic'TWindow and ROLE='italic'TView, you add window functionality to the view of your document.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TWindowView (TDocument& doc, TWindow* parent = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TWindowView interface object associated with the window view. Sets ROLE='italic'ViewId to ROLE='italic'NextViewId. Calls the associated document's ROLE='italic'AttachView to attach the view to the document.DestructorFORMAT="LINESPECIFIC"~TWindowView( );REMAP='BodyNoLead'Destroys a ROLE='italic'TWindowView object and calls the associated document's ROLE='italic'DetachView function to detach the view from the associated document.Public member functionsCanCloseFORMAT="LINESPECIFIC"bool CanClose( );REMAP='BodyNoLead'Overrides ROLE='italic'TView::CanClose and returns nonzero if the window can be closed. Checks all of the associated document's ROLE='italic'CanClose functions. These must return nonzero before the window view can be closed.See alsoREMAP='BodyNoLead'TWindow::CanCloseGetViewNameFORMAT="LINESPECIFIC"const char far* GetViewName( );REMAP='BodyNoLead'Overrides ROLE='italic'TView::GetViewName and returns ROLE='italic'StaticName, the name of the view.See alsoREMAP='BodyNoLead'TView::GetViewNameGetWindowFORMAT="LINESPECIFIC"TWindow* GetWindow( )REMAP='BodyNoLead'Overrides ROLE='italic'TView::GetWindow and returns the ROLE='italic'TWindowView object as a ROLE='italic'TWindow.See alsoREMAP='BodyNoLead'TEditView::GetWindow, TView::GetWindowSetDocTitleFORMAT="LINESPECIFIC"bool SetDocTitle(const char far* docname, int index)REMAP='BodyNoLead'Overrides ROLE='italic'TView::SetDocTitle and stores the document title. This name is forwarded up the parent chain until a ROLE='italic'TFrameWindow object accepts the data and displays it in its caption.See alsoREMAP='BodyNoLead'TView::SetDocTitle, TWindow::SetDocTitleStaticNameFORMAT="LINESPECIFIC"static const char far* StaticName( );REMAP='BodyNoLead'Returns "Window View," the descriptive name of the view. This title is displayed in the user-interface box.Response table entriesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='99*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Response table entryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Member functionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_ISWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'VnIsWindowTWindow::TXWindow classMOREINFO="NONE"window.hREMAP='BodyNoLead'A nested class, ROLE='italic'TXWIndow describes an exception that results from trying to create an invalid window.Public constructorsConstructorsFORMAT="LINESPECIFIC"TXWindow(TWindow* win = 0, uint resourceId = IDS_INVALIDWINDOW);REMAP='BodyNoLead'Constructs a ROLE='italic'TXWindow object with a default resource ID of IDS_INVALIDWINDOW.FORMAT="LINESPECIFIC"TXWindow(const TXWindow& src);REMAP='BodyNoLead'Constructs a ROLE='italic'TXWindow object with the window that failed.Public data membersWindowFORMAT="LINESPECIFIC"TWindow* Window;REMAP='BodyNoLead'Points to the window object that is associated with the exception.Public member functionsCloneFORMAT="LINESPECIFIC"TXOwl* Clone( );REMAP='BodyNoLead'Makes a copy of the exception object. ROLE='italic'Clone( ) must be implemented in any class derived from ROLE='italic'TXOwl.See alsoREMAP='BodyNoLead'TXOwlMsgFORMAT="LINESPECIFIC"static string Msg(TWindow*, uint resourceid);REMAP='BodyNoLead'Converts the resource ID to a string and returns the string message.ThrowFORMAT="LINESPECIFIC"void Throw( );REMAP='BodyNoLead'Throws the exception object. ROLE='italic'Throw( ) must be implemented in any class derived from ROLE='italic'TXOwl.See alsoREMAP='BodyNoLead'TXOwlUnhandledFORMAT="LINESPECIFIC"int Unhandled(TModule* app, unsigned promptResId);REMAP='BodyNoLead'Called if an exception caught in the window's message loop has not been handled. ROLE='italic'Unhandled( ) deletes the window. This type of exception can occur if a window cannot be created.TXCompatibility classMOREINFO="NONE"except.hREMAP='Body'Describes an exception that results from setting ROLE='italic'TModule::Status to nonzero. This exception is included for backward compatibility with ObjectWindows 1.0.Public constructorsConstructorsFORMAT="LINESPECIFIC"TXCompatibility(int statusCode);REMAP='BodyNoLead'Constructs a ROLE='italic'TXCompatibility object.FORMAT="LINESPECIFIC"TXCompatibility(const TXCompatibility& src);REMAP='BodyNoLead'Constructs a ROLE='italic'TXCompatibility object with the window that failed.Public member functionsCloneFORMAT="LINESPECIFIC"TXOwl* Clone( );REMAP='BodyNoLead'Makes a copy of the exception object. ROLE='italic'Clone must be implemented in any class derived from ROLE='italic'TXOwl.MapStatusCodeToStringFORMAT="LINESPECIFIC"static string MapStatusCodeToString(int statusCode);REMAP='BodyNoLead'Retrieves ROLE='italic'Tmodule's status code and coverts it to a string.ThrowFORMAT="LINESPECIFIC"void Throw( );REMAP='BodyNoLead'Throws the exception object. ROLE='italic'Throw must be implemented in any class derived from ROLE='italic'TXOwl.UnhandledFORMAT="LINESPECIFIC"int Unhandled(TModule* app, unsigned promptResId);REMAP='BodyNoLead'If an exception caught in the message loop has not been handled, ROLE='italic'Unhandled is called. ROLE='italic'Unhandled deletes the window. This type of exception could occur if a window can't be created.TMenu::TXMenu classMOREINFO="NONE"menu.h REMAP='Body'A nested class, ROLE='italic'TXMenu describes an exception that occurs when a menu item cannot be constructed.Public constructorsConstructorsFORMAT="LINESPECIFIC"TXMenu(unsigned resId = IDS_GDIFAILURE);REMAP='BodyNoLead'Constructs a ROLE='italic'TXMenu exception object with a default IDS_GDIFAILURE message.Public member functionsCloneFORMAT="LINESPECIFIC"TXOwl* Clone( );REMAP='BodyNoLead'Makes a copy of the exception object.ThrowFORMAT="LINESPECIFIC"void Throw( );REMAP='BodyNoLead'Throws a ROLE='italic'TXMenu exception.TXOutOfMemory classMOREINFO="NONE"except.hREMAP='Body'Describes an exception that results from running out of memory.Public constructorsConstructorsFORMAT="LINESPECIFIC"TXOutOfMemory( );REMAP='BodyNoLead'Constructs a ROLE='italic'TXOutOfMemory object.Public member functionsCloneFORMAT="LINESPECIFIC"TXOwl* Clone( );REMAP='BodyNoLead'Makes a copy of the exception object. ROLE='italic'Clone must be implemented in any class derived from ROLE='italic'TXOwl.ThrowFORMAT="LINESPECIFIC"void Throw( );REMAP='BodyNoLead'Throws the exception object. ROLE='italic'Throw must be implemented in any class derived from ROLE='italic'TXOwl. TXOwl classMOREINFO="NONE"except.hREMAP='Body'ROLE='italic'TXOwl is a parent class for several classes designed to describe exceptions, that is, abnormal conditions outside the program's control. In most cases, you will derive a new class from ROLE='italic'TXOwl instead of using this one directly. The ObjectWindows classes derived from ROLE='italic'TXOwl includeREMAP='Body'ROLE='bold:italic'TXCompatibilityname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'Describes an exception that occurs if ROLE='italic'TModule::Status is not zero.REMAP='Body'ROLE='bold:italic'TValidator::TXValidatorname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'Describes an exception that occurs if there is an invalid validator expression.REMAP='Body'ROLE='bold:italic'TWindow::XWindowname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'Describes an exception that results from trying to create an invalid window.REMAP='Body'ROLE='bold:italic'TGdiObject::TXGdiname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'Describes an exception that results from creating an invalid GDI object.REMAP='Body'ROLE='bold:italic'TApplication::TXInvalidMainWindowname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'Describes an exception that results from creating an invalid main window.REMAP='Body'ROLE='bold:italic'TMenu::XMenuname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'Describes an exception that occurs when a menu object is invalid.REMAP='Body'ROLE='bold:italic'TModule::XInvalidModulename='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'Describes an exception that occurs if a ROLE='italic'TModule object is invalid.REMAP='Body'ROLE='bold:italic'TPrinter::TXPrintername='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'Describes an exception that occurs if a printer DC is invalid.REMAP='Body'ROLE='bold:italic'TXOutOfMemoryname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'Describes an exception that occurs if an out of memory error occurs.REMAP='Body'Each of the exception classes describes a particular type of exception. When your program encounters a given situation that's likely to produce this exception, it passes control to the specified exception-handling object. If you use exceptions in your code, you can avoid having to scatter error-handling procedures throughout your program.REMAP='Body'To create an exception handler, place the keyword ROLE='bold'try before the block of code that might produce the abnormal condition (the code that might generate an exception object) and the keyword ROLE='bold'catch before the block of code that follows the ROLE='bold'try block. If an exception is thrown within the try block, the classes within each of the subsequent ROLE='bold'catch clauses are checked in sequence. The first one that matches the class of the exception object is executed.REMAP='Body'The following example from MDIFILE.CPP, a sample program on your distribution disk, shows how to set up a ROLE='bold'try/ROLE='bold'catch block around the code that might throw an exception.FORMAT="LINESPECIFIC"void TMDIFileApp::CmRestoreState( )
{
char* errorMsg = 0;
ifpstream is(DskFile);
if (is.bad( ))
errorMsg = "Unable to open desktop file.";
// try block of code //
else {
if (Client->CloseChildrenParen) {
try {
is >>* this;
if (is.bad( ))
errorMsg = "Error reading desktop file.";
else
Client->CreateChildren( );
}
// catch block of code //
catch (xalloc) {
Client->CloseChildren( );
errorMsg = "Not enough memory to open file.";
}
}
}
if (errorMsg)
MainWindow->MessageBox(errorMsg, "Error", MB_OK | MB_ICONEXCLAMATION);
}See also REMAP='BodyNoLead'TXBasePublic constructors and destructorConstructorsFORMAT="LINESPECIFIC"TXOwl(const string& msg, unsigned resId = 0);REMAP='BodyNoLead'Constructs a ROLE='italic'TXOwl object with a string message (ROLE='italic'msg).FORMAT="LINESPECIFIC"TXOwl(unsigned resId, TModule* module = ::module);REMAP='BodyNoLead'Loads the string resource identified by the ROLE='italic'resId parameter and uses this resource to initialize the ROLE='italic'TXBase object.DestructorFORMAT="LINESPECIFIC"~TXOwl( );REMAP='BodyNoLead'Destroys a ROLE='italic'TXOwl object.Public data memberResIdFORMAT="LINESPECIFIC"unsigned ResId;REMAP='BodyNoLead'Resource ID for a ROLE='italic'TXOwl object.Public member functionsCloneFORMAT="LINESPECIFIC"TXOwl* Clone( );REMAP='BodyNoLead'Makes a copy of the exception object. ROLE='italic'Clone must be overridden in any class derived from ROLE='italic'TXOwl.GetErrorCodeFORMAT="LINESPECIFIC"unsigned GetErrorCode ( ) const;REMAP='BodyNoLead'Returns the resource ID.ResourceIdToStringFORMAT="LINESPECIFIC"static string ResourceIdToString(bool* found, unsigned resId, TModule* module = ::module);REMAP='BodyNoLead'Converts the resource ID to a string and returns a string that identifies the exception. If the string message cannot be loaded, returns a "not found" message. Sets the ROLE='italic'found parameter to TRUE if the resource is located; otherwise, sets ROLE='italic'found to FALSE.ThrowFORMAT="LINESPECIFIC"void Throw( );REMAP='BodyNoLead'Throws the exception object. ROLE='italic'Throw must be implemented in any class derived from ROLE='italic'TXOwl.UnhandledFORMAT="LINESPECIFIC"virtual int Unhandled(TModule* app, unsigned promptResId);REMAP='BodyNoLead'ROLE='italic'Unhandled is called when an unhandled exception is caught at the main message loop level. vnxxxx view notification constantsMOREINFO="NONE"docview.hREMAP='Body'The ROLE='italic'viewROLE='italic' notification constants are used to notify the view of a given event.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='69*'COLNAME='C2' COLWIDTH='282*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'vnCommitCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Changes are committed to the document.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'vnCustomBaseCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Base event for document notifications.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'vnDocOpened COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Document has been opened.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'vnDocClosed COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Document has been closed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'vnIsDirty COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Is true if uncommitted changes are present.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'vnInvalidateCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Is true if uncommitted changes are present.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'vnIsWindow COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Is true if the HWND passed belongs to this view.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'vnRevertCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Document's previous data is reloaded and overwrites the view's current data.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'vnViewOpenedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A new view has been constructed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'vnViewClosedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A view is about to be destroyed.See alsoREMAP='BodyNoLead'TListView, TEditViewREMAP='NumChapter'ID='X-12571'ObjectWindows event handlersREMAP='Body'These topics include several tables that list predefined ObjectWindows response-table macros and event-handling functions. Each table lists the name of the ObjectWindows macro, any required macro arguments, and the associated event-handling function.REMAP='Body'These button macros handle BN_xxxx notification codes. To determine the name of the notification code that corresponds to the EV_XXXX macro, remove the EV_ prefix. TOCENTRY="1"REMAP='TblCap'ROLE='BOLD'Button notification messagesCOLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='114*'COLNAME='C2' COLWIDTH='108*'COLNAME='C3' COLWIDTH='153*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Macro argumentsCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Response function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_BN_CLICKEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_BN_DISABLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_BN_DOUBLECLICKEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_BN_HILITECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_BN_PAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_BN_UNHILITECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )REMAP='Body'The following macros handle messages that a child window sends to its parent:TOCENTRY="1"REMAP='TblCap'Child ID notification messagesCOLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='138*'COLNAME='C2' COLWIDTH='102*'COLNAME='C3' COLWIDTH='135*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Macro argumentsCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Response function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_CHILD_NOTIFY_AND_CODECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, Code, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName(WPARAM)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_CHILD_NOTIFY_ALL_CODESCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName(UINT)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_NOTIFY_AT_CHILDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Code, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserNameCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_CHILD_NOTIFYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, Code, ROLE='italic'UserNamCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserNameREMAP='Body'These combo box macros handle CBN_xxxx notification codes. To determine the name of the notification code that corresponds to the EV_XXXX macro, remove the EV_ prefix.TOCENTRY="1"REMAP='TblCap'Combo box notification messagesCOLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='114*'COLNAME='C2' COLWIDTH='108*'COLNAME='C3' COLWIDTH='153*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Macro argumentsCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Response function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_CBN_CLOSEUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_CBN_DBLCLKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_CBN_DROPDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_CBN_EDITCHANGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_CBN_EDITUPDATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_CBN_ERRSPACECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_CBN_KILLFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_CBN_SELCHANGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_CBN_SELENDCANCELCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_CBN_SELENDOKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_CBN_SETFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )REMAP='Body'These macros handle WM_COMMAND messages:TOCENTRY="1"REMAP='TblCap'Command messagesCOLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='114*'COLNAME='C2' COLWIDTH='108*'COLNAME='C3' COLWIDTH='153*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Macro argumentsCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Response function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMANDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CMD ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_AND_IDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CMD ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void UserName(WPARAM)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_COMMAND_ENABLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CMD ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void UserName(TCommandEnabler&)REMAP='Body'These macros handle messages generated by the document manager:TOCENTRY="1"REMAP='TblCap'Document manager messagesCOLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='114*'COLNAME='C2' COLWIDTH='108*'COLNAME='C3' COLWIDTH='153*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Macro argumentsCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Response function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OWLDOCUMENTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName(TDocument& document)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OWLNOTIFYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'bool ROLE='italic'UserName(LPARAM&)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OWLVIEWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName(TView& view)REMAP='Body'These macros handle view-related messages generated by the document manager. ROLE='italic'VnHandler is a generic term for the view notification handler function.TOCENTRY="1"REMAP='TblCap'Document view messages COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='162*'COLNAME='C2' COLWIDTH='213*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Response function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_VIEWOPENEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'bool VnViewOpened(TView* view)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_VIEWCLOSEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'bool VnViewClosed(TView* view)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_DOCOPENEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'bool VnDocOpened(int openMode)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_DOCCLOSEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'bool VnDocClosed(int openMode)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_COMMITCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'bool VnCommit(bool force)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_REVERTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'bool VnRevert(bool clear)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_ISDIRTYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'bool VnIsDirty( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VN_ISWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'bool VnIsWindow(HWND hWnd)REMAP='Body'These edit control macros handle EN_xxxx notification codes. To determine the name of the notification code that corresponds to the EV_XXXX macro, remove the EV_ prefix.TOCENTRY="1"REMAP='TblCap'Edit control notification messagesCOLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='114*'COLNAME='C2' COLWIDTH='108*'COLNAME='C3' COLWIDTH='153*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Macro argumentsCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Response function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_EN_CHANGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_EN_ERRSPACECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_EN_HSCROLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_EN_KILLFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_EN_MAXTEXTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_EN_SETFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_EN_UPDATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_EN_VSCROLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )REMAP='Body'These list box macros handle LBN_xxxx notification codes. To determine the name of the notification code that corresponds to the EV_XXXX macro, remove the EV_ prefix.TOCENTRY="1"REMAP='TblCap'List box notification messagesCOLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='114*'COLNAME='C2' COLWIDTH='108*'COLNAME='C3' COLWIDTH='153*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Macro argumentsCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Response function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_LBN_DBLCLKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_LBN_ERRSPACECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_LBN_KILLFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_LBN_SELCANCELCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_LBN_SELCHANGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_LBN_SETFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )REMAP='Body'These macros handle ObjectComponents messages.TOCENTRY="1"REMAP='TblCap'ObjectComponents messages COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='162*'COLNAME='C2' COLWIDTH='213*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Response function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWPARTINVALIDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewPartInvalid(TOcPart far&)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWTITLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"const char far* EvOcViewTitle( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWBORDERSPACEREQ COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewBorderSpaceReq(TRect far* rect)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWBORDERSPACESETCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewBorderSpaceSet(TRect far&)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWDROPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewDrop (TOcDragDrop far&)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWDRAGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewDrag(TOcDragDrop far&)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWSCROLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewScroll (TOcScrollDir)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWGETSCALECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewGetScale(TOcScaleFactor&)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWGETSITERECTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewGetSiteRect(TRect far* )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWSETSITERECTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewSetSiteRect(TRect far*)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWPAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewPaint (TOcViewPaint far&)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWSAVEPARTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewSavePart(TOcSaveLoad far& ocSave)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWLOADPARTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewLoadPart(TOcSaveLoad far& ocLoad)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWINSMENUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewInsMenus (TOcMenuDescr far&)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWSHOWTOOLS,COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewShowTools(TOcToolBarInfo far& tbi)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWGETPALETTECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewGetPalette (LOGPALETTE far* far*)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWCLIPDATA,COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"HANDLE EvOcViewClipData(TOcFormat far&)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWCLOSECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewClose ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWPARTSIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewPartSize(TRect far&)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWOPENDOCCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewOpenDoc(const char far&)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWATTACHWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewAttachWindow( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_VIEWSETSCALECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcViewSetScale(TOcScaleFactor&)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPINSMENUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcAppInsMenus(TOcMenuDescr far&)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPMENUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcAppMenus(TOcMenuDescr far&)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPPROCESSMSGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcAppProcessMsg(MSG far*)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPFRAMERECTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcAppFrameRect(TRect far*)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPBORDERSPACEREQCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcAppBorderSpaceReq(TRect far*)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPBORDERSPACESETCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"bool EvOcAppBorderSpaceSet(TRect far*)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPSTATUSTEXTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"void EvOcAppStatusText(const char far*)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPRESTOREUICOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"void EvOcAppRestoreUI( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPDIALOGHELPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"void EvOcAppDialogHelp(TOcDialogHelp far& dh)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_OC_APPSHUTDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"void EvOcAppShutDown( )REMAP='Body'The following scrollbar control macros handle SB_xxxx notification codes. To determine the name of the notification code that corresponds to the EV_XXXX macro, remove the EV_ prefix.TOCENTRY="1"REMAP='TblCap'Scroll bar notification messagesCOLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='114*'COLNAME='C2' COLWIDTH='108*'COLNAME='C3' COLWIDTH='153*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Macro argumentsCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Response function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_SB_LINEDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_SB_LINEUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_SB_PAGEDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_SB_PAGEUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_SB_TOPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_SB_BOTTOMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_SB_THUMBPOSITIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_SB_ENDSCROLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_SB_BEGINTRACKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, ROLE='italic'UserNameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'UserName( )REMAP='Body'These macros handle Windows messages. These macros are defined in windowev.h. To determine the name of the Windows message that corresponds to the EV_XXXX macro, remove the EV_ prefix. For example, WM_ACTIVATE is the name of the Windows message that the EV_WM_ACTIVATE macro handles. These macros, which crack the standard Windows messages (break the LPARAM and WPARAM parameters into separate parts), take no arguments. They pass the cracked parameters directly to the predefined ROLE='italic'EVxxxx message function. The standard Windows messages are described in your Windows documentation.TOCENTRY="1"REMAP='TblCap'Standard Windows messages COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='159*'COLNAME='C2' COLWIDTH='216*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Response function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_ACTIVATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvActivate(uint active, bool minimized, HWND hWndOther)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_ACTIVATEAPPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvActivateApp(bool active, HANDLE threadId) (ROLE='bold'WIN32 only)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_ACTIVATEAPPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvActivateApp(bool active, HTASK hTask) (ROLE='bold'WIN16 only)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_ASKCBFORMATNAMECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvAskCBFormatName(uint bufLen, char far* buffer)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CANCELMODECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvCancelMode( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CHANGECBCHAINCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvChangeCBChain(uint bufLen, char far* buffer)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CHARCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvChar(uint key, uint repeatCount, uint flags)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CHARTOITEMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int EvCharToItem(uint key, HWND hWndListBox, uint caretPos)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CHILDACTIVATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvChildActivate( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CHILDINVALIDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvChildInvalid(HWND)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CLOSECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvClose( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_COMPACTINGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvCompacting(uint compactRatio)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_COMPAREITEMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'LRESULT EvCompareItem(uint ctrlId, COMPAREITEMSTRUCT far& compareInfo)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CREATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int EvCreate(CREATESTRUCT far &)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_CTLCOLORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HBRUSH EvCtlColor(HDC, HWND hWndChild, uint ctlType)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_DEADCHARCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvDeadChar(uint deadKey, uint repeatCount, uint flags)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_DELETEITEMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvDeleteItem(uint ctrlId, DELETEITEMSTRUCT far& deleteInfo)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_DESTROYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvDestroy( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_DESTROYCLIPBOARDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvDestroyClipboard( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_DEVMODECHANGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvDevModeChange(char far* devMode)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_DRAWCLIPBOARDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvDrawClipboard( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_DRAWITEMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvDrawItem(uint ctrlId, DRAWITEMSTRUCT far& drawInfo)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_DROPFILESCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvDropFiles(TDropInfo dropInfo)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_ENABLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvEnable(bool enabled)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_ENDSESSIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvEndSession(bool endSession)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_ENTERIDLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvEnterIdle(uint source, HWND hWndDlg)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_ERASEBKGNDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'bool EvEraseBkgnd(HDC)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_FONTCHANGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvFontChange( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_GETDLGCODECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'uint EvGetDlgCode(MSG far*)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_GETFONTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HFONT EvGetFont( );COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_GETMINMAXINFOCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvGetMinMaxInfo(MINMAXINFO far &)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_GETTEXTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvGetText(uint bufLen, char far* buffer)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_GETTEXTLENGTHCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'uint EvGetTextLength( ) ROLE='bold'(WIN32 only) COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_HOTKEYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvHotKey(int idHotKey)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_HSCROLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvHScroll(uint scrollCode, uint thumbPos, HWND hWndCtl)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_HSCROLLCLIPBOARDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvHScrollClipboard(HWND hWndCBViewer, uint scrollCode, uint pos)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_ICONERASEBKGNDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvIconEraseBkgnd(HDC)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_INITMENUCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvInitMenu(HMENU)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_INITMENUPOPUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvInitMenuPopup(HMENU hPopupMenu, uint index, bool sysMenu)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_INPUTFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvInputFocus(bool gainingFocus) ROLE='bold'(WIN32 only) COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_KEYDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvKeyDown(uint key, uint repeatCount, uint flags)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_KEYUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvKeyUp(uint key, uint repeatCount, uint flags)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_KILLFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvKillFocus(HWND hWndGetFocus)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_LBUTTONDBLCLKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvLButtonDblClk(uint modKeys, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_LBUTTONDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvLButtonDown(uint modKeys, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_LBUTTONUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvLButtonUp(uint modKeys, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MBUTTONDBLCLKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvMButtonDblClk(uint modKeys, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MBUTTONDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvMButtonDown(uint modKeys, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MBUTTONUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvMButtonUp(uint modKeys, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MDIACTIVATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvMDIActivate(HWND hWndActivated, HWND hWndDeactivated)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MDICREATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'LRESULT EvMDICreate(MDICREATESTRUCT far& createStruct)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MDIDESTROYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvMDIDestroy(HWND hWnd)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MENUCHARCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'uint EvMenuChar(uint nChar, uint menuType, HMENU hMenu)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MENUSELECTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvMenuSelect(uint menuItemId, uint flags, HMENU hMenu)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MEASUREITEMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvMeasureItem(uint ctrlId, MEASUREITEMSTRUCT far& measureInfo)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MOUSEACTIVATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'uint EvMouseActivate(HWND hWndTopLevel, uint hitTestCode, uint msg)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MOUSEMOVECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvMouseMove(uint modKeys, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_MOVECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvMove(TPoint &clientOrigin)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCACTIVATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'bool EvNCActivate(bool active)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCCALCSIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'uint EvNCCalcSize(bool calcValidRects, NCCALCSIZE_PARAMS far &)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCCREATECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'bool EvNCCreate(CREATESTRUCT far &)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCDESTROYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvNCDestroy( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCHITTESTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'uint EvNCHitTest(TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCLBUTTONDBLCLKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvNCLButtonDblClk(uint hitTest, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCLBUTTONDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvNCLButtonDown(uint hitTest, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCLBUTTONUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvNCLButtonUp(uint hitTest, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCMBUTTONDBLCLKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvNCMButtonDblClk(uint hitTest, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCMBUTTONDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvNCMButtonDown(uint hitTest, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCMBUTTONUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvNCMButtonUp(uint hitTest, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCMOUSEMOVECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvNCMouseMove(uint hitTest, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCPAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvNCPaint( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCRBUTTONDBLCLKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvNCRButtonDblClk(uint hitTest, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCRBUTTONDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void void EvNCRButtonDown(uint hitTest, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_NCRBUTTONUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvNCRButtonUp(uint hitTest, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_OTHERWINDOWCREATEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvOtherWindowCreated(HWND hWndOther) ROLE='bold'(WIN32 only) COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_OTHERWINDOWDESTROYEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvOtherWindowDestroyed(HWND hWndOther) ROLE='bold'(WIN32 only) COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_PAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvPaint( ) COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_PAINTCLIPBOARDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvPaintClipboard(HWND, HANDLE hPaintStruct) ROLE='bold'(WIN32 only) COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_PAINTICONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvPaintIcon( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_PALETTECHANGEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvPaletteChanged(HWND hWndPalChg)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_PALETTEISCHANGINGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvPaletteIsChanging(HWND hWndPalChg)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_PARENTNOTIFYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvParentNotify(uint event, uint childHandleOrX, uint childIDOrY)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_POWERCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int EvPower(uint powerEvent)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_QUERYDRAGICONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HANDLE EvQueryDragIcon( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_QUERYENDSESSIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'bool EvQueryEndSession( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_QUERYNEWPALETTECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'bool EvQueryNewPalette( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_QUERYOPENCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'bool EvQueryOpen( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_RBUTTONDBLCLKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvRButtonDblClk(uint modKeys, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_RBUTTONDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvRButtonDown(uint modKeys, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_RBUTTONUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvRButtonUp(uint modKeys, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_RENDERALLFORMATSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvRenderAllFormats( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_RENDERFORMATCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvRenderFormat(uint dataFormat)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SETCURSORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'bool EvSetCursor(HWND hWndCursor, uint hitTest, uint mouseMsg)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SETFOCUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvSetFocus(HWND hWndLostFocus)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SETFONTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvSetFont(HFONT hFont, bool redraw)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SETTEXTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvSetText(char far* text)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SHOWWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvShowWindow(bool show, uint status)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvSize(uint sizeType, TSize& size)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SIZECLIPBOARDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvSizeClipboard(HWND hWndViewer, HANDLE hRect)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SPOOLERSTATUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvSpoolerStatus(uint jobStatus, uint jobsLeft)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SYSCHARCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvSysChar(uint key, uint repeatCount, uint flags)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SYSCOLORCHANGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvSysColorChange( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SYSCOMMANDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvSysCommand(uint cmdType, TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SYSDEADCHARCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvSysDeadChar(uint key, uint repeatCount, uint flags)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SYSKEYDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvSysKeyDown(uint key, uint repeatCount, uint flags)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SYSKEYUPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvSysKeyUp(uint key, uint repeatCount, uint flags)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_SYSTEMERRORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvSystemError(uint error)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_TIMECHANGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvTimeChange( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_TIMERCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvTimer(uint timerId)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_VKEYTOITEMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int EvVKeyToItem(uint key, HWND hWndListBox, uint caretPos)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_VSCROLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvVScroll(uint scrollCode, uint thumbPos, HWND hWndCtl)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_VSCROLLCLIPBOARDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvVScrollClipboard(HWND hWndCBViewer, uint scrollCode, uint pos)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_WINDOWPOSCHANGEDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvWindowPosChanged(WINDOWPOS far &windowPos)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_WINDOWPOSCHANGINGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvWindowPosChanging(WINDOWPOS far &windowPos)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_WM_WININICHANGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void EvWinIniChange(char far* section)REMAP='Body'These macros handle WM_VBXFIREEVENT messages generated by VBX controls. ROLE='italic'EvHandler is a generic term for a specific VBX control message (such as ROLE='italic'EvClick).TOCENTRY="1"REMAP='TblCap'VBX messagesCOLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='114*'COLNAME='C2' COLWIDTH='108*'COLNAME='C3' COLWIDTH='153*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Macro argumentsCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Response function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VBXEVENTNAMECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, event, ROLE='italic'EvHandler COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'EvHandler(VBXEVENT FAR *event) COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_VBXEVENTINDEXCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ID, event, ROLE='italic'EvHandler COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'void ROLE='italic'EvHandler(VBXEVENT FAR *event) REMAP='Body'These macros handle user-defined messages:TOCENTRY="1"REMAP='TblCap'User-defined messagesCOLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='114*'COLNAME='C2' COLWIDTH='108*'COLNAME='C3' COLWIDTH='153*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Macro argumentsCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Response function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_MESSAGECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'UserMessage, ROLE='italic'UserName COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'LRESULT ROLE='italic'UserName(WPARAM,LPARAM)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EV_REGISTEREDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Registered name, ROLE='italic'UserName COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'LRESULT ROLE='italic'UserName(WPARAM,LPARAM)REMAP='Body'Some event-handling functions or messages have no predefined names. In these cases, the generic term ROLE='italic'UserName is used to indicate that you can use any function name you want to as long as the function's signature matches the signature required by the response table macro. Similarly, the term ROLE='italic'UserMessage indicates that you can define your own message ID.REMAP='Body'The descriptions of these macros and functions use the following conventions when listing the arguments of the message macros:MARK='bullet'REMAP='Bullet1'ROLE='italic'ID refers to the child window's ID (for example, ID_GROUPBOX)REMAP='Bullet1'ROLE='italic'CMD ID refers to the command ID (for example, CM_FILENEW)REMAP='Bullet1'ROLE='italic'Code refers to the notification code (for example, BN_CLICKED) that is being sent.REMAP='NumChapter'ID='X-37947'ObjectWindows dispatch functionsREMAP='Body'Dispatch functions separate the ROLE='italic'lParam and ROLE='italic'wParam parameters of Windows messages into their respective data types and pass control to an ObjectWindows member function.REMAP='Body'For example, when Windows sends an application a WM_CTLCOLOR message, the ROLE='italic'wParam is really an HDC, and the ROLE='italic'lParam has a HWND and a ROLE='bold'uint hidden inside. After the dispatch function cracks the ROLE='italic'wParam and ROLE='italic'lParam parameters into their constituent parts, it dispatches the Windows WM_CTLCOLOR message to the following ObjectWindows member function:FORMAT="LINESPECIFIC"HBRUSH EvCtlColor(HDC, HWND, uint);REMAP='Body'Although dispatch functions are written for specific Windows API messages, they have no knowledge of the actual Windows messages they are cracking. Instead, at run time, TEventHandler::Dispatch calls the appropriate dispatch function which then cracks the message and calls the appropriate member function, using the response table's ROLE='italic'pmf (pointer to a member function). These dispatch functions are never called directly.REMAP='Body'The following four parameters are common to all dispatch functions:MARK='bullet'REMAP='Bullet1'ROLE='italic'GENERIC& generic is the pointer to the object (for example, ROLE='italic'TEdit).REMAP='Bullet1'ROLE='italic'GENERIC::*ROLE='italic'pmf is the pointer to the member function (for example, ROLE='italic'EvActivate).REMAP='Bullet1'WPARAM is one of the message parameters the dispatch function cracks.REMAP='Bullet1'LPARAM is one of the message parameters the dispatch function cracks.REMAP='Body'The name of the dispatch function used in the response table entry or macro depends on the type of message cracking the function performs. The first letter of the name indicates the return type (for example, U indicates an unsigned integer). The second group of letters signifies the arguments of the function (for example, ROLE='italic'POINT of type TPOINT, or U of type ROLE='bold'uint). The following table lists the abbreviations of the member functions' signatures and their corresponding data types.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='69*'COLNAME='C2' COLWIDTH='138*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ROLE='BOLD'AbbreviationCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Data typeVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'iCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='bold'intCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'vCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='bold'voidCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HANDLE (same as ROLE='bold'uint in size)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'I32COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='bold'int32COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'POINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TPoint& (ROLE='italic'TPoint object constructed)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'POINTERCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='bold'void* (model's ambient size)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'UCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='bold'uintREMAP='Body'Message crackers that serve customized messages have names based on the specific message they crack. For example, the message cracker for WM_MDIACTIVATE messages has the following prototype:FORMAT="LINESPECIFIC"int32_v_MdiActivate_Dispatch(GENERIC& generic, HBRUSH (GENERIC::*pmf)(uint, uint), uint wParam, int32 lParam);REMAP='Body'ObjectWindows uses the same dispatch functions for messages that require the same type of cracking. For example, both the WM_HSCROLL and WM_VSCROLL event handlers have MOREINFO="NONE"void (*)( uint, uint, HWND) as their signature. The Windows message also has the ROLE='italic'wParam and ROLE='italic'lParam parameters in the same place. Therefore, ObjectWindows uses the same dispatch functions for both of these messages. REMAP='Body'The following aliases have been defined for purposes of backward compatibility:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='202*'COLNAME='C2' COLWIDTH='156*'VALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"#define HBRUSH_HDC_W_U_DispatchCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE" U_U_U_U_DispatchCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"#define LRESULT_U_U_W_DispatchCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"I32_MenuChar_DispatchCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"#define LRESULT_WPARAM_LPARAM_DispatchCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE" I32_WPARAM_LPARAM_DispatchCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"#define v_U_B_W_DispatchCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"v_Activate_DispatchCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"#define v_W_W_DispatchCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MOREINFO="NONE"v_MdiActivate_DispatchSee alsoREMAP='BodyNoLead'TEventHandlerList of ObjectWindows dispatch functionsMOREINFO="NONE"i_LPARAM_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 i_LPARAM_Dispatch(GENERIC& generic, int (GENERIC::*pmf)(int32), uint wParam, int32 lParam);FORMAT="LINESPECIFIC"Passes ROLE='italic'lParam as an ROLE='bold'int32 and returns an ROLE='bold'int.i_U_W_U_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 i_U_W_U_Dispatch(GENERIC& generic, int (GENERIC::*pmf)(uint, uint, uint), uint wParam, int32 lParam);REMAP='BodyNoLead'For Win32, passes ROLE='italic'wParam.lo (the LOWORD of ROLE='italic'wParam) as a ROLE='bold'uint, ROLE='italic'lParam as a ROLE='bold'uint and ROLE='italic'wParam.hi (the HIWORD of ROLE='italic'wParam) as a ROLE='bold'uint and returns an ROLE='bold'int. For Win16, passes ROLE='italic'wParam as a ROLE='bold'uint, ROLE='italic'lParam.lo as a ROLE='bold'uint and ROLE='italic'lParam.hi as a ROLE='bold'uint and returns an ROLE='bold'int. This is a semi-customized dispatch function used for WM_CHARTOITEM and WM_KEYTOITEM messages.i_WPARAM_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 i_WPARAM_Dispatch(GENERIC& generic, int (GENERIC::*pmf)(uint), uint wParam, int32 lParam);REMAP='BodyNoLead'Passes ROLE='italic'wParam as a ROLE='bold'uint and returns an ROLE='bold'int.I32_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 I32_Dispatch(GENERIC& generic, int32 (GENERIC::*pmf)( ), uint, int32);REMAP='BodyNoLead'This dispatcher passes nothing and returns an ROLE='bold'int32.I32_LPARAM_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 I32_LPARAM_Dispatch(GENERIC& generic, int32 (GENERIC::*pmf)(int32), uint, int32 lParam);FORMAT="LINESPECIFIC"This dispatcher passes ROLE='italic'lParam as an ROLE='bold'int32 and returns an ROLE='bold'int32.I32_WPARAM_LPARAM_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 I32_WPARAM_LPARAM_Dispatch(GENERIC& generic, int32 (GENERIC::*pmf)(uint, int32), uint wParam, int32 lParam);REMAP='BodyNoLead'This dispatcher passes ROLE='italic'wParam as a ROLE='bold'uint and ROLE='italic'lParam as an ROLE='bold'int32, and returns an ROLE='bold'int32.I32_MenuChar_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 I32_MenuChar_Dispatch(GENERIC& generic, uint (GENERIC::*pmf) (uint, uint, uint), uint wParam, int32 lParam);REMAP='BodyNoLead'Cracker for WM_PARENTNOTIFY messages. Passes three ROLE='bold'uints and returns an ROLE='bold'int32. Under Win32, the first ROLE='bold'uint is ROLE='italic'wParam.lo, the second ROLE='bold'uint is ROLE='italic'wParam.hi, and the ROLE='bold'uint is ROLE='italic'lParam. Under Win 16, the first ROLE='bold'uint is ROLE='italic'wParam, the second ROLE='bold'uint is ROLE='italic'lParam.lo, and the third ROLE='bold'uint is ROLE='italic'lParam.hi.I32_U_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 I32_U_Dispatch(GENERIC& generic, int32 (GENERIC::*pmf)(uint), int32 lParam);REMAP='BodyNoLead'This dispatcher passes ROLE='italic'lParam and ROLE='bold'uint and returns an ROLE='bold'int32.U_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 U_Dispatch(GENERIC& generic, uint (GENERIC::*pmf) ( ), uint wParam, int32 lParam);REMAP='BodyNoLead'Passes no arguments and returns a ROLE='bold'uint.U_LPARAM_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 U_LPARAM_Dispatch(GENERIC& generic, uint (GENERIC::*pmf) (int32), uint wParam, int32 lParam);REMAP='BodyNoLead'Passes ROLE='italic'lParam as an ROLE='bold'int32 and returns a ROLE='bold'uint.U_POINT_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 U_POINT_Dispatch(GENERIC& generic, uint (GENERIC::*pmf) (TPoint&), uint wParam, int32 lParam);REMAP='BodyNoLead'Passes ROLE='italic'lParam as a ROLE='italic'TPoint& and returns a ROLE='bold'uint.U_POINTER_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 U_POINTER_Dispatch(GENERIC& generic, uint (GENERIC::*pmf) (void*), uint, int32 lParam);REMAP='BodyNoLead'Passes ROLE='italic'lParam as a ROLE='bold'void* and returns a ROLE='bold'uint. U_U_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 U_U_Dispatch(GENERIC& generic, uint (GENERIC::*pmf) (uint), uint, int32 lParam);REMAP='BodyNoLead'Passes ROLE='italic'lParam as a ROLE='bold'uint and returns a ROLE='bold'uint. U_U_U_U_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 U_U_U_U_Dispatch(GENERIC& generic, uint (GENERIC::*pmf) (uint, uint, uint), uint wParam, int32 lParam);REMAP='BodyNoLead'Passes three ROLE='bold'uints and returns a ROLE='bold'uint. The first ROLE='bold'uint is ROLE='italic'wParam, the second ROLE='bold'uint is the LOWORD of ROLE='italic'lParam, and the third ROLE='bold'uint is the HIWORD of ROLE='italic'lParam.U_WPARAM_LPARAM_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 U_WPARAM_LPARAM_Dispatch(GENERIC& generic, uint (GENERIC::*pmf) (uint, int32), uint wParam, int32 lParam);REMAP='BodyNoLead'Passes ROLE='italic'wParam as a ROLE='bold'uint and ROLE='italic'lParam as an ROLE='bold'int32 and returns a ROLE='bold'uint.v_Activate_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 v_Activate_Dispatch(GENERIC& generic, void (GENERIC::*pmf) (uint, uint, uint), uint wParam, int32 lParam);REMAP='BodyNoLead'Cracker for WM_ACTIVATE messages. Passes three ROLE='bold'uints and always returns 0. Under Win32, the first ROLE='bold'uint is ROLE='italic'wParam.lo, the second ROLE='bold'uint is ROLE='italic'wParam.hi, and the third ROLE='bold'uint is ROLE='italic'lParam. Under Win16, the first ROLE='bold'uint is ROLE='italic'wParam, the second ROLE='bold'uint is ROLE='italic'lParam.hi, and the third ROLE='bold'uint is ROLE='italic'lParam.lo.v_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 v_Dispatch (GENERIC& generic, void (GENERIC::*pmf) ( ), uint uint, int32);REMAP='BodyNoLead'Passes nothing and always returns 0. v_LPARAM_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 v_LPARAM_Dispatch (GENERIC& generic, void (GENERIC::*pmf) (int32), uint wParam, int32 lParam);REMAP='BodyNoLead'Passes ROLE='italic'lParam as an ROLE='bold'int32 and always returns 0.v_MdiActivate_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 v_MdiActivate_Dispatch(GENERIC& generic, void (GENERIC::*pmf)(uint, uint), uint wParam, int32 lParam);REMAP='BodyNoLead'Specifically designed to handle ROLE='italic'EvMDIActivate messages, ROLE='italic'v_MdiActivate_Dispatch passes two ROLE='bold'uints and always returns 0. Under Win32, the first ROLE='bold'uint is ROLE='italic'lParam and the second ROLE='bold'uint is ROLE='italic'wParam. Under Win16, the first ROLE='bold'uint is ROLE='italic'lParam.lo. If ROLE='italic'lParam is nonzero, the second ROLE='bold'uint is ROLE='italic'lParam.hi; otherwise, the second ROLE='bold'uint is ROLE='italic'wParam.v_ParentNotify_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 v_ParentNotify_Dispatch(GENERIC& generic, int(GENERIC::*pmf) (uint, uint, uint), uint wParam, int32 lParam);REMAP='BodyNoLead'Performs message cracking for WM_PARENTNOTIFY messages, which notify a parent window that a given event has occurred in the child window. Passes three ROLE='bold'uints and always returns 0. For Win16, the first ROLE='bold'uint is ROLE='italic'wParam, the second ROLE='bold'uint is ROLE='italic'lParam.lo, and the third ROLE='bold'uint is ROLE='italic'lParam.hi. For Win32, if ROLE='italic'wparam.lo is a mouse message, then the first ROLE='bold'uint is ROLE='italic'wparam, the second ROLE='bold'uint is ROLE='italic'lparam.lo, and the third ROLE='bold'uint is ROLE='italic'lParam.hi. Otherwise, the first ROLE='bold'uint is ROLE='italic'wparam.lo, the second ROLE='bold'uint is ROLE='italic'lParam, and the third ROLE='bold'uint is ROLE='italic'wParam.hi.v_POINT_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 v_POINT_Dispatch (GENERIC& generic, void (GENERIC::*pmf) (TPoint&), uint wParam, int32 lParam);REMAP='BodyNoLead'Passes a reference to a ROLE='italic'POINT (TPoint&) and always returns 0. Under Win32, passes ROLE='italic'lParam; under Win16, passes a reference to ROLE='italic'lParam.v_POINTER_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 v_POINTER_Dispatch(GENERIC& generic, void (GENERIC::*pmf)(void*), uint wParam, int32 lParam);REMAP='BodyNoLead'Passes an ROLE='italic'lParam as a ROLE='bold'void*pointer and always returns 0.v_U_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 v_U_Dispatch(GENERIC& generic, void (GENERIC::*pmf) (uint, int32 lParam);REMAP='BodyNoLead'Passes ROLE='italic'lParam as a ROLE='bold'uint and always returns 0.v_U_POINT_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 v_U_POINT_Dispatch(GENERIC& generic, void (GENERIC::*pmf) (uint, TPoint&), uint wParam, int32 lParam);REMAP='BodyNoLead'Passes ROLE='italic'wparam as a ROLE='bold'uint and ROLE='italic'lParam as a reference to a POINT ROLE='italic'and always returns 0.v_U_U_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 v_U_U_Dispatch(GENERIC& generic, void (GENERIC::*pmf) (uint, uint), uint wParam, int32 lParam);REMAP='BodyNoLead'Passes two ROLE='bold'uint and always returns 0. The first ROLE='bold'uint is ROLE='italic'wParam and the second ROLE='bold'uint is ROLE='italic'lParam.v_U_U_U_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 v_U_U_U_Dispatch(GENERIC& generic, void (GENERIC::*pmf) (uint, uint, uint), uint wParam, int32 lParam);REMAP='BodyNoLead'Passes three ROLE='bold'uints and always returns 0. The first ROLE='bold'uint is ROLE='italic'wParam, the second ROLE='bold'uint is ROLE='italic'lParam.lo and the third ROLE='bold'uint is ROLE='italic'lParam.hi.v_U_U_W_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 v_U_U_W_Dispatch(GENERIC& generic, void (GENERIC::*pmf) (uint, uint, uint), uint wParam, int32 lParam);REMAP='BodyNoLead'Passes three ROLE='bold'uints and always returns 0. Under Win32, the first ROLE='bold'uint is ROLE='italic'wParam.lo., the second ROLE='bold'uint is ROLE='italic'wParam.hi, and the third ROLE='bold'uint is ROLE='italic'lParam Under Win16, the first ROLE='bold'uint is ROLE='italic'wParam, the second ROLE='bold'uint is ROLE='italic'lParam.lo, and the third ROLE='bold'uint is ROLE='italic'lParam.hi. This is a semi-customized message cracker for WM_HSCROLL, WM_VSCROLL, and WM_MENUSELECT messages.v_WPARAM_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 v_WPARAM_Dispatch(GENERIC& generic, void (GENERIC::*pmf) (uint), uint wParam, int32 lParam);REMAP='BodyNoLead'Passes ROLE='italic'wParam as a ROLE='bold'uint and always returns 0.v_WPARAM_LPARAM_DispatchDispatch.hFORMAT="LINESPECIFIC"int32 v_WPARAM_LPARAM_Dispatch(GENERIC& generic, void (GENERIC::*pmf) (uint, int32), uint wParam, int32 lParam);REMAP='BodyNoLead'Passes ROLE='italic'wParam as a ROLE='bold'uint and ROLE='italic'lParam as an ROLE='bold'int32 and always returns 0.REMAP='NumPart'ID='X-29852'ObjectComponents referenceREMAP='NumChapter'ID='X-16968'Overview of ObjectComponentsREMAP='Body'This chapter lists alphabetically the ObjectComponents classes, macros, constants, data types, and registration keys. The header file that defines each entry is listed opposite the entry name. Class members are grouped according to their access specifiersname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'ROLE='bold'public or ROLE='bold'protected. Within these categories, data members, then constructors and destructors, and member functions are grouped separately and listed alphabetically.REMAP='Body'The members listed for each class include only those that are new or redefined in the class itself. Members inherited from a base class are not listed again in the derived class. No private members are listed. In some cases members that are public or protected are omitted as well because they are meant only for the use of other OjectComponents classes. REMAP='Body'Some entries related to ObjectComponents programs appear in other sections of this book. OLE-enabled ObjectWindows classes, such as ROLE='italic'TOleWindow and ROLE='italic'TOleFactory, are listed with the other ObjectWindows classes. Registration macros and some locale items are listed later in the Object Support Library (OSL) reference.ObjectComponents librariesREMAP='Body'These are the libraries an ObjectComponents application uses for linking.COLS='4' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='80*'COLNAME='C2' COLWIDTH='71*'COLNAME='C3' COLWIDTH='75*'COLNAME='C4' COLWIDTH='146*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ROLE='BOLD'Medium modelCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Large model COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'DLL librariesCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OCFWM.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'OCFWL.LIBCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'OCFWI.LIBCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body' COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OWLWM.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'OWLWL.LIBCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'OWLWI.LIBCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'ObjectWindowsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BIDSM.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BIDSL.LIBCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'BIDSI.LIBCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'Class librariesCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OLE2W16.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'OLE2W16.LIBCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'OLE2W16.LIBCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'OLE system DLLsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IMPORT.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'IMPORT.LIBCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'IMPORT.LIBCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'Windows system DLLsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MATHWM.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MATHWL.LIBCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'Math supportCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CWM.LIBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CWL.LIBCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'CRTLDLL.LIBCOLNAME='C4' MOREROWS='0' NAMEEND='C4' NAMEST='C4' ROTATE='0'REMAP='Tbl.Body'C run-time librariesObjectComponents header filesMOREINFO="NONE"REMAP='Body'Header files, located in your INCLUDE/OCF subdirectory, contain declarations for class functions and definitions for data types and constants.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='51*'COLNAME='C2' COLWIDTH='324*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'FileCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'ContentsVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'appdesc.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TAppDescriptor, TComponentFactoryCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'autodefs.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Classes and ROLE='bold'structs used for automationCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'automacr.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Macros for automation declarations and definitionsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocapp.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'OC_APPxxxx messages, ROLE='italic'TOcApp, TOcFormatName, TOcHelp, TOcMenuDescr, ROLE='italic'TOcModule, ROLE='italic'TOcNameList, TOcRegistrar, WM_OCEVENT messageCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocapp.rhCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'IDS_CFxxxx resource IDs for strings describing standard Windows clipboard formatsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocdefs.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TXObjComp, HR_xxxx result codes, declaration specifiersCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocdoc.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TOcDocumentCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocfevx.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message cracker macros for WM_OCEVENT messagesCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocfpch.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='bold'#include statements for all ObjectComponents headers, used with pre-compiled headersCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocobject.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TOcAspect, TOcDialogHelp, TOcDropAction, TOcInitHow, TOcInitInfo, TOcInitWhere, TOcInvalidate, TOcPartName, TOcScrollDirCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocpart.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TOcPart, TOcPartCollection, TOcPartCollectionIter, TOcVerbCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocreg.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'OCxxxx global functions, ocrxxxx registration constants, ROLE='italic'TAppModeROLE='bold' enum, ROLE='italic'TRegistrar, ROLE='italic'TXRegistryCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocremvie.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TOcRemViewCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocstorag.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TOcStream, TOcStorageCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocview.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'OC_VIEWxxxx messages, ROLE='italic'TOcDragDrop, TOcFormat, TOcFormatList, TOcFormatListIter, ROLE='italic'TOcSaveLoad, TOcScaleFactor, TOcToolBarInfo, TOcView, TOcViewPaintCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'oleutil.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DECLARE_COMBASES# macros, ROLE='italic'TOleAllocator, ROLE='italic'TUnknown, ROLE='italic'TXOleGeneral OLE classes, macros, and type definitionsMOREINFO="NONE"REMAP='Body'ObjectComponents provides the following utility items for use in building OLE applications, whether they support linking and embedding or automation.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='114*'COLNAME='C2' COLWIDTH='261*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ItemCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HR_xxxx macrosCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Return values from OLE functionsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'_ICLASS macroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifier for declaring a class that implements an OLE interfaceCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'_IFUNC macroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifier for declaring OLE functionsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'_OCFxxxx macrosCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifiers for declaring ObjectComponents classesCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TComponentFactory typedefCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Callback function where an application creates objects that OLE requestsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TLocaleId typedefCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data type for language setting identifiersCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOleAllocator classCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Establishes a memory allocator for OLE to useCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TUnknown classCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Implements the fundamental ROLE='italic'IUnknown interface required of all OLE objectsGlobal utility functionsMOREINFO="NONE"REMAP='Body'The items in this table are utility functions that ObjectComponents declares globally.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='60*'COLNAME='C2' COLWIDTH='315*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ItemCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'PurposeVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DynamicCastCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Converts a pointer from one type to another if both types are related through inheritanceCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MostDerivedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Returns a pointer to the most derived class type that fits a given objectObjectComponents exception classesMOREINFO="NONE"REMAP='Body'ObjectComponents throws the types of exceptions shown in this list. All the exception classes derive from TXBase.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='57*'COLNAME='C2' COLWIDTH='306*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ClassCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'PurposeVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TXAuto COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Exceptions that occur during automationCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TXObjCompCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Exceptions that occur during ObjectComponents linking and embedding operationsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TXOleCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Exceptions that occur while processing OLE API commandsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TXRegistryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Exceptions that occur while using the system registration databaseAutomation classesMOREINFO="NONE"REMAP='Body'ObjectComponents provides the following classes that support automation. COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ClassCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'PurposeVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoBaseCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Base class for deriving automated objectsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoCommandCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Holds all the data for one command received by an automation serverCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoEnumerator<>COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Lets an automation controller enumerate items in a server's collectionCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoIteratorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Lets an automation server iterate items in an automated collectionCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoObject<>COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Creates a smart pointer to an automated objectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoObjectByVal<>COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Lets an automation server automate a method that returns an object by value (not by reference)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoObjectDeleteCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Lets an automation server automate a method that returns an objectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoProxyCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Base class for deriving the C++ objects an automation controller creates to represent the OLE objects it wants to controlCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoStackCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Holds a set of ROLE='italic'TAutoCommand objects each representing a command received by an automation serverCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoValCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Holds the data from a VARIANT union, the data format OLE uses for sending automation commandsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TRegistrarCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Manages system registration tasks for an automation applicationAutomation enumerated types and type definitionsMOREINFO="NONE"REMAP='Body'ObjectComponents provides the following items that support automation. COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='87*'COLNAME='C2' COLWIDTH='138*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ItemCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'PurposeVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AutoDataType enumCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Identifiers for automation data typesCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ObjectPtr typedefCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='bold'void pointer to a C++ objectAutomation data typesMOREINFO="NONE"REMAP='Body'ObjectComponents provides the following data types that support automation. To use these data types, see Declarations and Definitions.COLS='1' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='91*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Data typeVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoBool structCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoCurrency structCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoDate structCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoDouble structCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoFloat structCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoIntCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoLong structCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoShort structCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoString structCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoStruct structCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoVoid structDeclarations and definitions of automation data typesMOREINFO="NONE"ocf/autodefs.hREMAP='Body'An automation data type is a structure that exists solely to describe a single type of data. Automation definitions use these structures to assist in converting parameters and return values between the VARIANT unions that OLE uses and the C++ data types that your programs use.REMAP='Body'For the most part, although they are structures, you cannot create instances of them because they lack constructors and contain only a single static member. They all derive from TAutoType and inherit its ROLE='italic'GetType method. The only thing most of these structures do is respond to ROLE='italic'GetType calls by returning the static ID for a data type.REMAP='Body'The following table lists C++ data types that might appear in your programs and the corresponding data types that you should use in automation declarations (DECLARE_AUTOCLASS) and definitions. (DEFINE_AUTOCLASS.)COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='67*'COLNAME='C2' COLWIDTH='117*'COLNAME='C3' COLWIDTH='168*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'C++ typeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Declaration typeCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'Definition typeVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'shortCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'shortCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoShortCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'unsigned shortCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'short or unsignedCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoShort or TAutoLongCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'longCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'longCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoShortCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'unsigned longCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'unsigned longCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoLong (treated as signed long)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'intCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'intCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoIntCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'unsigned intCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int or longCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoInt or TAutoLongCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'floatCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'floatCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoFloatCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'doubleCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'doubleCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoDoubleCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bool (or int)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TBoolCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoBoolCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoDateCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TAutoDateCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoDateCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoDate far *COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TAutoDate far*COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoDateRefCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoCurrency far*COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TAutoCurrency far*COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoCurrencyRefCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'char*COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TAutoStringCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoStringCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'const char*COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TAutoStringCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoStringCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'char far*COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TAutoStringCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoStringCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'const char far* COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TAutoStringCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoStringCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'stringCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'stringCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoStringCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'enumCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'short or intCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoShort or user-defined AUTOENUMCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'T*COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TAutoObject<T>COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'T (class T must be automated)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'T&COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TAutoObject<T>COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'T (class T must be automated)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'const T*COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TAutoObject<const T>COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'T (class T must be automated)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'const T&COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TAutoObject<const T> COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'T (class T must be automated)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'T* (returned)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TAutoObjectDelete<T> COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'(C++ object deleted if no refs)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'T& (returned)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TAutoObjectDelete<T>COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'(C++ object deleted if no refs)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'T (returned)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TAutoObjectByVal<T>COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'T (T copied, deleted when refs==0)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'void (no return)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(use AUTOFUNCxV macros)COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoVoidCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'short far*COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'short far*COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoShortRefCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'long far*COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'long far*COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoLongRefCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'float far*COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'float far*COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoFloatRefCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'double far*COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'double far*COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TAutoDouble RefAutomation declaration macrosMOREINFO="NONE"ocf/automacr.hREMAP='Body'To make parts of an automated class accessible to OLE, an automation server adds declaration macros to the declaration of the C++ class and definition macros to the implementation of the C++ class. The declaration macros create command objects for executing commands sent by the controller.REMAP='Body'The block of automation declaration macros always begins with DECLARE_AUTOCLASS. There is no need for a matching END macro to close the declaration.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='117*'COLNAME='C2' COLWIDTH='258*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DECLARE_AUTOCLASS(cls)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The macros that follow declare automatable members of the user-defined class ROLE='italic'cls.Declaration macrosREMAP='BodyNoLead'After DECLARE_AUTOCLASS comes a series of macros, one for each class member that you choose to expose. Which particular macros you choose depends on what the members are.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='84*'COLNAME='C2' COLWIDTH='126*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Declaration macroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MemberVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTODATACOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DataCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOFLAGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A bit flagCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOFUNCCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FunctionCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOITERATORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Iterator objectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOPROPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'PropertyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOSTATCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Static member or global functionCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOTHISCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'*ROLE='bold'thisAUTODETACH macroREMAP='BodyNoLead'In addition, an automation declaration can also include the AUTODETACH macro. This macro does not expose a class member. It invalidates external references when the object is destroyed.Automation definition macrosMOREINFO="NONE"ocf/automacr.hREMAP='Body'To make parts of an automated class accessible to OLE, an automation server adds declaration macros to the declaration of the C++ class and definition macros to the implementation of the C++ class.REMAP='Body'The block of automation definition macros begins with DEFINE_AUTOCLASS and ends with END_AUTOCLASS, unless the object is, inherits from, or delegates to a Component Object Model (COM) object. In that case, the block of automation definition macros begins with DEFINE_AUTOAGGREGATE and ends with END_AUTOAGGREGATE.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='177*'COLNAME='C2' COLWIDTH='198*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DEFINE_AUTOCLASS(cls)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The macros that follow define automatable members of the user-defined class cls.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'END_AUTOCLASS(cls, name, doc, help)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The C++ class cls is exposed to OLE controllers under the name ROLE='italic'name. If the user asks OLE about the object name, the system returns the string in ROLE='italic'doc. If a .HLP file is registered for the object, then the context ID in ROLE='italic'help points to a screen that describes the object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DEFINE_AUTOAGGREGATE(cls, aggregator)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The macros that follow define automatable members of the user-defined class ROLE='italic'cls, which is, inherits from, or delegates to a COM object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'END_AUTOAGGREGATE(cls, name, doc, help)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Same as END_AUTOCLASS.REMAP='Body'Between the DEFINE and END macros comes a series of other macros describing each exposed data member or function. The macros implement methods for a class nested within your automated class. When ObjectComponents receives commands from a controller, it passes them to the nested class. The macros build wrapper functions in the nested class that enable it to call your own class directly.REMAP='Body'Which particular macros you choose depends on what the members are.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='126*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Declaration macroVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Automated applicationCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EXPOSE_APPLICATION MacroCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Auxiliary classCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EXPOSE_DELEGATE MacroCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Base classCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EXPOSE_INHERIT MacroCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Collection iteratorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EXPOSE_ITERATOR MacroCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MethodCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EXPOSE_METHOD MacrosCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Read-only propertyCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EXPOSE_PROPROCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Read-write propertyCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EXPOSE_PROPRWCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Write-only propertyCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EXPOSE_PROPWOCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Shutdown methodCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'EXPOSE_QUITAutomation hook macrosMOREINFO="NONE"ocf/automacr.hREMAP='Body'These macros establish hooks to be invoked every time a particular automation command is executed. They are never used by themselves but always as the last parameter of some other automation declaration macro. If you add one of these hooks to the declaration of some exposed class member, then every time an automation controller attempts to execute that command, ObjectComponents first executes the code in the hook. The code can be a simple expression or it can contain calls to other functions.REMAP='Body'Most of the macros expect to receive some expression or code as a parameter. Often the code or expression in the macro needs to refer to the arguments passed in or to the value of an automated data member. Within the macro expression, write ROLE='italic'Arg1, Arg2, Arg3... to refer to the received arguments. Write ROLE='italic'Val to refer to an automated data member.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='120*'COLNAME='C2' COLWIDTH='256*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTONOHOOKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Use this macro, without arguments, to prevent anyone from hooking the command. Not even ObjectComponents can monitor the call. (For advanced uses only.)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOINVOKE(code)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The code here is executed each time the automation command is executed. Create an AUTOINVOKE hook if you want to override the normal execution sequence.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTORECORD(code)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The code inserted here creates a record of the commands executed so that the sequence can be stored and replayed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOREPORT(code)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The code inserted here returns an error code from the automated member. If ROLE='italic'code evaluates to 0, OLE assumes the command succeeded. If ROLE='italic'code evaluates to a nonzero value, then OLE throws an exception that returns an error code to the controller.REMAP='Tbl.Body'Within the code expression, use ROLE='italic'Val to refer to the actual value returned.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOUNDO(code)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The code inserted here creates a ROLE='italic'TAutoCommand object that will undo the action of the current command.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOVALIDATE(condition)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The code here should evaluate to ROLE='bold'true if the arguments received are valid for the command and ROLE='bold'false otherwise. If the expression returns ROLE='bold'false, OLE throws an exception that returns an error code to the controller application.ExampleREMAP='BodyNoLead'This declaration ensures that an automated data member is never assigned a value outside a given range.FORMAT="LINESPECIFIC"AUTODATA(Number, Number, short,
AUTOVALIDATE(Val>=NUM_MIN && NotTooBig(Val)));Automation proxy macrosMOREINFO="NONE"ocf/automacr.hREMAP='Body'An automation controller creates a proxy object (derived from ROLE='italic'TAutoProxy) to represent an automated OLE object. For every command the controller wants to send the object, it adds a method to the proxy object. The proxy methods mimic the commands the object supports. When the controller calls proxy methods, ObjectComponents sends automation commands through OLE. REMAP='Body'The implementation of a proxy method always contains three macros: an AUTONAMES macro, an AUTOARGS macro, and an AUTOCALL macro. AUTONAMES associates names with arguments. AUTOARGS describes any arguments that do not have names. The use of names makes it possible to send partial sets of arguments and let the server assign default values to the remaining arguments.REMAP='Body'The third macro, AUTOCALL, tells whether the command represents a method or a property of the automated object and whether the command returns a value.REMAP='Body'To generate proxy object declarations and definitions directly, use the TYPEREAD.EXE tool (located in the OCTOOLS subdirectory.) TYPEREAD scans the type library of an automation server and generates complete proxy code for controlling the server.REMAP='Body'You are free to subsititute your own code for the standard macros in order to handle special situations.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='66*'COLNAME='C2' COLWIDTH='309*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTONAMESCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Associates names with arguments so the caller can choose to pass only selected argumentsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOARGSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Describes arguments that do not have namesCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOCALLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Tells whether the command is a method or a property and whether it returns a valueRegistration keysMOREINFO="NONE"REMAP='Body'Most ObjectComponents programs build registration tables describing their OLE capabilities. (Only automation controllers can omit this step.) The registration tables contain keys paired with values. The keys are standard. You decide which ones to register and you supply values for them.REMAP='Body'Which keys you choose depends on whether your application is a server, a container, or an automation program. Some keys must be registered and some are optional. Furthermore, some apply only to the application's primary registration table, and others apply to the tables for each of the application's document types.REMAP='Body'A registration table starts with the BEGIN_REGISTRATION macro and ends with END_REGISTRATION. In between is one macro for each key you want to register. The macro depends on the key. Most keys use the REGDATA macro, but there are others such as REGFORMAT and REGSTATUS.REMAP='Body'If your application is a server, most of the information in its registration tables is recorded in the system's registration database. Putting the information there makes it possible for OLE to learn much about the server without actually loading the application into memory. For example, if an automation controller asks for information about the commands an automation server supports, OLE can locate the server's type library from an entry in the database.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='69*'COLNAME='C2' COLWIDTH='307*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'KeyCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'appnameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A short name for the application.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'aspectallCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Option flags that apply to all presentation aspects.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'aspectcontentCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Option flags for the content view of an object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'aspectdocprintCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Option flags for the printed document view of an object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'aspecticonCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Option flags for the iconic view of an object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'aspectthumbnailCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Option flags for the thumbnail view of an object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'clsidCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A GUID identifying the application.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'cmdlineCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Arguments OLE should place on the command line when it launches the server.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'debugclsidCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A GUID identifying the debugging version of a server. This is always generated internally. You should never specify it directly.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'debugdescCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A ROLE='bold'long string describing the debugging version of a program.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'debuggerCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The file name and command line switches for loading your debugger.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'debugprogidCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A string naming the debugging version of a program. Defining this forces ObjectComponents to register debugging and non-debugging versions.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'descriptionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A string describing the application.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'directoryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The default directory for browsing document files.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'docfilterCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'File specification for listing files created by the application.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'docflagsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Option flags for the application's documents.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'extensionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A three-letter file-name extension for files created by the server.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'filefmtCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Name of default file format.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'formatROLE='italic'nCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A Clipboard format the application supports. (Use REGFORMAT to register Clipboard formats.)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'handler COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A full path pointing to a library that can draw objects created by the server. Defaults to OLE2.DLL.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'helpdirCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Full directory where online Help for the type library resides.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'iconindexCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'An index telling which of the icons in the server's resources represents the type of objects the server produces. (Use REGICON to register an icon.)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'insertableCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates that the application serves its document for linking and embedding in container documents.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'languageCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Locale ID currently in effect. (Set internally during automation.)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'menunameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A short name for the server, used in a container's menu.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'pathCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The path where OLE looks to find the server. This key is set internally during registration.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'permidCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A string that names the application without indicating any version.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'permnameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A string that describes the application without indicating any version.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'progidCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A string uniquely naming the application.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'typehelpCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Name of the file where online Help for the type library resides.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'usageCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates the whether the server can support concurrent clients with a single application instance.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'verbROLE='italic'nCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A string naming an action the server can perform with its objects.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'verbROLE='italic'noptCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Option flags describing the server's verbs. (Use REGVERBOPT to register verb options.)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'versionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Version string for the application and type library.Linking and embedding classesMOREINFO="NONE"REMAP='Body'ObjectComponents provides the following classes for use by applications that support linking and embedding.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ClassCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'PurposeVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcAppCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Connector object that implements BOCOLE interfaces for the applicationCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcDocumentCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Manages the parts in a container's compound documentCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcFormatListCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'List of Clipboard data formats a document supportsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcFormatListIterCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Iterator for the list of Clipboard data formats a document supportsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcFormatNameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Holds strings describing a single data format that an application might encounter on the Clipboard (see ROLE='italic'TOcNameList)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcModuleCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Base class for deriving OLE-enabled application objectsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcNameListCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Contains a collection of strings describing all the data formats that an application might find on the ClipboardCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcPartCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Connector object that a container uses to represent an object linked or embedded in one of its documentsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcPartCollectionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Manages a collection of linked or embedded partsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcPartCollectionIterCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Iterator for the collection of parts linked or embedded in a single documentCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcRegistrarCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Manages OLE registration tasks for a linking and embedding applicationCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcRemViewCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Connector object that a server uses to draw an object linked or embedded in a container's documentCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcScaleFactorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Carries information from a container to a server requesting that linked or embedded objects be drawn to a certain scaleCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcVerbCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Holds information about an action that a server is able to perform with its own objects when they are linked or embedded in a containerCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcViewCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A connector object that an application uses to draw its own documents in its own frame windowREMAP='BodyNoLead'A few of the classes used for linking and embedding implement COM interfaces. (COM stands for Component Object Model. COM is the standard that defines what an OLE object is.) Most of the supported interfaces are not standard OLE interfaces; they are custom interfaces that communicate with OLE through the BOCOLE support library. But like any COM object they do implement ROLE='italic'IUnknown (by deriving from ROLE='italic'TUnknown).REMAP='Body'The classes that define COM objects for linking and embedding are ROLE='italic'TOcApp, TOcView, TOcRemView, and ROLE='italic'TOcPart. These classes connect your application to OLE. They are called ROLE='italic'connector objects. An application must create connector objects in order to interact with other OLE applications.Linking and embedding enumsMOREINFO="NONE"REMAP='Body'ObjectComponents provides the following enumerated types for use by applications that support linking and embedding.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='87*'COLNAME='C2' COLWIDTH='288*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ItemCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcAppMode enumCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Flags identifying the application's running conditionsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcAspect enumCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Flags identifying object presentation aspectsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcDialogHelp enumCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Constants identifying standard OLE dialog boxes where a user can ask for helpCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcDropAction enumCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Constants identifying actions that can result from dropping an object on a windowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcInitHow enumCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Constants identifying the action a container is to take on receiving a new objectname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'either link or embedCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcInitWhere enumCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Constants identifying places the data for an object can resideCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcInvalidate enumCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Flags indicating whether an object is invalid because of a change in its data or just in its appearanceCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcPartName enumCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Constants identifying different strings a container might request when asking for the name of an object linked or embedded in itCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcScrollDir enumCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Constants identifying directions a container might be asked to scroll its windowLinking and embedding messagesMOREINFO="NONE"REMAP='Body'ObjectComponents provides the following messages for use by applications that support linking and embedding.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='69*'COLNAME='C2' COLWIDTH='230*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MessageCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'PurposeVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_APPxxxxCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Messages sent to an application objectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWxxxxCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Messages sent to a view objectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WM_OCEVENTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Carries event signals from ObjectComponents to an applicationLinking and embedding structsMOREINFO="NONE"REMAP='Body'ObjectComponents provides the following structs for use by applications that support linking and embedding.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='87*'COLNAME='C2' COLWIDTH='288*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ItemCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'PurposeVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcDragDrop structCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Holds information a container needs in order to receive an object dropped on its windowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcInitInfo structCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Holds information a container needs in order to place a new object in its documentCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcMenuDescr structCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Holds information about a shared menu where the container and server merge their commands for in-place editingCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcSaveLoad structCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Carries information an application needs to save or load a linked or embedded objectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcToolbarInfo structCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Carries handles to a server's tool bars to be displayed in the container's window during in-place editingCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TOcViewPaint structCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Carries information that tells a server how to repaint a linked or embedded object when the container invalidates part of the object's surfaceocrxxxx constantsMOREINFO="NONE"ocf/ocreg.hREMAP='Body'The ocreg.h header defines a number of constants used in constructing an application's registration tables. These constants all begin with ROLE='italic'ocr. They fall into several groups. Most of them are used with the REGFORMAT macro to describe the kinds of data transfers a document supports.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='99*'COLNAME='C2' COLWIDTH='240*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'GroupCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Aspect constantsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data presentation modes (such as icon, content, or thumbnail)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Clipboard constantsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipboard data formats (such as text, bitmap, or link source)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Direction constantsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data transfer directions (getting or setting)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Limit constantsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Maximum number of items that can be registeredCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Medium constantsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data transfer mediums (such as disk file or Clipboard)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Object status constantsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Aspect options (such as showing icon only or redrawing on resize)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Usage constantsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Support for multiple clients (single use or multiple use)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Verb attributes constantsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Verb option flags (never dirties and show on menu)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Verb menu flagsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Verb display options (such as grayed, disabled, or menu bar break)REMAP='NumChapter'ID='X-33812'ObjectComponents library reference_ICLASS macroMOREINFO="NONE"ocf/oleutil.hREMAP='BodyNoLead'Modifies the declaration of an interface class, one that defines or implements an interface for OLE or for the BOCOLE support library._IFUNC macroMOREINFO="NONE"ocf/oleutil.hREMAP='BodyNoLead'Modifies the declaration of an OLE function. REMAP='Body'The _IFUNC macro controls function calling conventions and export declarations. Placing these macros in a keyword allows the compiler to choose the right combination of modifiers for a particular platform. REMAP='Body'ObjectComponents uses the macro to declare OLE and BOCOLE functions as well as member functions that wrap direct OLE and BOCOLE calls.REMAP='Body'_IFUNC serves the same purpose in Borland headers that the STDMETHODCALLTYPE serves in OLE system headers._OCFxxxx macrosMOREINFO="NONE"ocf/ocfdefs.hREMAP='BodyNoLead'These macros are used internally to declare classes, functions, and data members in ObjectComponents classes. Their definitions vary depending on whether you build a 16- or 32-bit EXE or DLL. Some of them also force the declaration to ROLE='bold'__huge.REMAP='Body'These macros closely match the corresponding _OWLxxxx macros. COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='63*'COLNAME='C2' COLWIDTH='180*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ROLE='BOLD'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'_OCFCLASSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Exports or imports classes for DLLs.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'_OCFDATACOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Exports or imports data members for DLLs.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'_OCFFUNCCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Exports or imports member functions for DLLs.aspectall registration keyMOREINFO="NONE"REMAP='BodyNoLead'Registers option flags that affect all views of an object. The flags control how all views of the object are presented.REMAP='Body'Linking and embedding servers can optionally register aspect status in their document registration tables. Aspect status does not apply to application registration tables, containers, or automation servers.REMAP='Body'To register flags for all aspects, use the REGSTATUS macro, passing "all" as the first parameter and an ocrROLE='italic'xxxx object status ROLE='bold'enum value as the second parameter.FORMAT="LINESPECIFIC"REGSTATUS(all, ocrNoSpecialRendering)See alsoREMAP='BodyNoLead'aspectcontent registration key, aspectdocprint registration key, aspecticon registration key, aspectthumbnail registration key, ocrxxxx Object Status enum, REGSTATUS macroaspectcontent registration keyMOREINFO="NONE"REMAP='BodyNoLead'Registers option flags for the content view of an object. The content view usually shows all the data in an object (or as much of the data as fits in the available space.) The option flags control how the content view is used.REMAP='Body'Linking and embedding servers can optionally register aspect status in their document registration tables. Aspect status does not apply to application registration tables, containers, or automation servers.REMAP='Body'To register flags for the content aspect, use the REGSTATUS macro, passing "content" as the first parameter and an ROLE='italic'ocrxxxx object status ROLE='bold'enum value as the second parameter.FORMAT="LINESPECIFIC"REGSTATUS(content, ocrRecomposeOnResize)See alsoREMAP='BodyNoLead'aspectall registration key, aspectdocprint registration key, aspecticon registration key, aspectthumbnail registration key, ocrxxxx object status enum, REGSTATUS macroaspectdocprint registration keyMOREINFO="NONE"REMAP='BodyNoLead'Registers option flags that affect the printed document view of an object. The printed document view usually approximates how the object will appear if sent to the current printer. The option flags control how the docprint view is presented.REMAP='Body'Linking and embedding servers can optionally register aspect status in their document registration tables. Aspect status does not apply to application registration tables, containers, or automation servers.REMAP='Body'To register flags for the printed document aspect, use the REGSTATUS macro, passing "docprint" as the first parameter and an ROLE='italic'ocrxxxx object status ROLE='bold'enum value as the second parameter.See alsoREMAP='BodyNoLead'aspectall registration key, aspectcontent registration key, aspecticon registration key, aspectthumbnail registration key, ocrxxxx object status enum, REGSTATUS macroaspecticon registration keyMOREINFO="NONE"REMAP='BodyNoLead'Registers option flags that affect the iconic view of an object. The icon view, rather than showing the object's contents, displays an icon that represents a particular kind of object. The option flags control how the icon view is presented.REMAP='Body'Linking and embedding servers can optionally register aspect status in their document registration tables. Aspect status does not apply to application registration tables, containers, or automation servers.REMAP='Body'To register flags for the icon aspect, use the REGSTATUS macro, passing "icon" as the first parameter and an ROLE='italic'ocrxxxx object status ROLE='bold'enum value as the second parameter.FORMAT="LINESPECIFIC"REGSTATUS(icon, ocrOnlyIconic)See alsoREMAP='BodyNoLead'aspectall registration key, aspectcontent registration key, aspectdocprint registration key, aspectthumbnail registration key, ocrxxxx object status enum, REGSTATUS macroaspectthumbnail registration keyMOREINFO="NONE"REMAP='BodyNoLead'Registers option flags that affect the thumbnail view of an object. The thumbnail view usually shows a miniature representation of the object's contents. The flags control how the thumbnail view is presented.REMAP='Body'Linking and embedding servers can optionally register aspect status in their document registration tables. Aspect status does not apply to application registration tables, containers, or automation servers.REMAP='Body'To register flags for the thumbnail aspect, use the REGSTATUS macro, passing "thumbnail" as the first parameter and an ROLE='italic'ocrxxxx object status ROLE='bold'enum value as the second parameter.See alsoREMAP='BodyNoLead'aspectall registration key, aspectcontent registration key, aspectdocprint registration key, aspecticon registration key, ocrxxxx object status enum, REGSTATUS macroAUTOARGS macrosMOREINFO="NONE"ocf/automacr.hREMAP='Body'An automation controller uses AUTOARGS to implement methods in its proxy objects. AUTOARGS macros list all the arguments that the controller passes to an automation command, identifying them by the dummy parameter names used in the function definition.REMAP='Body'AUTOARGS macros are the second in three sets of macros used to implement methods in proxy objects. The first, AUTONAMES assigns names to any arguments that the controller wants to reference by name. The third set, AUTOCALL, tells whether the command is a method or a property and whether it returns a value.REMAP='Body'The automacr.h header defines AUTOARG macros that accept up to ten arguments. To generate versions that accept more arguments, use the MACROGEN.EXE utility.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='105*'COLNAME='C2' COLWIDTH='229*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOARGS0( )COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The automation command has no required arguments.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOARGS1(a1)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The automation command requires argument ROLE='italic'a1.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOARGS2(a1, a2)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The automation command requires arguments ROLE='italic'a1 and ROLE='italic'a2.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOARGS3(a1, a2, a3)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The automation command requires arguments ROLE='italic'a1, a2, and ROLE='italic'a3.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOARGS4(a1, a2, a3, a4)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The automation command requires arguments ROLE='italic'a1, a2, a3, and ROLE='italic'a4.AUTOCALL_xxxx macrosMOREINFO="NONE"ocf/automacr.hREMAP='Body'AUTOCALL is the third of three sets of macros that an automation controller uses to implement automation commands in proxy objects. The first two sets, AUTONAMES and AUTOARGS, describe the command's arguments. AUTOCALL macros tell whether the command represents a method or a property of the automated object and whether the command returns a value. Commands whose return value is itself an automated object must also be specially marked.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='132*'COLNAME='C2' COLWIDTH='243*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOCALL_METHOD_REF(prx)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The command is a method that returns a reference to an object. ROLE='italic'prx is an object derived from ROLE='italic'TAutoProxy and receives the return value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOCALL_METHOD_RETCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The command is a method that returns a value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOCALL_METHOD_VOIDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The command is a method that returns no value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOCALL_PROP_GETCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The command returns the value of a property of the automated object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOCALL_PROP_REF(prx)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The command returns the value of a property and the value is itself an object. ROLE='italic'prx is an object derived from ROLE='italic'TAutoProxy and receives the return value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOCALL_PROP_SET(val)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The command assigns ROLE='italic'val to a property of the automated object._AUTOCLASS macroMOREINFO="NONE"ocf/autodefs.hREMAP='Body'_AUTOCLASS is the class modifier that ObjectComponents uses to declare the base classes and member objects it creates inside your classes for automation. As long as your own classes use the application's ambient memory model, you do not have to worry about _AUTOCLASS, which by default is defined as nothing. If, however, you declare your automation classes with a modifier that differs from the ambient class model, then the classes (such as ROLE='italic'TAutoBase) that ObjectComponents defines must be modified to match. To accomplish the modification, define _AUTOCLASS yourself. For example:FORMAT="LINESPECIFIC"#define _AUTOCLASS __farAUTODATA macrosMOREINFO="NONE"ocf/automacr.hREMAP='Body'An automation server uses AUTODATA macros in an automation declaration (after DECLARE_AUTOCLASS) to make data members of an automated class accessible through OLE.REMAP='Body'Both forms take the same four parameters. ROLE='italic'name is the internal name that you assign to the data member. ObjectComponents uses the internal names to keep track of all the automated members. The only other place you use this name is in the subsequent automation definition (after DEFINE_AUTOCLASS).REMAP='Body'ROLE='italic'member is the C++ name of the data member, the name you normally use in your source code. REMAP='Body'In most cases, ROLE='italic'type should be a normal C++ data type, but if the data member is a string or an object then specify ROLE='italic'TAutoString or one of the ROLE='italic'TAutoObject classes instead. See Automation Data Types for more details.REMAP='Body'ROLE='italic'options is a place to insert a hook, code to be called each time the automation command is executed. Hooks can record, undo, or validate commands. See Automation Hook Macros for more details. ROLE='italic'options can be omitted, but a comma must follow the preceding argument anyway.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='174*'COLNAME='C2' COLWIDTH='201*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTODATA(name, member, type, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The command permits read and write access to a data member.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTODATARO(name, member, type, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The command permits read-only access to a data member.AutoDataType enumMOREINFO="NONE"ocf/autodefs.hFORMAT="LINESPECIFIC"enum AutoDataTypeREMAP='BodyNoLead'These flags identify automation data types. The types correspond to standard OLE 2 data types. The ROLE='italic'TAutoVal class uses the flags to guide its conversions to and from the VARIANT unions that OLE passes between programs.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='57*'COLNAME='C2' COLWIDTH='120*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atVoidCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='bold'voidCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atNullCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'SQL-style nullCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atShortCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'2-byte ROLE='bold'signed intCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atLongCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'4-byte ROLE='bold'signed intCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atFloatCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'4-byte realCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atDoubleCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'8-byte realCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atCurrencyCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'currencyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atDatetimeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'datetime as ROLE='bold'doubleCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atStringCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BSTR, string preceded by lengthCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atObjectCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'IDispatch*COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atErrorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'SCODECOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atBoolCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='bold'True = -1, ROLE='bold'false = 0COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atVariantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VARIANT FAR*COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atUnknownCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'IUnknown* COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atTypeMaskCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Base type code without bit flags.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atOLE2MaskCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Type code with bit flags.REMAP='Body'The preceding flags are mutually exclusive. A value can belong to only one type. Any of the type flags can, however, be combined with the following bit flags.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='57*'COLNAME='C2' COLWIDTH='162*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Bit FlagCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atByRefCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The value is a reference to an object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'atEnumCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The value is an enumeration of some type.See alsoREMAP='BodyNoLead'TAutoVal class, TAutoEnumTpublic constructorAUTODETACH macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"AUTODETACHREMAP='BodyNoLead'An automation server uses this macro in its automation declaration (after DECLARE_AUTOCLASS) to ensure that whenever the automated object is destroyed OLE receives notification. Sending the object's obituary to OLE prevents crashes should a controller attempt to manipulate the nonexistent object. The obituary is necessary only if the logic of your program makes it possible for the automated object to be destroyed by non-automated means while still connected to the controller.REMAP='Body'Deriving a class from ROLE='italic'TAutoBase serves exactly the same purpose. The advantage of AUTODETACH is that you can use it to automate classes you did not create and whose derivation you cannot control.AUTOENUM macrosMOREINFO="NONE"ocf/automacr.hREMAP='Body'An automation server uses the AUTOENUM macros to expose enumerated values to automation controllers. For example, if the server wants the controller to pass actions into a DoThis command, the server might create an enumerated type containing values such as Play, Stop, and Rewind. To make these values available to the controller, the server must create an AUTOENUM table. In this example, the table consists of three AUTOENUM macros, one for each enumerated value.FORMAT="LINESPECIFIC"DEFINE_AUTOENUM(TAction, TAutoShort);
AUTOENUM("Play", Play)
AUTOENUM("Stop", Stop)
AUTOENUM("Rewind", Rewind);
END_AUTOENUM(TAction, TAutoShort)COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='126*'COLNAME='C2' COLWIDTH='249*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DEFINE_AUTOENUM(cls, type)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Begins an AUTOENUM table. ROLE='italic'cls is the name of the automated enumeration type (not the name of the C++ enumerated type). You invent this name. The only other place it appears is in the application's automation definition.REMAP='Tbl.Body'ROLE='italic'type is the automation data type that describes what kind of values are being enumerated. For more information, see Automation Data Types.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body' AUTOENUM(name, val)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'name is the public string that a controller uses to refer to one in a series of enumerated values. val is the internal value the server associates with ROLE='italic'name.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body' END_AUTOENUM(cls, type)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Ends an AUTOENUM table. ROLE='italic'cls and ROLE='italic'type are the same as for DEFINE_AUTOENUM.AUTOFLAG macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"AUTOFLAG(name, data, mask, options)REMAP='BodyNoLead'An automation server uses AUTOFLAG in an automation declaration (after DECLARE_AUTOCLASS) to expose for automation a single bit from a set of bit flags.REMAP='Body'ROLE='italic'name is an internal name that you assign to the bit. ObjectComponents uses the internal names to keep track of all the automated members. The only other place you use this name is in the subsequent automation definition (after DEFINE_AUTOCLASS.)REMAP='Body'ROLE='italic'data is the C++ name of a data member that holds a set of bit flags.REMAP='Body'ROLE='italic'mask is a value with one bit set marking the position of the exposed flag in ROLE='italic'data.REMAP='Body'ROLE='italic'options is a place to insert a hook, code to be called each time the automation command is executed. Hooks can record, undo, or validate commands. See Automation Hook Macros for more details. options can be omitted, but a comma must follow the preceding argument anyway.AUTOFUNC macrosMOREINFO="NONE"ocf/automacr.hREMAP='Body'An automation server uses AUTOFUNC macros in an automation declaration (after DECLARE_AUTOCLASS) to make member functions of an automated class accessible through OLE.REMAP='Body'In every version of the macro the first parameter, ROLE='italic'name, is an internal name that you assign to the function. ObjectComponents uses the internal names to keep track of all the automated members. The only other place you use this name is in the subsequent automation definition (after DEFINE_AUTOCLASS).REMAP='Body'ROLE='italic'func is the C++ name of the member function, the name you normally use in your source code. REMAP='Body'ROLE='italic'ret is the type of data the function returns. ROLE='italic'type1, t1, t2, t3, and ROLE='italic't4 represent the data types of the parameters. In most cases, all these data types should be normal C++ data types, but if the data member is a string or an object then specify ROLE='italic'TAutoString or one of the ROLE='italic'TAutoObject classes instead. See Automation Data Types for more details. Also, automated functions cannot return ROLE='bold'const values. Do not use const in a ret type.REMAP='Body'ROLE='italic'options is a place to insert a hook, code to be called each time the automation command is executed. Hooks can record, undo, or validate commands. See Automation Hook Macros for more details. ROLE='italic'options can be omitted, but a comma must follow the preceding argument anyway.REMAP='Body'The automacr.h header defines versions of this macro that accept up to ten arguments. To generate versions that accept more arguments, use the MACROGEN.EXE utility.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='189*'COLNAME='C2' COLWIDTH='186*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOFUNC0(name, func, ret, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function takes no parameters and returns a value of type ROLE='italic'ret.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOFUNC0V(name, func, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function takes no parameters and returns ROLE='bold'void.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOFUNC1(name, func, ret, type1, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function takes one parameter of type ROLE='italic'type1 and returns a value of type ROLE='italic'ret.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOFUNC1V(name, func, type1, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function takes one parameter of type ROLE='italic'type1 and returns ROLE='bold'void.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOFUNC2(name, func, ret, t1, t2, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function takes two parameters of types ROLE='italic't1 and ROLE='italic't2. It returns a value of type ROLE='italic'ret.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOFUNC2V(name, func, t1, t2, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function takes two parameters and returns ROLE='bold'void.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOFUNC3(name, func, ret, t1, t2, t3, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function takes three parameters and returns a value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOFUNC3V(name, func, t1 ,t2, t3, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function takes three parameters and returns ROLE='bold'void.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOFUNC4(name, func, ret, t1, t2, t3, t4, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function takes four parameters and returns a value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOFUNC4V(name, func, t1, t2, t3, t4, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The function takes four parameters and returns ROLE='bold'void.AUTOINVOKE macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"AUTOINVOKE(code)REMAP='BodyNoLead'An automation server uses AUTOINVOKE in an automation declaration macro to hook in user-defined code for ObjectComponents to execute every time the application receives a particular automation command. ROLE='italic'code is the expression or function call to execute on each command.REMAP='Body'Create an AUTOINVOKE hook if you want to override the normal execution sequence.AUTOITERATOR macrosMOREINFO="NONE"ocf/automacr.hREMAP='Body'An iterator is an object used to enumerate a collection of objects. An iterator's methods let the caller step through a list of objects and examine each one in turn.REMAP='Body'An automation server needs to create an iterator in any automated object that represents a collection of other objects. To create an iterator, the server adds one of the AUTOITERATOR macros to the class's automation definition (after DEFINE_AUTOCLASS). The iterator must also be exposed in the automation definition with the EXPOSE_ITERATOR macro. COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='171*'COLNAME='C2' COLWIDTH='204*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOITERATOR(state, init, test, step, extract)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Implements a collection iterator within the automated class.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOITERATOR_DECLARE(state)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Declares but does not implement a collection iterator within the automated class. Use this if your iterator's implementation is too complex for AUTOITERATOR.REMAP='Body'The five arguments of AUTOITERATOR define the iteration algorithm for the collection class. Only one auto-iterator can exist within a class, so there is no need for a special internal name. The five arguments each represent a code fragment, and they follow the sequence of code in a ROLE='bold'for loop. As the examples show, because the iterator object is nested within the automated collection class, it can refer to members of the class.COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='54*'COLNAME='C2' COLWIDTH='84*'COLNAME='C3' COLWIDTH='237*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ParameterCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'ExampleCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'stateCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int IndexCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Declaration of state variables. This must be the same declaration previously given in AUTOITERATOR_DECLARE.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'initCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Index = 0COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Statements (usually assignments) executed to initialize the loop.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'testCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Index < This->TotalCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Boolean expression tested each time through the loop.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'stepCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Index++COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Statements executed each time through the loop.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'extractCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(This->Array)[Index]COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Expression that returns the successive objects in the collection.REMAP='Body'Within the parameters, ROLE='italic'This (note the capital T) points to the enclosing collection object, not to the nested iterator object.REMAP='Body'Commas cannot be used except inside parentheses. Semicolons can be used to separate multiple statements, but not to end a macro argument.REMAP='Body'If you use AUTOITERATOR_DECLARE instead of AUTOITERATOR, then you must implement the state variables and these methods, corresponding to the steps described for AUTOITERATOR.FORMAT="LINESPECIFIC"void Init( );
bool Test( );
void Step( );
void Return(TAutoVal& v);AUTONAMES macrosMOREINFO="NONE"ocf/automacr.hREMAP='Body'The AUTONAMES macros are the first in three sets of macros that an automation controller uses to implement methods in its proxy objects. AUTONAMES macros assign names to any arguments that the controller wants to reference by name. Named parameters have default values and are not required in a command. If a command has fifteen parameters and ten of them have names and default values, then the controller must always pass the five unnamed parameters and can choose to pass any subset of the remaining ten, identifying them by their names.REMAP='Body'The second set of macros, AUTOARGS, describe the data types of unnamed arguments that must always be passed in the command. The third set, AUTOCALL, tells whether the command is a method or a property and what it returns.REMAP='Body'In the macros that follow, ROLE='italic'id is a numeric ID for a method, ROLE='italic'fname is a string naming a method, and ROLE='italic'n1, n2, n3, and ROLE='italic'n4 are strings assigned as argument names. Most of the macros need the function name to identify the function, but if a function has no named arguments, then you can pass its identifying number instead.REMAP='Body'The automacr.h header defines AUTONAMES macros that accept up to four arguments. To generate versions that accept more arguments, use the MACROGEN.EXE utility.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='141*'COLNAME='C2' COLWIDTH='222*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTONAMES0(id)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Function ROLE='italic'id has no named arguments.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTONAMES0(fname)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Function ROLE='italic'fname has no named arguments.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTONAMES1(fname, n1)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Function ROLE='italic'fname has one named argument, ROLE='italic'n1.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTONAMES2(fname, n1, n2)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Function ROLE='italic'fname has two named arguments, ROLE='italic'n1 and ROLE='italic'n2.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTONAMES3(fname, n1, n2, n3)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Function ROLE='italic'fname has three named arguments,ROLE='italic' n1, n2, and ROLE='italic'n3.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTONAMES4(fname, n1, n2, n3, n4)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Function ROLE='italic'fname has four named arguments, ROLE='italic'n1, n2, n3, and ROLE='italic'n4.AUTONOHOOK macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"AUTONOHOOKREMAP='BodyNoLead'An automation server uses AUTONOHOOK in an automation declaration macro to prevent anyone from hooking the command. Not even ObjectComponents can monitor the call. REMAP='Body'AUTONOHOOK is for advanced uses only.AUTOPROP macrosMOREINFO="NONE"ocf/automacr.hREMAP='Body'An automation server uses AUTOPROP macros in its automation declaration (after DECLARE_AUTOCLASS) to make properties of an automated class accessible to OLE. A property is data that cannot be read or written directly, only through a set of access functions (for example, ROLE='italic'GetPosition and ROLE='italic'SetPosition).REMAP='Body'A server can implement the access functions any way it likes. Because only the access functions are exposed, the property does not have to be a data member. In other words, ROLE='italic'GetPosition and ROLE='italic'SetPosition would not have to refer to a data member of type ROLE='italic'TPoint. They might query the system for the cursor position and return the answer.REMAP='Body'The three AUTOPROP macros have similar parameters. ROLE='italic'name is an internal name you assign to the property. ObjectComponents uses the name to keep track of all the automated members. The only other place you use this internal name is in the corresponding automation definition.REMAP='Body'ROLE='italic'get and ROLE='italic'set are the access functions. A read-only property has just a get function. A write-only property has just a set function. REMAP='Body'ROLE='italic'type is the property's data type. This is usually a C++ data type, but string and object properties require special treatment. See Automation Data Types for more information.REMAP='Body'ROLE='italic'options is a place to insert a hook, code to be called each time the automation command is executed. Hooks can record, undo, or validate commands. See Automation Hook Macros for more details. ROLE='italic'options can be omitted, but a comma must follow the preceding argument anyway.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='156*'COLNAME='C2' COLWIDTH='177*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOPROP(name, get, set, type, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The property can be read and written.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOPROPRO(name, get, type, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The property can only be read, not changed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOPROPWO(name, set, type, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The property can be changed but not read (rare).AUTORECORD macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"AUTORECORD(code)REMAP='BodyNoLead'An automation server uses AUTORECORD in an automation declaration macro to hook in user-defined code that creates a record of each call made to a particular automation command. ROLE='italic'code is the expression or function call to execute on each command. It should store whatever information the application would need to play back the same command later.REMAP='Body'Recording is not supported in the current version of ObjectComponents.AUTOREPORT macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"AUTOREPORT(code)REMAP='BodyNoLead'An automation server uses AUTOREPORT in an automation declaration macro to hook in user-defined code that checks the error code from an automated member function. If ROLE='italic'code evaluates to 0, OLE assumes the command succeeded. If ROLE='italic'code evaluates to a nonzero value, then OLE throws an exception in the controller. Within the code expression, use Val to refer to the actual value returned.AutoSymFlag enumMOREINFO="NONE"ocf/autodefs.hFORMAT="LINESPECIFIC"enum AutoSymFlagREMAP='BodyNoLead'These flags are used in the ROLE='italic'TAutoCommand class to describe attributes of an automation command. The flags tell whether the command is a method or a property, whether arguments are passed by value or by reference, and whether it should be visible in type information browsers.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='69*'COLNAME='C2' COLWIDTH='213*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asAnyCommandCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Any command: method, property access, object builder.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asOleTypeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Method or property exposed for OLE.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asMethodCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Method.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asGetCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Returns the value of a property.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asIteratorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Iterator property; used to enumerate items in a collection.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asSetCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Set property value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asGetSetCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Get or set a property value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asBuildCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Constructor command (not supported by OLE 2.01).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asArgumentCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Property that returns an object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asArgByValCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The value of the argument is passed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asArgByRefCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The argument is a pointer to a value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asFactoryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'For creating objects or determining class.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asClassCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Extension to another class symbol table.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asBindableCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Sends ROLE='italic'OnChanged notification.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asRequestEditCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Sends ROLE='italic'OnRequest edit before change.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asDisplayBindCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'User-display of bindable.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asDefaultBindCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'This property only is the default (redundant).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asHiddenCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Not visible to normal browsing.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asPersistentCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Property is persistent.See alsoREMAP='BodyNoLead'TAutoCommand public constructorAUTOSTAT macrosMOREINFO="NONE"ocf/automacr.hREMAP='Body'Use the AUTOSTAT in an automation declaration (after DECLARE_AUTOCLASS) to make static member functions and global functions accessible to OLE.REMAP='Body'All versions of the AUTOSTAT macro have similar parameters. name is an internal name you assign to the function. ObjectComponents uses the name to keep track of all the automated members. The only other place you use this internal name is in the corresponding automation definition.REMAP='Body'ROLE='italic'func is the name of the static or global function.REMAP='Body'ROLE='italic'ret is the type of value the function returns.REMAP='Body'ROLE='italic'type1, t1, t2, t3, and ROLE='italic't4 are the types of the function's arguments.REMAP='Body'ROLE='italic'options is a place to insert a hook, code to be called each time the automation command is executed. Hooks can record, undo, or validate commands. See Automation Hook Macros for more details. ROLE='italic'options can be omitted, but a comma must follow the preceding argument anyway.REMAP='Body'The return types and argument types are usually normal C++ data types, but string and object values require special treatment. See Automation Data Types for more information.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='183*'COLNAME='C2' COLWIDTH='191*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOSTAT0(name, func, ret, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The static function ROLE='italic'func is assigned the symbol ROLE='italic'name. It takes no arguments and returns a value of type ROLE='italic'ret.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOSTAT0V(name, func, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The static function ROLE='italic'func takes no arguments and returns no value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOSTAT1(name, func, ret, type1, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'func takes one argument of type ROLE='italic'type1 and returns a value of type ROLE='italic'ret.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOSTAT1V(name, func, type1, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'func takes one argument of type ROLE='italic'type1 and returns no value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOSTAT2(name, func, ret, t1, t2, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'func takes two arguments of types ROLE='italic't1 and ROLE='italic't2 and returns a value of type ROLE='italic'ret.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOSTAT2V(name, func, t1,t2, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'func takes two arguments and returns no value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOSTAT3(name, func, ret, t1,t2, t3, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'func takes three arguments and returns a value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOSTAT3V(name, func, t1, t2, t3, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'func takes three arguments and returns no value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOSTAT4(name, func, ret, t1, t2, t3, t4, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'func takes four arguments and returns a value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AUTOSTAT4V(name, func, t1, t2, t3, t4, options)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'func takes four arguments and returns no value.AUTOTHIS macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"AUTOTHIS(name, type, options)REMAP='BodyNoLead'An automation server uses the AUTOTHIS macro in its automation declaration (after DECLARE_AUTOCLASS) if it wants to expose the C++ object itself as a member of the automated OLE object.REMAP='Body'ROLE='italic'name is an internal name you assign to the property. ObjectComponents uses the name to keep track of all the automated members. The only other place you use this internal name is in the corresponding automation definition.REMAP='Body'ROLE='italic'type must be ROLE='italic'TAutoObject<T>, where ROLE='italic'T is the type of the automated class. REMAP='Body'ROLE='italic'options is a place to insert a hook, code to be called each time a controller asks for this property. Hooks can record, undo, or validate commands. See Automation Hook Macros for more details. ROLE='italic'options can be omitted, but a comma must follow the preceding argument anyway.AUTOUNDO macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"AUTOUNDO(code)REMAP='BodyNoLead'An automation server uses AUTOUNDO in an automation declaration macro to hook in user-defined code that records whatever information the application needs to reverse the command later. Usually it adds information to a user-maintained undo stack. The information might include the parameters that execute the inverse of the original command, for example. To undo a series of actions, the program can pop commands off the undo stack and execute them. ROLE='italic'code is the expression or function that records information.REMAP='Body'Undoing commands is not supported in the current version of ObjectComponents.AUTOVALIDATE macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"AUTOVALIDATE(condition)REMAP='BodyNoLead'An automation server uses AUTOVALIDATE in an automation declaration macro to hook in user-defined code that confirms the validity of received arguments before passing them on to be processed in a command. ROLE='italic'condition is an expression or function that evaluates to ROLE='bold'true if the arguments received are valid for the command and ROLE='bold'false if not. If the expression returns ROLE='bold'false, OLE throws an exception in the controller application.clsid registration keyMOREINFO="NONE"REMAP='BodyNoLead'Registers a globally unique identifier (GUID) for the application's class ID. A GUID is a 16-byte value and can be represented as a string.REMAP='Body'A ROLE='italic'clsid GUID is required in every application registration table. You never need to specify any others. If others are needed for your documents, type library, automated classes, or debugging invocation, ObjectComponents automatically increments the low-order field of the first GUID to produce them. Be sure to allow for the full range of numbers your application actually uses when determining the next available GUID for another program.REMAP='Body'There are several ways to acquire a ROLE='italic'clsid. One is to run the GUIDGEN tool in the OCTOOLS directory. Also, AppExpert automatically generates a GUID for any applications it creates that support OLE. Another way to get a GUID is to call the OLE API ROLE='italic'CoCreateGuid, as documented in the Help file OLE2HELP.HLP. Finally, you can contact Microsoft to have a block of GUIDs assigned to you permanently.REMAP='Body'Every application must have its own absolutely unique ROLE='italic'clsid string, so never use values pasted in from example programs.REMAP='Body'To register a ROLE='italic'clsid, use the REGDATA macro with ROLE='italic'clsid as the first parameter and a GUID string as the second parameter.FORMAT="LINESPECIFIC"REGDATA(clsid, "{CDE7F941-544B-101B-A9C1-04021C007002}")cmdline registration keyMOREINFO="NONE"REMAP='Body'Registers arguments OLE should place on the command line when it launches the server's executable file.REMAP='Body'The ROLE='italic'cmdline key is valid in application registration tables but is ignored for DLL servers. Any application can register it, but normally only automation servers have a use for it.REMAP='Body'Automation servers can use the ROLE='italic'cmdline key to set up the -ROLE='italic'Automation switch. When the registrar object sees this switch, it overrides the application's registered ROLE='italic'usage setting and forces the program to run in single-use mode. This is useful in a server that supports linking and embedding as well as automation. As a linking and embedding server, it might support concurrent client applications with a single instance. When running as an automation server, however, most applications don't want concurrent client programs to control exactly the same instance of an object.REMAP='Body'To register command-line options, use the REGDATA macro with ROLE='italic'cmdline as the first parameter and a string containing command-line arguments as the second parameter.FORMAT="LINESPECIFIC"REGDATA(cmdline, "/automation")debugclsid registration keyMOREINFO="NONE"REMAP='BodyNoLead'A GUID identifying the debugging version of a server. You should never register this key directly. It is always generated for you automatically if you register ROLE='italic'debugprogid.REMAP='Body'This key is ignored in DLL servers.See alsoREMAP='BodyNoLead'debugprogid registration keydebugdesc registration keyMOREINFO="NONE"REMAP='BodyNoLead'A string describing the debugging version of your program. When used in registering a document, this string appears in the Insert Object menu. When used in registering an application, it appears in object browsers. The string can contain up to 40 characters and can be localized.REMAP='Body'The ROLE='italic'debugdesc key is required in application and document registration tables for any program that registers the ROLE='italic'debugprogid key. Otherwise it is irrelevant.REMAP='Body'To register the ROLE='italic'debugdesc key, use the REGDATA macro, passing ROLE='italic'debugdesc as the first parameter and the descriptive string as the second parameter.FORMAT="LINESPECIFIC"REGDATA(debugdesc, "My Application (debugging)")REMAP='Body'This key is ignored in DLL servers.See AlsoREMAP='BodyNoLead'debugclsid registration key, debugger registration key, debugprogid registration key, REGDATA macrodebugger registration keyMOREINFO="NONE"REMAP='BodyNoLead'Registers the path and file name for loading your debugger.REMAP='Body'The ROLE='italic'debugger key is valid in any registration table. It is required if you also register ROLE='italic'debugprogid. Otherwise it is irrelevant.REMAP='Body'To register the ROLE='italic'debugger key, use the REGDATA macro, passing ROLE='italic'debugger as the first parameter and the command line string for the debugger application as the second parameter. When OLE invokes the debugger, it places the second parameter string on the command line ahead of the server's .EXE path. The debugger string can optionally contain a full path and debugger command line switches.FORMAT="LINESPECIFIC"REGDATA(debugger, "TDW") // assumes TDW is somewhere on the pathREMAP='Body'This key is ignored in DLL servers.See alsoREMAP='BodyNoLead'debugclsid registration key, debugdesc registration key, debugprogid registration key, REGDATA macrodebugprogid registration keyMOREINFO="NONE"REMAP='BodyNoLead'A string identifying the debugging version of a program. Just as a ROLE='italic'progid string does, this string has two parts divided by a period. The first part is your program's name, and the second part is .ROLE='italic'debug.REMAP='Body'Assigning a value to the ROLE='italic'debugprogid key causes ObjectComponents to create two sets of entries for the server in the registration database. When you choose Insert Object from the Edit menu, both entries appear in the list. Choosing the debugging entry causes ObjectComponents to invoke your debugger together with the server. Without the ability to register a duplicate debugging entry, it is difficult to debug the server when OLE invokes it.REMAP='Body'ObjectComponents generates a ROLE='italic'clsid for the debugger entry automatically.REMAP='Body'The ROLE='italic'debugprogid key is optional for application registration tables and irrelevant for document registration tables. If you register ROLE='italic'debugprogid, you also need to register ROLE='italic'debugdesc and ROLE='italic'debugger.REMAP='Body'To register a ROLE='italic'debugprogid, use the REGDATA macro, passing ROLE='italic'debugprogid as the first parameter and the ID string as the second parameter. FORMAT="LINESPECIFIC"REGDATA(debugprogid, "MyApp.Debug")REMAP='Body'This key is ignored in DLL servers.See alsoREMAP='BodyNoLead'debugclsid registration key, debugdesc registration key, debugger registration key, progid registration key, REGDATA macroDECLARE_AUTOCLASS macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"DECLARE_AUTOCLASS(cls)REMAP='BodyNoLead'DECLARE_AUTOCLASS(cls) introduces a block of macros that declare automatable members of the user-defined class ROLE='italic'cls.REMAP='Body'An automation server uses DECLARE_AUTOCLASS to begin a block of macros that make automatable members of a user-defined C++ class accessible to OLE. ROLE='italic'cls is the name of the user's C++ class.REMAP='Body'The block of declaration macros usually appears in the definition of the automatable C++ class. A corresponding block of automation definition macros must appear in the implementation of the automatable C++ class.DECLARE_COMBASESn macrosMOREINFO="NONE"ocf/oleutil.hREMAP='BodyNoLead'Use the COMBASES macros to create C++ objects that conform to the OLE Component Object Model (COM). COM objects support OLE interfaces and let you derive classes that interact with OLE directly, not through ObjectComponents. These macros are meant for advanced users.REMAP='Body'COM objects are used as base classes for other objects. The derived class must inherit from both your COM class and from the ObjectComponents ROLE='italic'TUnknown class. ROLE='italic'TUnknown implements the controlling ROLE='italic'IUnknown interface for your object.REMAP='Body'To create a COM class:NUMERATION='ARABIC' CONTINUATION="RESTARTS" INHERITNUM="IGNORE"REMAP='.NumList1'Precede the declaration of the class with one of the DECLARE_COMBASES macros. Which you choose depends on how many interfaces (besides ROLE='italic'IUnknown) the COM class supports.REMAP='.NumList1'Precede the implementation of your COM class with the corresponding DEFINE_COMBASES macro.REMAP='.NumList1'Derive your final class multiply from ROLE='italic'TUnknown and your new COM class (in that order).REMAP='Body'The first macro argument is ROLE='italic'name. It is the name of the COM class you are creating.ROLE='italic' i1, i2, i3, and ROLE='italic'i4 are the names of the interfaces your COM class supports.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='162*'COLNAME='C2' COLWIDTH='213*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DECLARE_COMBASES1(name, i1)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Declare a COM class name that inherits from the ROLE='italic'i1 interface class.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DECLARE_COMBASES2(name, i1, i2) COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Declare a COM class name that inherits from the ROLE='italic'i1 and ROLE='italic'i2 interface classes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DECLARE_COMBASES3(name, i1, i2, i3) COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Declare a COM class name that inherits from the ROLE='italic'i1. ROLE='italic'i2, and ROLE='italic'i3 interface classes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DECLARE_COMBASES4(name, i1, i2, i3, i4)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Declare a COM class name that inherits from the ROLE='italic'i1. ROLE='italic'i2, ROLE='italic'i3, and ROLE='italic'i4 interface classes.DEFINE_AUTOAGGREGATE macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"DEFINE_AUTOAGGREGATE(cls, AggregatorFunction)REMAP='BodyNoLead'An automation server uses DEFINE_AUTOAGGREGATE to begin a block of macros that define automatable members of ROLE='italic'cls, a user-defined C++ class. The block ends with the END_AUTOAGGREGATE macro.REMAP='Body'DEFINE_AUTOCLASS does the same thing but without the extra ROLE='italic'AggregatorFunction parameter. Use DEFINE_AUTOAGGREGATE when the C++ class you are automating is, inherits from, or delegates to a Component Object Model (COM) object. The ROLE='italic'AggregatorFunction parameter points to the aggregating function for reaching the COM object. For example, if ROLE='italic'Aggregate is the name of the COM object, the aggregater function might be any of these expressions:FORMAT="LINESPECIFIC"Aggregate // automated C++ object is the COM object
OcApp->Aggregate // automated C++ object delegates to COM object
MyBase::Aggregate // automated C++ object inherits from COM objectSee alsoREMAP='BodyNoLead'DEFINE_AUTOCLASS, END_AUTOAGGREGATEDEFINE_AUTOCLASS macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"DEFINE_AUTOCLASS(cls)REMAP='BodyNoLead'Introduces a block of macros in an automation server. Each macro in the block defines an automatable member of ROLE='italic'cls, a user-defined C++ class. The block ends with the END_AUTOCLASS macro.REMAP='Body'The block of definition macros appears in the implementation of the automatable C++ class. A corresponding block of automation declaration macros must appear in the definition of the same class.See alsoREMAP='BodyNoLead'END_AUTOCLASS macroROLE='italic'DEFINE_COMBASESn macrosMOREINFO="NONE"ocf/oleutil.hREMAP='BodyNoLead'Implements the ROLE='italic'IUnknown interface for each of the OLE interfaces that your COM object supports. REMAP='Body'Use the COMBASE macros to create C++ objects that conform to the OLE Component Object Model (COM). COM objects support OLE interfaces and let you derive classes that interact with OLE directly, not through ObjectComponents. These macros are meant for advanced users.REMAP='Body'Automated objects can delegate to COM objects using the DEFINE_AUTOAGGREGATE and DECLARE_AUTOAGGREGATE macros.REMAP='Body'To create a COM class,NUMERATION='ARABIC' CONTINUATION="RESTARTS" INHERITNUM="IGNORE"REMAP='.NumList1'Precede the declaration of the class with one of the DECLARE_COMBASES macros. Which you choose depends on how many interfaces (besides ROLE='italic'IUnknown) the COM class supports.REMAP='.NumList1'Precede the implementation of your COM class with the corresponding DEFINE_COMBASES macro.REMAP='.NumList1'Derive your final class multiply from your new COM class and from ROLE='italic'TUnknown.REMAP='Body'COM objects can delegate to other COM objects using another set of related macros also defined in oleutil.h. For more information, look in the header file for the DEFINE_QI_xxxx macros.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='154*'COLNAME='C2' COLWIDTH='220*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DEFINE_COMBASES1(name, i1) COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Define ROLE='italic'IUnknown for the ROLE='italic'i1 interface in the COM class ROLE='italic'name.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DEFINE_COMBASES2(name, i1, i2) COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Define ROLE='italic'IUnknown for the ROLE='italic'i1 and ROLE='italic'i2 interfaces in the COM class ROLE='italic'name.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DEFINE_COMBASES3(name, i1, i2, i3)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Define ROLE='italic'IUnknown for the ROLE='italic'i1, i2, and ROLE='italic'i3 interfaces in the COM class ROLE='italic'name.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DEFINE_COMBASES4(name, i1, i2, i3, i4) COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Define ROLE='italic'IUnknown for the ROLE='italic'i1, i2, i3, and ROLE='italic'i4 interfaces in the COM class ROLE='italic'name.See alsoREMAP='BodyNoLead'DECLARE_COMBASESROLE='italic'n macrosdescription registration keyMOREINFO="NONE"REMAP='BodyNoLead'Registers a long descriptive name, up to 40 characters, meant for the user to see. The string describes the application or its document types and appears in the Insert Object dialog box. This value should be localized.REMAP='Body'A description string is required in every registration table. To register a description string, use the REGDATA macro, passing ROLE='italic'description as the first parameter and the descriptive string as the second parameter.FORMAT="LINESPECIFIC"REGDATA(description, "OWL Drawing Pad 2.0")See alsoREMAP='BodyNoLead'REGDATA macrodirectory registration keyMOREINFO="NONE"REMAP='BodyNoLead'Registers the default directory for document files. The document template class refers to this path when it invokes a File Open common dialog box. The directory path is not used by OLE.REMAP='Body'The directory key is valid in any document registration table. It is always optional.REMAP='Body'To register a directory, use the REGDATA macro, passing ROLE='italic'directory as the first parameter and a path name as the second parameter.FORMAT="LINESPECIFIC"REGDATA(directory, "C:\\temp")docfilter registration keyMOREINFO="NONE"REMAP='BodyNoLead'Registers a file specification for listing files created by the application. This information is used by the document template class when it creates a File Open common dialog box. It is not used by OLE.REMAP='Body'ROLE='italic'docfilter is valid in any document registration table. It is required unless the corresponding ROLE='italic'docflags key includes the ROLE='italic'dtHidden flag. If you register a document filter, you might also want to register the ROLE='italic'extension key.REMAP='Body'To register a document filter, use the REGDATA macro, passing ROLE='italic'docflags as the first parameter and a filter string as the second parameter.FORMAT="LINESPECIFIC"REGDATA(docfilter, "*.txt")See alsoREMAP='BodyNoLead'docflags registration key, dt document view constants, extension registration key, REGDATA macrodocflags registration keyMOREINFO="NONE"REMAP='BodyNoLead'Registers document view option flags for the application's documents. This information is used by the document template class, not by OLE. The document template uses the flags to control its display of the File Open common dialog box. For a list of all the flags, see the description of ROLE='italic'dtxxxx Document View Constants.REMAP='Body'The ROLE='italic'docflags key is valid in any document registration table. It is always optional.REMAP='Body'To register document flags, use the REGDOCFLAGS macro.FORMAT="LINESPECIFIC"REGDOCFLAGS(dtAutoOpen | dtAutoDelete | dtUpdateDir | dtCreatePrompt)See alsoREMAP='BodyNoLead'docfilter registration key, dt document view constants, REGDOCFLAGS macroDynamicCast functionMOREINFO="NONE"ocf/autodefs.hFORMAT="LINESPECIFIC"const void far* DynamicCast(const void far* obj, const typeinfo& src, const typeinfo& dst);REMAP='BodyNoLead'Attempts to convert a pointer from one type to another. The attempt succeeds only if the old type and the new type are related through inheritance.REMAP='Body'ROLE='italic'obj is the pointer you want to cast to a new type. src is type information about the source object. ROLE='italic'dst is information about the destination type.REMAP='BodyNoLead'If the conversion succeeds, ROLE='italic'DynamicCast returns a pointer to the new type. If it fails, the return is zero.REMAP='Body'You can generate the ROLE='italic'src and ROLE='italic'dst parameters with the ROLE='italic'typeid parameter. (ObjectComponents requires the use of RTTI.)See alsoREMAP='BodyNoLead'MostDerived function, typeid, typeinfo classEND_AUTOAGGREGATE macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"END_AUTOAGGREGATE(cls, name, doc, help)REMAP='BodyNoLead'Terminates a block of macros that an automation server uses to define automatable methods in ROLE='italic'cls, a user-defined C++ class. The definition block begins with DEFINE_AUTOAGGREGATE.REMAP='Body'The related DEFINE_AUTOCLASS and END_AUTOCLASS macros also mark an automation definition block. Use the aggregation macros when ROLE='italic'cls is, inherits from, or delegates to a Component Object Model (COM) object.REMAP='Body'ROLE='italic'name is the string that automation controllers use to identify objects of type cls. If the user asks OLE about the object name, the system returns the string in ROLE='italic'doc. If an .HLP file is registered for the object, then the context ID in ROLE='italic'help points to a screen that describes the object.See alsoREMAP='BodyNoLead'DEFINE_AUTOAGGREGATE macro, END_AUTOCLASS macroEND_AUTOCLASS macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"END_AUTOCLASS(cls, name, doc, help)REMAP='BodyNoLead'Terminates the block of macros an automation server uses to define automatable methods in ROLE='italic'cls, a user-defined C++ class. The definition block begins with DEFINE_AUTOCLASS.REMAP='BodyNoLead'ROLE='italic'name is the string that automation controllers use to identify objects of type ROLE='italic'cls. If the user asks OLE about the object name, the system returns the string in ROLE='italic'doc. If an .HLP file is registered for the object, then the context ID in ROLE='italic'help points to a screen that describes the object.See alsoREMAP='BodyNoLead'DEFINE_AUTOCLASS macroEXPOSE_APPLICATION macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"EXPOSE_APPLICATION(cls, extName, doc, help)REMAP='BodyNoLead'An automation server uses EXPOSE_APPLICATION in its automation definition (after DEFINE_AUTOCLASS) if it chooses to expose the application itself as a member of its automated object. OLE conventions suggest that each automation object should have this member.REMAP='Body'ROLE='italic'cls is the class name of the application.REMAP='Body'ROLE='italic'extName is the external, public name you assign to this member. Automation controllers use this string to refer to the application member. The string can be localized.REMAP='Body'ROLE='italic'doc is a string that describes this member to the user. An automation controller can ask OLE for this string if the user requests help.REMAP='Body'ROLE='italic'help is a context ID for an .HLP file. This parameter, which can be omitted, is useful only if you register an .HLP file to document your server. If you do, then when the user asks the controller for help, the controller passes this context ID to the Help system to display a screen describing the object member.EXPOSE_DELEGATE macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"EXPOSE_DELEGATE(cls, extName, locator)REMAP='BodyNoLead'An automation server uses EXPOSE_DELEGATE in its automation definition (after DEFINE_AUTOCLASS) in order to combine two unrelated C++ classes into a single OLE automation object. In effect, the application's primary automated class delegates some tasks to another automated class. This macro tells ObjectComponents to search both classes to determine what commands the automated OLE object can perform.REMAP='Body'ROLE='italic'cls is the name of the auxiliary class, which must also be automated. In other words, it must contain its own automation declaration and definition.REMAP='Body'ROLE='italic'extName is an external, public name that an OLE controller uses to refer to this member of the object.REMAP='Body'ROLE='italic'locator is a function that returns a pointer to an auxiliary object. In order to call members of that class, ObjectComponents needs a pointer to an object of that type. The conversion function should follow this prototype:FORMAT="LINESPECIFIC"auxclass *locator( autoclass *this );REMAP='Body'where ROLE='italic'auxclass is the name of the auxiliary class and ROLE='italic'autoclass is the name of the primary automated class. ROLE='italic'locator in effect converts a ROLE='italic'this pointer to a ROLE='italic'that pointer.See alsoREMAP='BodyNoLead'EXPOSE_INHERIT macroEXPOSE_INHERIT macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"EXPOSE_INHERIT(cls, extName);REMAP='BodyNoLead'An automation server uses EXPOSE_INHERIT in its automation definition (after DEFINE_AUTOCLASS) in order to combine two related C++ classes into a single OLE automation object. In effect, the application's primary automated class delegates some tasks to its base class. This macro tells ObjectComponents to search both classes to determine what commands the automated OLE object can perform.REMAP='Body'ROLE='italic'cls is the name of the base class, which must also be automated. In other words, it must contain its own automation declaration and definition.REMAP='Body'ROLE='italic'extName is an external, public name that an OLE controller uses to refer to this member of the object. It can be localized.See alsoREMAP='BodyNoLead'EXPOSE_DELEGATE macroEXPOSE_ITERATOR macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"EXPOSE_ITERATOR(retType, doc, help);REMAP='BodyNoLead'An automation server uses EXPOSE_ITERATOR in its automation definition (after DEFINE_AUTOCLASS) in order to expose an iterator object to enumerate objects in a collection. An iterator is useful only when the automated object itself represents a collection of other objects. The controller uses methods of the nested iterator object to retrieve and examine successive objects in a list.REMAP='Body'ROLE='italic'retType is an automated data type that describes the type of the objects in the collection. For example, if the collection is an array of short integers, then ROLE='italic'retType should be ROLE='italic'TAutoShort. For more information, see Automation Data Types.REMAP='Body'ROLE='italic'doc is a string that describes the iterator to the user. An automation controller can ask OLE for this string if the user requests help.REMAP='Body'ROLE='italic'help is a context ID for an .HLP file. This parameter, which can be omitted, is useful only if you register an .HLP file to document your server. If you do, then when the user asks the controller for help, the controller passes this context ID to the Help system to display a screen describing the iterator.See alsoREMAP='BodyNoLead'AUTOITERATOR macrosEXPOSE_METHOD macrosMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"EXPOSE_METHOD(intName, retType, extName, doc, help);FORMAT="LINESPECIFIC"EXPOSE_METHOD_ID(id, intName, retType, extName, doc, help);REMAP='BodyNoLead'An automation server uses EXPOSE_METHOD macros in its automation definition (after DEFINE_AUTOCLASS) to expose a member function of an object to OLE for automation. REMAP='Body'ROLE='italic'intName is an internal name that you assign to identify the method. ObjectComponents uses the internal name to keep track of all the automated members. This name must match the name assigned to the method with the AUTOFUNC macro in the automation declaration.REMAP='Body'ROLE='italic'retType is a data type that describes the type of value the method returns. For example, if the method returns a long integer, then ROLE='italic'retType should be ROLE='italic'TAutoLong. For more information, see Automation Data Types.REMAP='Body'ROLE='italic'extName is the external, public name that a controller uses to specify this method. The string can be localized.REMAP='Body'ROLE='italic'doc is a string that describes this method to the user. An automation controller can ask OLE for this string if the user requests help. This string can also be localized.REMAP='Body'ROLE='italic'help is a context ID for an .HLP file. This parameter, which can be omitted, is useful only if you register an .HLP file to document your server. If you do, then when the user asks the controller for help, the controller passes this context ID to the Help system to display a screen describing the method.REMAP='Body'ROLE='italic'id is a dispatch identifier that you can choose to assign explicitly by using one of the EXPOSE_METHOD_ID macros. The dispatch ID is what OLE passes to identify commands requested by a controller. The OLE system header files define several standard dispatch ID values. For example, -5 is the default evaluation method. Standard dispatch IDs are always negative numbers. By default, dispatch IDs are assigned low positive numbers incremented from 1. If you want to specify explicit dispatch IDs for your applications, choose high positive values in order not to collide with the low positive numbers ObjectComponents assigns to exposed members without explicit IDs.REMAP='Body'0 is the ID of the default method or property. ObjectComponents never automatically assigns 0 as a dispatch ID. To have a default method, you need to assign 0 yourself.REMAP='Body'An EXPOSE_METHOD or EXPOSE_METHOD_ID macro must always be followed immediately by one macro for each of the method's arguments.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='106*'COLNAME='C2' COLWIDTH='90*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'Type of ArgumentCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Declaration MacroVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RequiredCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'REQUIRED_ARGCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OptionalCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'OPTIONAL_ARGCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'Object passed by referenceCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'REQBYREF_ARGSee alsoREMAP='BodyNoLead'AUTOFUNC macros, OPTIONAL_ARG macro, REQBYREF_ARG macro, REQUIRED_ARG macroEXPOSE_PROPxxxx macrosMOREINFO="NONE"ocf/automacr.hREMAP='BodyNoLead'An automation server uses EXPOSE_PROPxxxx macros in its automation definition (after DEFINE_AUTOCLASS) to expose properties of an object to OLE for automation. A property is data that can be read or written only through a set of access functions (for example, ROLE='italic'GetPosition and ROLE='italic'SetPosition).REMAP='Body'ROLE='italic'intName is an internal name that you assign to identify the property. ObjectComponents uses the internal name to keep track of all the automated members. This name must match the name assigned to the method with the AUTOPROP macro in the automation declaration.REMAP='Body'ROLE='italic'type is a data type that describes the type of value the property holds. For example, if the property is a string, then ROLE='italic'type should be ROLE='italic'TAutoString. For more information, see Automation Data Types.REMAP='Body'ROLE='italic'extName is the public name that a controller uses to refer to this property. The string can be localized.REMAP='Body'ROLE='italic'doc is a string that describes this property to the user. An automation controller can ask OLE for this string if the user requests help. This string can also be localized.REMAP='Body'ROLE='italic'help is a context ID for an .HLP file. This parameter, which can be omitted, is useful only if you register an .HLP file to document your server. If you do, then when the user asks the controller for help, the controller passes this context ID to the Help system to display a screen describing the property.REMAP='Body'ROLE='italic'id is a dispatch identifier that you can choose to assign explicitly by using one of the EXPOSE_xxxx_ID macros. The dispatch ID is what OLE passes to identify commands requested by a controller. The OLE system header files define several standard dispatch ID values. For example, -5 is the default evaluation method. Standard dispatch IDs are always negative numbers. By default, dispatch IDs are assigned low positive numbers incremented from 1. If you want to specify explicit dispatch IDs for your applications, choose high positive values in order not to collide with the low positive numbers ObjectComponents assigns to exposed members without explicit IDs.REMAP='Body'0 is the ID of the default method or property. ObjectComponents never automatically assigns 0 as a dispatch ID. To have a default property, you need to assign 0 yourself.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='230*'COLNAME='C2' COLWIDTH='145*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MacroCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EXPOSE_PROPRW(intName, type, extName, doc, help)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The property can be read and written.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EXPOSE_PROPRW_ID(id, intName, type, extName, doc, help)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The property can be read and written. Its dispatch ID is ROLE='italic'id.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EXPOSE_PROPRO(intName, type, extName, doc, help)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The property is read-only.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EXPOSE_PROPRO_ID(id, intName, type, extName, doc, help)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The property is read-only. Its dispatch ID is ROLE='italic'id.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EXPOSE_PROPWO(intName, type, extName, doc, help)COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The property is write-only and cannot be read (rarely used).EXPOSE_QUIT macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"EXPOSE_QUIT(extName, docString, helpContext)REMAP='Body'An automation server that exposes the application itself as an automated object uses the EXPOSE_QUIT macro to make a safe shutdown method available to the controller. The shutdown method implemented by this macro checks whether the application was originally invoked by OLE for automation. If so, it unregisters the active object and shuts down the server. If the user invoked the server before the controller connected to it, however, then the shutdown method does nothing because the application should continue to run.REMAP='Body'Every automated application should include EXPOSE_QUIT in the application object's automation definition (after DEFINE_AUTOCLASS). EXPOSE_QUIT is not needed in the automation definition of other automated objects the server might create.REMAP='Body'ROLE='italic'extName is the external, public name that a controller uses to call this method. The string can be localized.REMAP='Body'ROLE='italic'doc is a string that describes the shutdown method to the user. An automation controller can ask OLE for this string if the user requests help. This string can also be localized.REMAP='Body'ROLE='italic'help is a context ID for an .HLP file. This parameter, which can be omitted, is useful only if you register an .HLP file to document your server. If you do, then when the user asks the controller for help, the controller passes this context ID to the Help system to display a screen describing the shutdown method.extension registration keyMOREINFO="NONE"REMAP='BodyNoLead'A file-name extension. This extension becomes the default extension assigned to file names in the File Open common dialog box. It is also recorded in the system registration database so that OLE can find the right server for a file based on the file's extension.REMAP='Body'ROLE='italic'extension is valid in document registration tables of servers that support linking and embedding. It is always optional. If you register an extension, you might also want to register a ROLE='italic'docfilter.REMAP='Body'To register a file extension, use the REGDATA macro, passing ROLE='italic'extension as the first parameter and the extension string as the second parameter. In 16-bit Windows, the extension is limited to three characters.FORMAT="LINESPECIFIC"REGDATA(extension, "TXT")See alsoREMAP='BodyNoLead'docfilter registration key, REGDATA macrofilefmt registration keyMOREINFO="NONE"REMAP='BodyNoLead'Registers a name for a server's default file format. This string appears in dialog boxes where the user selects file types.REMAP='Body'ROLE='italic'filefmt is valid in document registration tables for servers that support linking and embedding. It is always optional.REMAP='Body'To register a file format, use the REGDATA macro, passing ROLE='italic'filefmt as the first parameter and the name string as the second parameter. See alsoREMAP='BodyNoLead'REGDATA macroformatn registration keyMOREINFO="NONE"REMAP='BodyNoLead'Registers a Clipboard format the application supports. An application registers the formats that it can put on or take from the Clipboard. A server can register different sets of formats for different document types.REMAP='Body'Clipboard format keys are valid in any document registration table. Any application that supports linking and embedding should register at least some Clipboard formats. ObjectComponents supports up to eight formats using the keys ROLE='italic'format0 through ROLE='italic'format7. The ROLE='italic'ocrFormatLimit constant, defined in ocf/ocreg.h, represents the maximum number of formats allowed (8).REMAP='Body'To register a Clipboard format, use the REGFORMAT macro. The first parameter assigns a priority to the format. Give your preferred format highest priority. Programs that support OLE usually prefer to export their data as OLE objects, and so they make ROLE='italic'ocrEmbedSource priority 0. The second parameter identifies a particular data format. For explanations of the other parameters, see the description of the REGFORMAT macro.FORMAT="LINESPECIFIC"REGFORMAT(0, ocrEmbedSource, ocrContent, ocrIStorage, ocrGet)
REGFORMAT(1, ocrMetafilePict, ocrContent, ocrMfPict, ocrGet)See alsoREMAP='BodyNoLead'ocrxxxx aspect constants, ocrxxxx Clipboard constants, ocrxxxx direction constants, ocrxxxx medium constants, REGFORMAT macrohandler registration keyMOREINFO="NONE"REMAP='BodyNoLead'A full path pointing to a library that can draw objects created by the server.REMAP='Body'A path for the library that OLE can call to draw objects without having to launch the server as a separate process. By default this value is "OLE2.DLL." OLE itself can render cached formats such as metafiles and bitmaps.REMAP='Body'The ROLE='italic'handler key is valid in document registration tables for servers that support linking and embedding. It is always optional, but if you omit it OLE cannot use your handler library.REMAP='Body'To register a handler, use the REGDATA macro passing ROLE='italic'handler as the first parameter and the path of the handler DLL in the second parameter. If the path does not begin with a drive or root directory, ObjectComponents determines the full path by starting at the place where the server itself is installed. For example, if the server is at C:\MYDIR and the handler path is HELPERS\MYHANDLR, then the full path is assumed to be C:\MYDIR\HELPERS\MYHANDLR.DLL.See alsoREMAP='BodyNoLead'REGDATA macrohelpdir registration keyMOREINFO="NONE"REMAP='BodyNoLead'Directory where online Help for the type library resides. (The name of the Help file is registered separately with the ROLE='italic'typehelp key.)REMAP='Body'This key matters only in the application registration table of an automation controller. It is always optional. If you register a type library Help file without registering a Help directory, ObjectComponents automatically assumes the same directory registered for ROLE='italic'path.REMAP='Body'To register a Help directory, use the REGDATA macro passing ROLE='italic'helpdir as the first parameter and the path string as the second parameter.REMAP='Body'If the path does not begin with a drive or root directory, ObjectComponents determines the full path by starting at the place where the server itself is installed. For example, if the server is at C:\MYDIR and the Help path is HELP, then the Help file is assumed to be at C:\MYDIR\HELP.See alsoREMAP='BodyNoLead'path registration key, typehelp registration keyHR_xxxx return constantsMOREINFO="NONE"ocf/ocfdefs.hREMAP='BodyNoLead'OLE system calls return HRESULT values that sometimes encode detailed information about the result of the call. ObjectComponents sometimes passes HRESULT values back to you. These macros simplify the task of testing for some common results. Each represents a possible return value. For a complete listing of HRESULT return values, see the scode.h header file.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HR_ABORTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The operation was aborted.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HR_FAILCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'An unspecified error occurred.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HR_FALSECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'An action did not complete in the usual way but no error occurred. For example, an enumeration reached the end of its list.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HR_HANDLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A handle is invalid.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HR_INVALIDARGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'One or more arguments are invalid.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HR_NOERRORCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No error occurred.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HR_NOINTERFACECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The requested interface is not supported.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HR_NOTIMPLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The requested service is not implementedCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HR_OKCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Same as HR_NOERROR.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HR_OUTOFMEMORYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Not enough memory is available to complete the operation.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HR_POINTERCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A pointer is invalid.iconindex registration keyMOREINFO="NONE"REMAP='BodyNoLead'A zero-based index telling which of the icons in the server's resources represents the type of objects the server produces. REMAP='Body'Use ROLE='italic'iconindex in the document registration tables of a linking and embedding server. It is always optional.REMAP='Body'To register an icon index, use the REGICON macro, passing the index value as the parameter.FORMAT="LINESPECIFIC"REGICON(1)See alsoREMAP='BodyNoLead'REGICON macroinsertable registration keyMOREINFO="NONE"REMAP='BodyNoLead'Indicates the application is a server and allows its document to be linked or embedded in other applications. Registering this key makes the document type show up in dialog boxes listing objects that can be inserted. The value assigned to this key is ignored.REMAP='Body'ROLE='italic'insertable is valid in the document registration tables of a linking and embedding server. An application must register ROLE='italic'insertable for at least one document type in order to be a linking and embedding server. A server need not make all its document types insertable, however.REMAP='Body'To register the ROLE='italic'insertable key, use the REGDATA macro, passing ROLE='italic'insertable as the first parameter and 0 as the second parameter.FORMAT="LINESPECIFIC"REGDATA(insertable, 0)See alsoREMAP='BodyNoLead'REGDATA macrolanguage registration keyMOREINFO="NONE"REMAP='BodyNoLead'Overrides the locale ID currently in effect. By default, the ROLE='italic'language key takes its value from the system's default language setting for the current user. Registering a language setting directs ObjectComponents to choose a particular language for registration strings you have localized.REMAP='Body'During automation this value is reset internally at the request of the automation controller.menuname registration keyMOREINFO="NONE"REMAP='BodyNoLead'A short name for the server. The name appears as a menu item in container programs. For consistency in the user interface, the suggested maximum length is 15 characters.REMAP='Body'ROLE='italic'menuname is required in the document registration tables of a linking and embedding server. In other places it is irrelevant. The ROLE='italic'menuname string can be localized.REMAP='Body'To register the ROLE='italic'menuname key, use the REGDATA macro, passing ROLE='italic'menuname as the first parameter and a name string as the second parameter.FORMAT="LINESPECIFIC"REGDATA(menuname, "OWL Drawing Pad")See alsoREMAP='BodyNoLead'REGDATA macroMostDerived functionMOREINFO="NONE"ocf/autodefs.hFORMAT="LINESPECIFIC"const void far* MostDerived(const void far* obj, const typeinfo& src);REMAP='BodyNoLead'Returns a pointer to the most derived class type that fits the given object. This is useful when dealing with polymorphic objects. Use it to obtain a consistent pointer to an object, regardless of the type of pointer used to reach the object.REMAP='Body'ROLE='italic'obj is the pointer whose most derived type you want to determine. ROLE='italic'src holds type information about the ROLE='italic'obj object. The return value points to the most derived class that can be made out of ROLE='italic'obj. If ROLE='italic'obj is already the object's most derived type, then the return value is ROLE='italic'obj.REMAP='Body'Use ROLE='italic'typeid to generate the ROLE='italic'src parameter.See alsoREMAP='BodyNoLead'DynamicCast function, typeid, typeinfo classObjectPtr typedefMOREINFO="NONE"ocf/autodefs.hFORMAT="LINESPECIFIC"typedef void* ObjectPtr;REMAP='BodyNoLead'ROLE='italic'ObjectPtr is a ROLE='bold'void* that points to a C++ object.OC_APPxxxx messagesMOREINFO="NONE"ocf/ocapp.hREMAP='BodyNoLead'These messages are sent from ObjectComponents to the application's main window. They notify the application of signals and events that come from the OLE system. The actual message sent is WM_OCEVENT. The constants in the table below are carried in the message's ROLE='italic'wParam and identify particular events. To find out what each message carries in its ROLE='italic'lParam, look up the corresponding event handlers (such as ROLE='italic'EvOcAppBorderSpaceSet and ROLE='italic'EvOcAppMenus.)REMAP='Body'Applications that use the ObjectWindows Library can set up event handlers in their response tables using the EV_OC_xxxx macros defined in ocfevent.h. For more information about the data each message carries, see the descriptions of the corresponding event handlers.REMAP='Body'The constants beginning OC_APP indicate events typically handled in the main frame window. Another set of constants beginning OC_VIEW indicate events typically handled in the view object.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='117*'COLNAME='C2' COLWIDTH='257*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MessagesCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_APPDIALOGHELPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The user pressed the Help button in one of the standard OLE dialog boxes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_APPBORDERSPACEREQCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the container whether it can give the server border space in its frame window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_APPBORDERSPACESETCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the container to give the server border space in its frame window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_APPFRAMERECTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Requests coordinates for the inner rectangle of the container's main window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_APPINSMENUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the container to merge its menu into the shared menu bar.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_APPMENUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the container to install the merged menu bar.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_APPPROCESSMSGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the container to process accelerators and other messages from the server's message queue.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_APPRESTOREUICOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Tells the container to restore its normal menu and borders because in-place editing has ended.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_APPSHUTDOWNCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Tells the server when its last linked or embedded object closes down. If the user did not launch the server directly, the server can terminate.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_APPSTATUSTEXTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Passes text for the status bar from the server to the container during in-place editing.See alsoREMAP='BodyNoLead'OC_VIEWxxxx messages, WM_OCEVENT messageOC_VIEWxxxx messagesMOREINFO="NONE"ocf/ocview.hREMAP='BodyNoLead'These messages are sent from ObjectComponents to the application's window procedure. They notify the application of signals and events that come from the OLE system. The actual message sent is WM_OCEVENT. The constants in the table below are carried in the message's ROLE='italic'wParam and identify particular events. To find out what each message carries in its ROLE='italic'lParam, look up the corresponding event handlers (such as ROLE='italic'EvOcViewBorderSpaceSet and ROLE='italic'EvOcViewDrag.)REMAP='Body'Applications that use the ObjectWindows Library can set up event handlers in their response tables using the EV_OC_xxxx macros defined in ocfevent.h. For more information about the data each message carries, see the descriptions of the corresponding event handlers.REMAP='Body'The constants beginning OC_VIEW indicate events typically handled in the view object. Another set of constants beginning OC_APP indicate events that typically concern the application object. COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='121*'COLNAME='C2' COLWIDTH='253*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWATTACHWINDOWCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the server window to attach to its own frame window or the container's window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWBORDERSPACEREQCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Requests border space for in-place editing tools in the container's view.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWBORDERSPACESETCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Requests border space for in-place editing tools in the container's view.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWCLIPDATACOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the server for Clipboard data in a particular format.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWCLOSECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Tells server to close this remote view.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWDRAGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Requests visual feedback during a drag operation.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWDROPCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Accepts a dropped object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWGETPALETTECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the server for the palette it uses to paint its object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWGETSCALECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the container to give scaling information.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWGETSITERECTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks container for the site rectangle.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWINSMENUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the server to insert its menus in the menu bar for in-place editing.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWLOADPARTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the server to load its document. (The server's document contains one part.)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWOPENDOCCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the server for the extents of its open document.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWPAINTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the server to paint a remote view of its document.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWPARTINVALIDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Indicates that a part needs repainting.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWPARTSIZECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the server for the extents of its object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWSAVEPARTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the server to save its document. (The server's document contains one part.)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWSCROLLCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the client to scroll its view because the user is trying to drag something off the edge.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWSETSCALECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the server to handle scaling.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWSETSITERECTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the container to set the site rectangle.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWSHOWTOOLSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Asks the server to display its tool bars in the container's window for in-place editing.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'OC_VIEWTITLECOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Gets the title displayed in the view's window.See alsoREMAP='BodyNoLead'OC_APPxxxx constantsocrxxxx aspect constantsMOREINFO="NONE"ocf/ocreg.hREMAP='Body'These constants identify modes of presenting data. A server might be able to draw the same object several different ways, such as displaying its full content, creating a miniature representation of the content, or representing the type of object with an icon. REMAP='Body'When a server registers a data format, it also registers the aspects it supports for each format. The values of these constants are flags and can be combined with the bitwise OR operator (|).COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='66*'COLNAME='C2' COLWIDTH='114*'COLNAME='C3' COLWIDTH='194*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'OLE equivalentCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrContentCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DVASPECT_CONTENTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Show the full content of the object at its normal size.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrThumbnailCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DVASPECT_THUMBNAILCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Show the content of the object shrunk to fit in a smaller space.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrIconCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DVASPECT_ICONCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Show an icon representing the type of object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrDocPrintCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DVASPECT_DOCPRINTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Show the object as it would look if sent to the printer.See alsoREMAP='BodyNoLead'ocrxxxx constants, REGFORMAT macro, TOcAspect enumocrxxxx Clipboard constantsMOREINFO="NONE"ocf/ocreg.hREMAP='Body'These constants identify standard data formats for data that applications might share with each other. Use them in the REGFORMAT macro to describe the formats that your documents can import and export.COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='85*'COLNAME='C2' COLWIDTH='108*'COLNAME='C3' COLWIDTH='180*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Windows format nameCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrTextCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CF_TEXTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Array of text charactersCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrBitmapCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CF_BITMAPCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Device-dependent bitmapCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrMetafilePictCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CF_METAFILEPICTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'A Windows metafile wrapped in a METAFILEPICT structureCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrSylkCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CF_SYLKCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Symbolic Link FormatCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrDifCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CF_DIFCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Data Interchange FormatCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrTiffCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CF_TIFFCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Tag Image File FormatCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrOemTextCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CF_OEMTEXTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Text containing characters in the original equipment manufacturer's character set (usually ASCII)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrDibCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CF_DIBCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Device-independent bitmapCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrPaletteCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CF_PALETTECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'GDI palette objectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrPenDataCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CF_PENDATACOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Data for pen extensions to the operating systemCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrRiffCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CF_RIFFCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Resource Interchange File Format (often used for multimedia)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrWaveCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CF_WAVECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'A sound wave file (uses a subset of the RIFF format)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrUnicodeTextCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CF_UNICODETEXTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Wide-character Unicode text (32-bit only)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrEnhMetafileCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CF_ENHMETAFILECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Enhanced metafile (32-bit only)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrRichTextCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'"Rich Text Format"COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'RTF tagged text formatCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrEmbedSourceCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'"Embed Source"COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'OLE object that can be embeddedCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrEmbeddedObjectCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'"Embedded Object"COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'OLE object that is already embeddedCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrLinkSourceCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'"Link Source"COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'OLE object that can be linkedCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrObjectDescriptorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'"Object Descriptor"COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Descriptive information about an OLE object that can be embeddedCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrLinkSrcDescriptorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'"Link Source Descriptor"COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Descriptive information about an OLE object that can be linkedSee alsoREMAP='BodyNoLead'ocrxxxx constants, REGFORMAT macroocrxxxx direction constantsMOREINFO="NONE"ocf/ocreg.hREMAP='Body'These constants identify directions for passing data. For example, a server might be able to export and import bitmaps but only import metafiles. In that case, it uses ROLE='italic'ocrGetSet for the bitmap format and ROLE='italic'ocrGet for metafiles.REMAP='Body'When a server registers a data format, it also specifies whether it can get or set each format.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='60*'COLNAME='C2' COLWIDTH='188*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrGetCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Imports data in the given formatCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrSetCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Exports data in the given formatCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrGetSetCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Both exports and imports data in the given formatSee alsoREMAP='BodyNoLead'ocrxxxx constants, REGFORMAT macroocrxxxx limit constantsMOREINFO="NONE"ocf/ocreg.hREMAP='Body'These constants set the maximum number of verbs and data formats that an application is allowed to register for any one document type. Currently these limits are both set to 8.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='75*'COLNAME='C2' COLWIDTH='299*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrVerbLimitCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Maximum number of verbs a server can register for a documentCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrFormatLimitCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Maximum number of data formats an application can register for a documentSee alsoREMAP='BodyNoLead'ocrxxxx constantsocrxxxx medium constantsMOREINFO="NONE"ocf/ocreg.hREMAP='Body'These constants identify channels for passing data. A server might be able to pass a particular kind of object as a global memory handle, as a disk file handle, or through a data stream, for example.REMAP='Body'When a server registers a data format, it also registers the transfer channels it supports for each format. The values of these constants are flags and can be combined with the bitwise OR operator (|).COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='90*'COLNAME='C3' COLWIDTH='134*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'OLE equivalentCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrHGlobalCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TYMED_HGLOBALCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Handle to global memory objectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrFileCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TYMED_FILECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Handle to disk fileCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrIStreamCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TYMED_ISTREAMCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Stream object in a compound fileCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrIStorageCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TYMED_ISTORAGECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Storage object in a compound fileCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrGDICOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TYMED_GDICOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'GDI object (such as a bitmap)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrMfPictCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TYMED_MFPICTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'METAFILEPICT structureSee alsoREMAP='BodyNoLead'ocrxxxx constants, REGFORMAT macroocrxxxx object status constantsMOREINFO="NONE"ocf/ocreg.hREMAP='Body'These constants describe how an object behaves when presented in particular aspects. Register these options for documents using the REGSTATUS macro. REMAP='Body'The values of these constants are flags and can be combined with the bitwise OR operator (|).COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='135*'COLNAME='C2' COLWIDTH='239*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrActivateWhenVisibleCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Applies only if ROLE='italic'ocrInsideOut is set. Indicates that the object prefers to be active whenever it is visible. The container is not obliged to comply.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrCanLinkByOle1COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Used only in OBJECTDESCRIPTOR. Indicates that an OLE 1 container can link to the object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrCantLinkInsideCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'This object, when embedded, should not be made the source of a link.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrInsertNotReplaceCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'This object, when placed in a document, should not replace the current selection but be inserted next to it.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrInsideOutCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The object can be activated and edited without having to install menus or toolbars. Objects of this type can be active concurrently.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrIsLinkObjectCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Set by an OLE 2 link for OLE 1 compatibility. The system sets this bit automatically.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrNoSpecialRenderingCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Same as ROLE='italic'ocrRenderingIsDeviceIndependent.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrOnlyIconicCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The only useful way the server can draw this object is as an icon. The content view looks like the icon.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrRecomposeOnResizeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'When container site changes size, the server would like to redraw its object. (Presumably the server wants to do something other than scale.)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrRenderingIsDeviceIndependentCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The object makes no presentation decisions based on the target device. Its presentation data is always the same.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrStaticCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The object is an OLE static object and cannot be edited.See alsoREMAP='BodyNoLead'ocrxxxx constants, REGSTATUS macroocrxxxx usage constantsMOREINFO="NONE"ocf/ocreg.hREMAP='Body'These constants tell how a server supports concurrent clients. Use them to register the usage key for a server.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='75*'COLNAME='C2' COLWIDTH='197*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrSingleUseCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'One client per application instanceCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrMultipleUseCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Multiple clients per application instanceCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrMultipleLocalCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Multiple clients supported by separate in-proc serverSee alsoREMAP='BodyNoLead'ocrxxxx constants, usage registration keyocrxxxx verb attributes constantsMOREINFO="NONE"ocf/ocreg.hFORMAT="LINESPECIFIC"enum ocrVerbAttributesREMAP='BodyNoLead'These constants give the container hints about how a verb is used. Register these options for documents using the REGVERBOPT macro.REMAP='Body'The values of these constants are flags and can be combined with the bitwise OR operator (|). COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrNeverDirtiesCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The verb never modifies the object in such a way that it needs to be saved again.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrOnContainerMenuCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The verb should be displayed on the container's menu of object verbs when the object is active. The standard verbs Hide, Show, and Open should not have this flag set.See alsoREMAP='BodyNoLead'ocrxxxx constants, REGVERBOPT macroocrxxxx verb menu flagsMOREINFO="NONE"ocf/ocreg.hREMAP='Body'These constants describe how a server's verbs should appear on the container's menu. Register these options for documents using the REGVERBOPT macro.REMAP='Body'The values of these constants are flags and can be combined with the bitwise OR operator (|). COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='73*'COLNAME='C2' COLWIDTH='100*'COLNAME='C3' COLWIDTH='200*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Windows equivalentCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrGrayedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MF_GRAYEDCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Make the verb appear gray on the menu. This also disables the verb.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrDisabledCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MF_DISABLEDCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Disable the verb so the user cannot choose it.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrCheckedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MF_CHECKEDCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Place a check by the verb.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrMenuBarBreakCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MF_MENUBARBREAKCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Places the verb in a new column and adds a vertical line to separate the columns.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ocrMenuBreakCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'MF_MENUBREAKCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Places the verb in a new column without separating the columns.See alsoREMAP='BodyNoLead'ocrxxxx constants, REGVERBOPT macroOPTIONAL_ARG macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"OPTIONAL_ARG(cls, extName, default)REMAP='BodyNoLead'An automation server uses this macro in its automation definition (after DEFINE_AUTOCLASS) in order to describe one argument in an exposed method. REMAP='Body'After an EXPOSE_METHOD or EXPOSE_METHOD_ID macro, you need to add a list of argument macros, one for each parameter in the method. If the argument has a default value, then use the OPTIONAL_ARG macro.REMAP='Body'ROLE='italic'type is an automation class that describes the argument's data type. For example, if the argument is Boolean value, then ROLE='italic'type should be ROLE='italic'TAutoBool. For more information, see Automation Data Types.REMAP='Body'ROLE='italic'extName is the public name that a controller uses to refer to this argument. The string can be localized.REMAP='Body'ROLE='italic'default is the default value assigned if the caller chooses to omit the argument.path registration keyMOREINFO="NONE"REMAP='BodyNoLead'The path where OLE looks to find and load the server.REMAP='Body'The path is optional for any server's application registration table. Usually you can omit the path because by default ObjectComponents records the actual path and file name of the server when it registers itself.REMAP='Body'To register a path, use the REGDATA macro, passing ROLE='italic'path as the first parameter and the full path string, including .EXE name, as the second parameter.See alsoREMAP='BodyNoLead'REGDATA macropermid registration keyMOREINFO="NONE"REMAP='BodyNoLead'A string that names the application without indicating any version. The ROLE='italic'permid is just like the ROLE='italic'progid but without a version number. It always represents the latest installed version of a class.REMAP='Body'The ROLE='italic'permid key is valid in any registration table. It is always optional. If you register ROLE='italic'permid, you should also register ROLE='italic'permname. Like the ROLE='italic'progid, the ROLE='italic'permid cannot be localized.REMAP='Body'To register ROLE='italic'permid, use the REGDATA macro, passing ROLE='italic'permid as the first parameter and the ID string as the second parameter.See alsoREMAP='BodyNoLead'permname registration key, progid registration key, REGDATA macro, version registration keypermname registration keyMOREINFO="NONE"REMAP='BodyNoLead'A string that describes the application without indicating any version. The ROLE='italic'permname is just like the ROLE='italic'description but without a version number. It always represents the latest installed version of a class. A ROLE='italic'permname value can contain up to 40 characters.REMAP='Body'The ROLE='italic'permname key is valid in any registration table. It is always optional. If you register ROLE='italic'permname, you should also register ROLE='italic'permid. The ROLE='italic'permname string should be localized.REMAP='Body'To register ROLE='italic'permname, use the REGDATA macro, passing ROLE='italic'permname as the first parameter and the descriptive string as the second parameter.See alsoREMAP='BodyNoLead'description registration key, permid registration key, REGDATA macro, version registration keyprogid registration keyMOREINFO="NONE"REMAP='BodyNoLead'Registers a string which uniquely identifies the class. REMAP='Body'The string can contain up to 39 characters. The first character must be a letter. Subsequent characters can be letters, digits, or periods (no spaces or other delimiters). Conventionally, the ROLE='italic'progid value has three parts separated by periods. They are the program name, an object name, and a version number. The value of the progid cannot be ROLE='italic'localized.REMAP='Body'A ROLE='italic'progid string is required in every application registration table. To register a ROLE='italic'progid, use the REGDATA macro, passing ROLE='italic'progid as the first parameter and the identifier string as the second parameter.FORMAT="LINESPECIFIC"REGDATA(progid, "DrawingPad.Application.2")See alsoREMAP='BodyNoLead'REGDATA macroREQUIRED_ARG macroMOREINFO="NONE"ocf/automacr.hFORMAT="LINESPECIFIC"REQUIRED_ARG(type, extName);REMAP='BodyNoLead'An automation server uses this macro in its automation definition (after DEFINE_AUTOCLASS) in order to describe one argument in an exposed method. REMAP='Body'After an EXPOSE_METHOD or EXPOSE_METHOD_ID macro, you need to add a list of argument macros, one for each parameter in the method. If the argument does not have a default value and is not an object, then use the REQUIRED_ARG macro.REMAP='Body'ROLE='italic'type is an automation class that describes the argument's data type. For example, if the argument is Boolean value, then ROLE='italic'type should be ROLE='italic'TAutoBool. For more information, see Automation Data Types.REMAP='Body'ROLE='italic'extName is the external, public name that a controller uses to refer to this argument. The string can be localized.TAutoBase classMOREINFO="NONE"ocf/autodefs.hREMAP='BodyNoLead'ROLE='italic'TAutoBase is a base class for deriving automatable objects. The class does only one thing: whenever an object of ROLE='italic'TAutoBase is destroyed, the destructor notifies OLE that the object is no longer available. REMAP='Body'Automated objects are not required to derive from ROLE='italic'TAutoBase. Doing so is simply a safeguard and matters only if the logic of the program makes it possible for the automated object to be destroyed by non-automated means while still connected to an OLE controller.REMAP='Body'If you are using ROLE='italic'TAutoBase to derive classes with explicit class specifiers that do not match the default specifiers for the application's model, then be sure to define the _AUTOCLASS macro.See alsoREMAP='BodyNoLead'_AUTOCLASS macroPublic destructorDestructorFORMAT="LINESPECIFIC"virtual ~TAutoBase( );REMAP='BodyNoLead'The virtual destructorname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'the only member of class ROLE='italic'TAutoBasename='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'sends OLE an obituary when the object is destroyed. The notification matters in cases where the object might be destroyed by non-automated means, without the knowledge of OLE, while still connected to an automation controller. Sending the obituary prevents a crash if OLE subsequently sends a command to the nonexistent object.TAutoBool structMOREINFO="NONE"ocf/autodefs.hREMAP='BodyNoLead'Use ROLE='italic'TAutoBool in an automation definition to describe the parameters and return values of automated methods.Public data memberClassInfoFORMAT="LINESPECIFIC"static TAutoType ClassInfo;REMAP='BodyNoLead'The ROLE='italic'ClassInfo member of ROLE='italic'TAutoBool holds information that identifies the Boolean data type.TAutoCommand classMOREINFO="NONE"ocf/autodefs.hREMAP='BodyNoLead'ROLE='italic'TAutoCommand is an abstract base class for automation command objects. An automation server constructs a command object whenever it receives a command from an automation controller. The command object receives all parameters as VARIANT unions from OLE. The compiler generates calls to command object conversion functions in order to extract the proper C++ data type from the union.REMAP='Body'All this happens internally. Normally you should not have to construct or manipulate ROLE='italic'TAutoCommand objects directly.Public constructor and destructorConstructorFORMAT="LINESPECIFIC"TAutoCommand(int attr);REMAP='BodyNoLead'Creates a command having the attributes set in the ROLE='italic'attr flag mask. The flags are defined in the ROLE='italic'AutoSymFlag enum.DestructorFORMAT="LINESPECIFIC"virtual ~TAutoCommand( );REMAP='BodyNoLead'Destroys the ROLE='italic'TAutoCommand object.See also REMAP='BodyNoLead'AutoSymFlag enumType definitionsTCommandHookFORMAT="LINESPECIFIC"typedef bool (*TCommandHook)(TAutoCommand& cmdObj);REMAP='BodyNoLead'Describes the prototype for a user-defined callback function called during ROLE='italic'Invoke, before executing the automation command object. ROLE='italic'cmdObj is the object about to be executed. If the callback returns ROLE='bold'false, ROLE='italic'Invoke does not execute the command.See alsoREMAP='BodyNoLead'TAutoCommand::Invoke, TAutoCommand::SetCommandHookTErrorMsgHookFORMAT="LINESPECIFIC"typedef const char* (*TErrorMsgHook)(long errCode);REMAP='BodyNoLead'Describes the prototype for a user-defined callback function called after ROLE='italic'Invoke to process any error code the command might return. ROLE='italic'errCode is the status result. The callback is expected to return a string describing the error for the user.See alsoREMAP='BodyNoLead'TAutoCommand::LookupError, TAutoCommand::SetErrorMsgHookPublic member functionsClearFlagFORMAT="LINESPECIFIC"void ClearFlag(int mask);REMAP='BodyNoLead'Clears all the flags in ROLE='italic'mask. The flags are defined in the ROLE='italic'AutoSymFlag enum.See alsoREMAP='BodyNoLead'AutoSymFlag enumExecuteFORMAT="LINESPECIFIC"virtual void Execute( );REMAP='BodyNoLead'Executes the automation command by invoking the internal C++ member of the automated class to which the command belongs.FailFORMAT="LINESPECIFIC"void Fail(TXAuto::TError);REMAP='BodyNoLead'Throws whatever exception is indicated by the parameter.See alsoREMAP='BodyNoLead'TXAuto::TError enumGetSymbolFORMAT="LINESPECIFIC"TAutoSymbol* GetSymbol( );REMAP='BodyNoLead'Retrieves the symbol that generates this command.InvokeFORMAT="LINESPECIFIC"virtual TAutoCommand& Invoke( );REMAP='BodyNoLead'Initiates the process of executing a command. The user can override the usual process by supplying a hook with the AUTOINVOKE macro.See alsoREMAP='BodyNoLead'AUTOINVOKE macro, TAutoCommand::SetCommandHookIsPropSetFORMAT="LINESPECIFIC"bool IsPropSet( );REMAP='BodyNoLead'Returns ROLE='bold'true if the ROLE='italic'asSet property flag is set. This flag indicates that the command assigns a value to some property of the automated class and does not return a value.LookupErrorFORMAT="LINESPECIFIC"static const char* LookupError(long errCode);REMAP='BodyNoLead'Translates an error code from a function into a message string for the user. errCode is a function status value sent by Report. ROLE='italic'LookupError works by calling a function you have installed with ROLE='italic'SetErrorMsgHook. You do not have to call ROLE='italic'LookupError directly. If you have installed an error message hook, ROLE='italic'LookupError is called for you at the right time.See alsoREMAP='BodyNoLead'TAutoCommand::ReportRecordFORMAT="LINESPECIFIC"virtual int Record(TAutoStack& q);REMAP='BodyNoLead'Records the command and its arguments by calling any hook the programmer might have supplied in the automation declaration with the AUTORECORD macro.REMAP='Body'Recording is not supported in the current version of ObjectComponents.See alsoREMAP='BodyNoLead'AUTORECORD macroReportFORMAT="LINESPECIFIC"virtual long Report( );REMAP='BodyNoLead'The AUTOREPORT macro invokes this function to translate the status code a command returns into an error code.See alsoREMAP='BodyNoLead'AUTOREPORT MacroREMAP='Body'TAutoCommand::SetErrorMsgHookReturnFORMAT="LINESPECIFIC"virtual void Return(TAutoVal& v);REMAP='BodyNoLead'Converts whatever value the internal C++ command returned into a VARIANT union. The converted value is passed to OLE. This is what the automation controller receives as its return value.SetCommandHookFORMAT="LINESPECIFIC"static TCommandHook SetCommandHook(TCommandHook callback);REMAP='BodyNoLead'Installs a user-defined callback function of type ROLE='italic'TCommandHook to be called whenever the command is executed. The command hook is useful for monitoring automation calls.See alsoREMAP='BodyNoLead'TAutoCommand::Invoke, TAutoCommand::SetErrorMsgHook, TAutoCommand::TCommandHook typedefSetErrorMsgHookFORMAT="LINESPECIFIC"static TErrorMsgHook SetErrorMsgHook(TErrorMsgHook callback);REMAP='BodyNoLead'Installs a user-defined callback function of type ROLE='italic'TErrorMsgHook to be called if the command returns an error code.See alsoREMAP='BodyNoLead'TAutoCommand::LookupError, TAutoCommand::Report, TAutoCommand::SetCommandHook, TAutoCommand::TErrorMsgHook typedefSetFlagFORMAT="LINESPECIFIC"void SetFlag(int mask);REMAP='BodyNoLead'Sets all the flags in mask. The flags are defined in the ROLE='italic'TAutoSymFlag enum.See alsoREMAP='BodyNoLead'AutoSymFlag enumSetSymbolFORMAT="LINESPECIFIC"void SetSymbol(TAutoSymbol* sym);REMAP='BodyNoLead'Assigns a symbol to the command object. The symbol is set internally. It is taken from the tables built by the automation definition and declaration of the automated class.TestFlagFORMAT="LINESPECIFIC"bool TestFlag(int mask);REMAP='BodyNoLead'Returns ROLE='bold'true if any of the flags in mask are set for this command. The flags are defined in the ROLE='italic'AutoSymFlag enum.See alsoREMAP='BodyNoLead'AutoSymFlag enumUndoFORMAT="LINESPECIFIC"virtual TAutoCommand* Undo( );REMAP='BodyNoLead'Generates a command for the undo stack by calling any hook the programmer might have supplied in the automation declaration with the AUTOUNDO macro.REMAP='BodyNoLead'Undoing commands is not supported in the current version of ObjectComponents.See alsoREMAP='BodyNoLead'AUTOUNDO macroValidateFORMAT="LINESPECIFIC"virtual bool Validate( );REMAP='BodyNoLead'Tests the validity of the command's parameters by executing whatever validation function or expression the programmer supplied in the automation declaration with the AUTOVALIDATE macro.See alsoREMAP='BodyNoLead'AUTOVALIDATE macroProtected data membersAttrFORMAT="LINESPECIFIC"int Attr;REMAP='BodyNoLead'Attribute and state flags. The flags are defined in the ROLE='italic'AutoSymFlag enum.See alsoREMAP='BodyNoLead'AutoSymFlag enumSymbolFORMAT="LINESPECIFIC"TAutoSymbol* Symbol;REMAP='BodyNoLead'The symbol entry that generates this command. OLE passes this symbol to make this command execute.TAutoCurrency structMOREINFO="NONE"ocf/autodefs.hREMAP='BodyNoLead'ROLE='italic'TAutoCurrency is an automation data type that helps ObjectComponents provide type checking for members of an automated class exposed to OLE. Use ROLE='italic'TAutoCurrency in an automation definition to identify currency values.Public data memberClassInfoFORMAT="LINESPECIFIC"static TAutoType ClassInfo;REMAP='BodyNoLead'The ROLE='italic'ClassInfo member of ROLE='italic'TAutoCurrency holds information that identifies data as a currency value.TAutoDate structMOREINFO="NONE"ocf/autodefs.hREMAP='BodyNoLead'ROLE='italic'TAutoDate is an automation data type that helps ObjectComponents provide type checking for members of an automated class exposed to OLE. Use ROLE='italic'TAutoDate in an automation definition to identify date values stored as type ROLE='bold'double.Public data membersClassInfoFORMAT="LINESPECIFIC"static TAutoType ClassInfo;REMAP='BodyNoLead'The ROLE='italic'ClassInfo member of ROLE='italic'TAutoDate holds information that identifies the date data type.DateFORMAT="LINESPECIFIC"double Date;REMAP='BodyNoLead'Stores a date as a 32-bit value.Public constructorsConstructorsFORMAT="LINESPECIFIC"TAutoDate( );REMAP='BodyNoLead'Creates an empty ROLE='italic'TAutoDate.FORMAT="LINESPECIFIC"TAutoDate(double d);REMAP='BodyNoLead'Creates a ROLE='italic'TAutoDate that initially holds the value in ROLE='italic'd, assumed to be a date.Public member functionoperator doubleFORMAT="LINESPECIFIC"operator double( );REMAP='BodyNoLead'Returns the value stored in the Date field of ROLE='italic'TAutoDate.TAutoDouble structMOREINFO="NONE"ocf/autodefs.hREMAP='BodyNoLead'ROLE='italic'TAutoDouble is an automation data type that helps ObjectComponents provide type checking for members of an automated class exposed to OLE. Use ROLE='italic'TAutoDouble in an automation definition to identify ROLE='bold'double values.Public data memberClassInfoFORMAT="LINESPECIFIC"static TAutoType ClassInfo;REMAP='BodyNoLead'The ROLE='italic'ClassInfo member of ROLE='italic'TAutoDouble holds information that identifies the ROLE='bold'double data type.TAutoEnumerator<> classMOREINFO="NONE"ocf/autodefs.hREMAP='BodyNoLead'An automation controller creates a ROLE='italic'TAutoEnumerator object to enumerate items in a collection held by an automation server. A collection can contain any set of similar values or objects that the server chooses to expose as a group. The items in the collection might be numbers in an array, for example, or each one might be an automated object.REMAP='Body'The type you pass to the template is the type of value the collection holds. If the collection is a set of integer values, pass ROLE='bold'int. If the collection holds automated objects, pass the controller's proxy class (derived from ROLE='italic'TAutoProxy).REMAP='Body'At first, a newly created enumerator is empty. After you call Step, the enumerator holds the first value in the collection. To see the value, call ROLE='italic'Value if the collection contains values of intrinsic data types, such as int or ROLE='bold'float, or call ROLE='italic'Object if the collection contains automated objects. ROLE='italic'Step, Value, and ROLE='italic'Object are the most important methods of ROLE='italic'TAutoEnumerator. The others are generally called for you at the right time.Public constructors and destructorConstructorsFORMAT="LINESPECIFIC"TAutoEnumerator( );REMAP='BodyNoLead'Constructs an enumerator object but does not attach it to any automated collection.FORMAT="LINESPECIFIC"TAutoEnumerator(const TAutoEnumerator& copy);REMAP='BodyNoLead'Constructs a new enumerator object by copying an existing one. Both enumerators are attached to the same collection of objects.REMAP='BodyNoLead'However it is constructed, a newly created TAutoEnumerator object does not yet hold any value. Always call ROLE='italic'Step to get the first item before calling ROLE='italic'Value or ROLE='italic'Object to see the item.DestructorFORMAT="LINESPECIFIC"~TAutoEnumerator( );REMAP='BodyNoLead'Detaches the enumerator from its collection before allowing the enumerator to be destroyed.See alsoREMAP='BodyNoLead'TAutoEnumerator::StepTAutoEnumerator_StepPublic member functionsBindFORMAT="LINESPECIFIC"void Bind(TAutoVal& val);REMAP='BodyNoLead'Connects the enumerator to the collection object, ROLE='italic'val. ROLE='italic'Bind is called internally when the controller passes the enumerator object to a method that returns a collection.See alsoREMAP='BodyNoLead'TAutoEnumerator::UnbindClearFORMAT="LINESPECIFIC"void Clear( );REMAP='BodyNoLead'Empties the enumerator so that it no longer points to any item in the collection. This method is called internally during ROLE='italic'Step.See alsoREMAP='BodyNoLead'TAutoEnumerator::StepObjectFORMAT="LINESPECIFIC"void Object(TAutoProxy& prx);REMAP='BodyNoLead'Returns in ROLE='italic'prx the current object from the collection. Use ROLE='italic'Object if the items in the collection are automated objects. If the collection contains data values, then call ROLE='italic'Value instead.REMAP='Body'To advance the enumerator so that ROLE='italic'Object returns the next object, call ROLE='italic'Step.See alsoREMAP='BodyNoLead'TAutoEnumerator::Step, TAutoEnumerator::ValueStepFORMAT="LINESPECIFIC"bool Step( );REMAP='BodyNoLead'Advances the enumerator object one step so that ROLE='italic'Value returns the next item in the collection. ROLE='italic'Step returns ROLE='bold'false when called after the enumerator has reached the last item in the collection.See alsoREMAP='BodyNoLead'TAutoEnumerator::Object, TAutoEnumerator::ValueUnbindFORMAT="LINESPECIFIC"void Unbind( );REMAP='BodyNoLead'Disconnects the enumerator object from the collection it currently enumerates.See alsoREMAP='BodyNoLead'TAutoEnumerator::BindValueFORMAT="LINESPECIFIC"void Value(T& v);REMAP='BodyNoLead'Returns in ROLE='italic'v the current item from the collection. Use ROLE='italic'Value if the items in the collection are data values. If the collection contains objects, then call ROLE='italic'Object instead.REMAP='Body'To advance the enumerator so that ROLE='italic'Value returns the next item, call ROLE='italic'Step.See alsoREMAP='BodyNoLead'TAutoEnumerator::Object, TAutoEnumerator::StepTAutoFloat structMOREINFO="NONE"ocf/autodefs.hREMAP='Body'ROLE='italic'TAutoFloat is an automation data type that helps ObjectComponents provide type checking for members of an automated class exposed to OLE. Use ROLE='italic'TAutoFloat in an automation definition to identify ROLE='bold'float values.Public data memberClassInfoFORMAT="LINESPECIFIC"static TAutoType ClassInfo;REMAP='BodyNoLead'The ROLE='italic'ClassInfo member of ROLE='italic'TAutoFloat holds information that identifies the ROLE='bold'float data type.TAutoIterator classMOREINFO="NONE"ocf/autodefs.hREMAP='BodyNoLead'ROLE='italic'TAutoIterator is a pure virtual base class for iterator objects. An iterator is used to enumerate a collection of other objects. The iterator's methods let the caller step through a list of objects and examine each one in turn.REMAP='Body'An automation server needs to create an iterator in any automated object that represents a collection of other objects. To create an iterator, the server usually inserts an AUTOITERATOR macro in the automation definition of the collection class (after DEFINE_AUTOCLASS).REMAP='Body'In most cases, you do not need to work with the iterator class directly because the AUTOITERATOR macro implements the object for you. In cases where the iterator requires a more complex implementation, however, you might need to define the class directly yourself.REMAP='Body'You can still declare the class using AUTOITERATOR_DECLARE instead of AUTOITERATOR. This is just a shortcut for writing out all the standard members of an iterator object by hand.REMAP='Body'ROLE='italic'TAutoIterator has five pure virtual members that any derived class must implement. These five functions compose a standard interface for iterators in automated collection objects. They are ROLE='italic'Init, Test, Step, Return, and ROLE='italic'Copy. The first four correspond to steps in a for loop that steps through the collection. (See AUTOITERATOR for a description of the correspondence.) ROLE='italic'Copy creates a duplicate iterator.REMAP='Body'The constructors are protected because ROLE='italic'TAutoIterator should be constructed only by a derived class.REMAP='Body'Besides implementing the inherited virtual functions, a class derived from ROLE='italic'TAutoIterator also typically declares one or more data members that record the iterator's current state. Usually the state variable remembers a position in the sequence of enumerated objects.REMAP='Body'ROLE='italic'TAutoIterator is a COM object and implements the ROLE='italic'IUnknown interface.Public member functionsCopyFORMAT="LINESPECIFIC"virtual TAutoIterator* Copy( )=0;REMAP='BodyNoLead'Returns a copy of the iterator object. Your implementation should copy the iterator's state variables.See alsoREMAP='BodyNoLead'TAutoIterator::Init, TAutoIterator::Return, TAutoIterator::Step, TAutoIterator::TestGetSymbolFORMAT="LINESPECIFIC"TAutoSymbol* GetSymbol( );REMAP='BodyNoLead'Retrieves the automation symbol associated with the iterator. Usually you do not need to call this function.See alsoREMAP='BodyNoLead'TAutoIterator::SetSymbolInitFORMAT="LINESPECIFIC"virtual void Init( )=0;REMAP='BodyNoLead'Initializes any state variables in the iterator. The primary task of an iterator is to loop through a list of objects enumerating them one by one. ROLE='italic'Init tells the iterator to prepare for beginning a new pass through the loop. For example, if the iterator's state variable is called ROLE='italic'index, Init might sayFORMAT="LINESPECIFIC"index = 0;See alsoREMAP='BodyNoLead'TAutoIterator::Copy, TAutoIterator::Return, TAutoIterator::Step, TAutoIterator::TestIUnknownFORMAT="LINESPECIFIC"operator IUnknown*( );REMAP='BodyNoLead'Returns a pointer to the iterator's ROLE='italic'IUnknown OLE interface and calls ROLE='italic'AddRef on the interface pointer. This operator is called internally to return the iterator to OLE. Usually you do not need to call it directly yourself.ReturnFORMAT="LINESPECIFIC"virtual void Return(TAutoVal& value)=0;REMAP='BodyNoLead'Extracts one item from a collection and returns a reference to it in the value parameter. The primary task of an iterator is to loop through a list of objects enumerating them one by one. ROLE='italic'Return is the command that retrieves a different item from the collection on each pass through the loop. For example, ROLE='italic'Return might look like this:FORMAT="LINESPECIFIC"value = (Collection->Array)[Index]REMAP='Body'where ROLE='italic'value is the function's parameter, ROLE='italic'Collection points to the enclosing collection object, ROLE='italic'Array is a member of ROLE='italic'Collection, and ROLE='italic'Index is the iterator's state variable.REMAP='Body'ROLE='italic'value is type ROLE='italic'TAutoVal and represents a VARIANT union, which is the format in which OLE passes values. ROLE='italic'TAutoVal defines conversion operators to handle standard C++ data types as well as C++ strings, ROLE='italic'TAutoCurrency, TAutoData, and automated C++ objects. The items in a collection can be any of these types.See alsoREMAP='BodyNoLead'TAutoIterator::Copy, TAutoIterator::Init, TAutoIterator::Step, TAutoIterator::TestSetSymbolFORMAT="LINESPECIFIC"void SetSymbol(TAutoSymbol* sym);REMAP='BodyNoLead'Associates an automation symbol with the iterator. ROLE='italic'SetSymbol is called internally during the construction of the iterator. Usually you do not need to call it directly yourself.See alsoREMAP='BodyNoLead'TAutoIterator::GetSymbolStepFORMAT="LINESPECIFIC"virtual void Step( )=0;REMAP='BodyNoLead'Advances the iterator to point to the next item in a collection. The primary task of an iterator is to loop through a list of objects enumerating them one by one. ROLE='italic'Step is like the i++ statement in a ROLE='bold'for loop. It changes the state of the iterator to focus on the next item. For example, if the iterator's state variable is called ROLE='italic'index, ROLE='italic'Step might simply say FORMAT="LINESPECIFIC"index++;See alsoREMAP='BodyNoLead'TAutoIterator::Copy, TAutoIterator::Init, TAutoIterator::Return, TAutoIterator::TestTestFORMAT="LINESPECIFIC"virtual bool Test( )=0;REMAP='BodyNoLead'Tests whether all items have been enumerated. The primary task of an iterator is to loop through a list of objects, enumerating them one by one. ROLE='italic'Test returns ROLE='bold'true if more objects remain to be enumerated and ROLE='bold'false when it reaches the end of the list. For example, if the iterator's state variable is called ROLE='italic'index, ROLE='italic'Test might sayFORMAT="LINESPECIFIC"return (index >= NUM_ITEMS);See alsoREMAP='BodyNoLead'TAutoIterator::Copy, TAutoIterator::Init, TAutoIterator::Return, TAutoIterator::StepProtected constructorsConstructorsFORMAT="LINESPECIFIC"TAutoIterator (TServedObject& owner);REMAP='BodyNoLead'Constructs an iterator to enumerate items held in the ROLE='italic'owner class. ROLE='italic'owner can be any automated class.FORMAT="LINESPECIFIC"TAutoIterator (TAutoIterator& copy);REMAP='BodyNoLead'Constructs an iterator by creating a copy of another iterator. Both iterators enumerate the same collection of objects.REMAP='Body'The constructors are protected because only a derived class should construct a ROLE='italic'TAutoIterator.Protected data memberOwnerFORMAT="LINESPECIFIC"TServedObject& Owner;REMAP='BodyNoLead'Holds a reference to the collection object that encloses the iterator. Owner is initialized by the constructor. The undocumented ROLE='italic'TServedObject class implements the interfaces that a client expects to find on an OLE object. ObjectComponents uses this class internally. Owner can be any automated object.TAutoLong structMOREINFO="NONE"ocf/autodefs.hREMAP='BodyNoLead'ROLE='italic'TAutoLong is an automation data type that helps ObjectComponents provide type information for members of an automated class exposed to OLE. Use ROLE='italic'TAutoLong in an automation definition to identify ROLE='bold'long values.Public data memberClassInfoFORMAT="LINESPECIFIC"static TAutoType ClassInfo;REMAP='BodyNoLead'The ROLE='italic'ClassInfo member of ROLE='italic'TAutoLong holds information that identifies the ROLE='bold'long data type.TAutoObject <> classMOREINFO="NONE"ocf/autodefs.hREMAP='BodyNoLead'ROLE='italic'TAutoObject holds a pointer to a C++ object. ROLE='italic'TAutoObject casts the pointer to different data types appropriately when an automation operation requires conversion. It also retrieves type information about the object when needed during automation. Think of ROLE='italic'TAutoObject as a smart pointer.REMAP='Body'ObjectComponents often creates smart pointers for you. Usually you do not need to manipulate ROLE='italic'TAutoObject objects directly.Public constructorsConstructorsFORMAT="LINESPECIFIC"TAutoObject( );REMAP='BodyNoLead'Constructs an empty ROLE='italic'TAutoObject that contains no pointer.FORMAT="LINESPECIFIC"TAutoObject(T* point);REMAP='BodyNoLead'Constructs a ROLE='italic'TAutoObject that holds the pointer ROLE='italic'point.FORMAT="LINESPECIFIC"TAutoObject(T& ref);REMAP='BodyNoLead'Constructs a ROLE='italic'TAutoObject that holds a pointer to the object ROLE='italic'ref.FORMAT="LINESPECIFIC"TAutoObject(IDispatch* dispatch);REMAP='BodyNoLead'Attempts to read type information from the object that owns the ROLE='italic'IDispatch interface. If it succeeds, the constructor builds a ROLE='italic'TAutoObject around a pointer to the C++ object. If it fails, the constructor throws a ROLE='italic'TXAuto::xTypeMismatch exception.Public member functionsoperator *( )FORMAT="LINESPECIFIC"T& operator*( );REMAP='BodyNoLead'The dereference operator returns a reference to the object whose pointer ROLE='italic'TAutoObject holds.operator =REMAP='BodyNoLead'void operator=(T* point);REMAP='BodyNoLead'Places the ROLE='italic'point pointer in the ROLE='italic'TAutoObject.FORMAT="LINESPECIFIC"void operator=(T& ref);REMAP='BodyNoLead'Places a pointer to the object ROLE='italic'ref in the ROLE='italic'TAutoObject.FORMAT="LINESPECIFIC"void operator=(IDispatch* dispatch);REMAP='BodyNoLead'Attempts to read type information from the object that owns the ROLE='italic'IDispatch interface. If it succeeds, the operator places in the ROLE='italic'TAutoObject a pointer to the C++ object. If it fails, the constructor throws a ROLE='italic'TXAuto::ROLE='italic'xTypeMismatch exception.REMAP='Body'The assignment operators place a pointer to a C++ object in the ROLE='italic'TAutoObject. They are usually used to initialize the ROLE='italic'TAutoObject after creating it with the default constructor.operator T& ( )FORMAT="LINESPECIFIC"operator T&( );REMAP='BodyNoLead'Returns a reference to the object whose pointer ROLE='italic'TAutoObject holds.operator T* ( )FORMAT="LINESPECIFIC"operator T*( );REMAP='BodyNoLead'Returns a pointer to the object ROLE='italic'TAutoObject holds.TObjectDescriptor( )FORMAT="LINESPECIFIC"operator TObjectDescriptor( );REMAP='BodyNoLead'Constructs and returns a new object descriptor object based on the pointer that ROLE='italic'TAutoObject holds. This operator is called internally to obtain type information for constructing an automation object.Protected data memberoperator PFORMAT="LINESPECIFIC"T& operator*( );REMAP='BodyNoLead'The dereference operator returns a reference to the object whose pointer ROLE='italic'TAutoObject holds.TAutoObjectByVal<> classMOREINFO="NONE"ocf/autodefs.hBase classFORMAT="LINESPECIFIC"TAutoObjectDeleteREMAP='BodyNoLead'An automation server uses this class when an automated method needs to return a copy of an object. Usually you do not have use the class directly because the automation macros make the proper declarations for you.REMAP='Body'To return an object, ROLE='italic'TAutoObjectByVal clones the object by calling its copy constructor. The clone is passed to the automation controller as the return value from some automation command. ROLE='italic'TAutoObjectByVal holds on to the cloned object until the controller releases it. Then it destroys the object by calling its destructor.REMAP='Body'In other respects, ROLE='italic'TAutoObjectByVal closely resembles its parent class, ROLE='italic'TAutoObjectDelete.See alsoREMAP='BodyNoLead'TAutoObjectDeletePublic data memberoperator =FORMAT="LINESPECIFIC"void operator =(T obj);REMAP='BodyNoLead'This operator creates a new object of type ROLE='italic'T by copying the original object, ROLE='italic'obj. The copy is passed to an automation controller as the return value from an automated method. ROLE='italic'T is the data type passed into the template.Public constructorsConstructorsFORMAT="LINESPECIFIC"TAutoObjectByVal( );REMAP='BodyNoLead'Creates an empty ROLE='italic'TAutoObjectByVal.FORMAT="LINESPECIFIC"TAutoObjectByVal(T obj);REMAP='BodyNoLead'Creates a ROLE='italic'TAutoObjectByVal that holds a copy of the object ROLE='italic'obj. T is the data type passed into the template.TAutoObjectDelete <> classMOREINFO="NONE"ocf/autodefs.hBase classFORMAT="LINESPECIFIC"TAutoObjectREMAP='BodyNoLead'An automation server uses this class when an automated method needs to return an object to an automation controller. Usually you do not have use the class directly because the automation macros make the proper declarations for you.REMAP='Body'Like its parent class ROLE='italic'TAutoObject, TAutoObjectDelete exists in order to hold a pointer to an object and convert it as necessary when the object is passed from server to client through automation calls. The difference between the two classes is that when the automation controller is through with the automated object, ROLE='italic'TAutoObjectDelete informs the connector object that it can let the automated C++ object call its destructor.See alsoREMAP='BodyNoLead'TAutoObject classPublic constructorsConstructorsFORMAT="LINESPECIFIC"TAutoObjectDelete( );REMAP='BodyNoLead'Creates an empty ROLE='italic'TAutoObjectDelete object.FORMAT="LINESPECIFIC"TAutoObjectDelete(T* p);REMAP='BodyNoLead'Creates a ROLE='italic'TAutoObjectDelete object from a pointer to another object.FORMAT="LINESPECIFIC"TAutoObjectDelete(T& r);REMAP='BodyNoLead'Creates a ROLE='italic'TAutoObjectDelete object from a reference to another object.REMAP='Body'The ROLE='italic'TAutoObjectDelete constructors do nothing but pass their parameters back to the parent class, ROLE='italic'TAutoObject.Public member functionsoperator =FORMAT="LINESPECIFIC"void operator =(T& r);REMAP='BodyNoLead'Tells ROLE='italic'TAutoObjectDelete to hold a pointer to the object referred to by ROLE='italic'r.FORMAT="LINESPECIFIC"void operator =(T* p);REMAP='BodyNoLead'Tells TAutoObjectDelete to hold the pointer ROLE='italic'p.TObjectDescriptor( )FORMAT="LINESPECIFIC"operator TObjectDescriptor( );REMAP='BodyNoLead'Returns type information describing the object.TAutoProxy classMOREINFO="NONE"ocf/autodefs.hREMAP='BodyNoLead'An automation controller derives classes from ROLE='italic'TAutoProxy to represent automated OLE objects that it wants to command. To send commands to an automated object, the controller invokes methods on the proxy that represents the object. ObjectComponents connects the proxy to the original so that invoking members of the proxy also invokes members of the automated object.REMAP='Body'A proxy object must inherit from ROLE='italic'TAutoProxy. In the derived class, the controller declares one method for each command it wants to send. The declared methods must match the prototypes of the desired commands. To implement these proxy methods, the controller uses three macros: AUTONAMES, AUTOARGS, and AUTOCALL. The macros insert code that calls down to the base class. ROLE='italic'TAutoProxy passes the commands to OLE.REMAP='Body'Usually you do not have to call anything in ROLE='italic'TAutoProxy directly. All you have to do is derive your proxy class from ROLE='italic'TAutoProxy and implement the methods with the proxy macros.REMAP='Body'To generate proxy classes quickly and easily, use the AUTOGEN.EXE tool in the OCTOOLS directory. AUTOGEN reads the automation server's type library and writes all the necessary headers and source files for your proxy objects.Public destructorDestructorFORMAT="LINESPECIFIC"~TAutoProxy( );REMAP='BodyNoLead'Destroys the ROLE='italic'TAutoProxy object.REMAP='Body'The constructors are protected because only derived proxy classes should call them.Public member functionsBindFORMAT="LINESPECIFIC"void Bind(IUnknown* obj);REMAP='BodyNoLead'Binds the proxy object to a server identified by a pointer to its ROLE='italic'IUnknown interface. Throws a TXOle exception for failure.FORMAT="LINESPECIFIC"void Bind(IUnknown& obj);REMAP='BodyNoLead'Binds the proxy object to a server identified by a reference to its ROLE='italic'IUnknown interface. Throws a ROLE='italic'TXOle exception for failure.FORMAT="LINESPECIFIC"void Bind(const GUID& guid);REMAP='BodyNoLead'Binds the proxy object to a server identified by its globally unique ID (GUID). This is the ROLE='italic'clsid that the server registered for objects of the type you want to control. Throws a ROLE='italic'TXOle exception for failure.FORMAT="LINESPECIFIC"void Bind(char far* progid);REMAP='BodyNoLead'Binds the proxy object to a server identified by its ROLE='italic'progid. (This is the GUID that the server registered to identify the application itself.) Throws a ROLE='italic'TXOle exception for failure.FORMAT="LINESPECIFIC"void Bind(TAutoVal& val);REMAP='BodyNoLead'Attempts to intrepret the value in the ROLE='italic'TAutoVal union as a reference to an ROLE='italic'IDispatch object and bind to the ROLE='italic'IDispatch directly. Throws a ROLE='italic'TXAuto exception if the object does not support ROLE='italic'IDispatch.FORMAT="LINESPECIFIC"void Bind(IDispatch* obj);REMAP='BodyNoLead'Accepts ROLE='italic'obj as the proxy object's server.FORMAT="LINESPECIFIC"void Bind(IDispatch& obj);REMAP='BodyNoLead'Accepts ROLE='italic'obj as the proxy object's server.REMAP='Body'The ROLE='italic'Bind function attempts to open a channel of communication to the automation server in order to send commands. More specifically, ROLE='italic'Bind requests a pointer to the server's ROLE='italic'IDispatch interface. REMAP='Body'ROLE='italic'Bind is called internally when the object is passed as the return object for another proxy method. Which form of ROLE='italic'Bind is used depends on what information available to identify the server.See alsoREMAP='BodyNoLead'TAutoProxy::BindIDispatch&( )FORMAT="LINESPECIFIC"operator IDispatch&( );REMAP='BodyNoLead'Returns a reference to the ROLE='italic'IDispatch interface of the proxy object's server.IDispatch*( )FORMAT="LINESPECIFIC"operator IDispatch*( );REMAP='BodyNoLead'Returns a pointer to the ROLE='italic'IDispatch interface of the proxy object's server and calls ROLE='italic'AddRef on the interface pointer.IsBoundFORMAT="LINESPECIFIC"bool IsBound( );REMAP='BodyNoLead'Returns ROLE='bold'true if the server already has a pointer to the ROLE='italic'IDispatch interface of its server and ROLE='bold'false if it does not.LookupFORMAT="LINESPECIFIC"long Lookup(char far* name);REMAP='BodyNoLead'Calls the server to get the ID that matches the name.FORMAT="LINESPECIFIC"long Lookup(const long id);REMAP='BodyNoLead'Returns the value passed in as ROLE='italic'id.FORMAT="LINESPECIFIC"void Lookup(const char* names, long* ids, unsigned count);REMAP='BodyNoLead'Looks up a series of names and returns all their IDs at once. ROLE='italic'names and ROLE='italic'ids point to two parallel arrays. ROLE='italic'count gives the number of elements in both arrays. With a single call to OLE, ROLE='italic'Lookup fills the ROLE='italic'ids array with numbers to identify all the names.REMAP='Body'Given the name of a command or an argument, ROLE='italic'Lookup calls the server to ask for the corresponding ID values. Although commands and arguments have names for the convenience of programmers, OLE actually identifies them by numbers. A server must find out the ID number in order to execute the command.MustBeBoundFORMAT="LINESPECIFIC"void MustBeBound( );REMAP='BodyNoLead'Throws a ROLE='italic'TXAuto exception if the ROLE='italic'TAutoProxy object does not have an ROLE='italic'IDispatch interface for its server. ROLE='italic'TAutoProxy calls this method internally before performing actions that assume the object is already bound to the server.SetLangFORMAT="LINESPECIFIC"void SetLang(TLangId lang);REMAP='BodyNoLead'Sets the locale ID that the controller will pass to the server with each command. The locale ID tells the server what language the controller is using.See alsoREMAP='BodyNoLead'Locale IDs, TAutoStackUnbindFORMAT="LINESPECIFIC"void Unbind( );REMAP='BodyNoLead'Decrements the reference count of the proxy object's server and erases internal references to the server.See also:REMAP='BodyNoLead'TAutoProxy::BindProtected constructorConstructorFORMAT="LINESPECIFIC"TAutoProxy(TLangId lang);REMAP='BodyNoLead'Constructs a ROLE='italic'TAutoProxy object and sets the object to use the language identified by the ROLE='italic'lang locale ID.See alsoREMAP='BodyNoLead'Locale IDsProtected member functionInvokeFORMAT="LINESPECIFIC"TAutoVal& Invoke(int attr, TAutoProxyArgs& args, long* ids, unsigned named=0);REMAP='BodyNoLead'Sends a command to the automation server. ROLE='italic'Invoke is called by the AUTOCALL macros.REMAP='Body'ROLE='italic'attr describes the type of command being issued and can be a combination of the ROLE='italic'AutoCallFlagROLE='bold' enum values.REMAP='Body'The ROLE='italic'args object contains all the values passed as arguments to the command.REMAP='Body'ROLE='italic'ids points to an array of ID values identifying the command and the arguments. There should be one ID value for each element in the args array.REMAP='Body'ROLE='italic'names tells how many arguments in ROLE='italic'args are identified by name.See alsoREMAP='BodyNoLead'AutoCallFlag enum, AUTOCALL_xxxx macrosTAutoShort structMOREINFO="NONE"ocf/autodefs.hREMAP='Body'ROLE='italic'TAutoShort is an automation data type that helps ObjectComponents provide type checking for members of an automated class exposed to OLE. Use ROLE='italic'TAutoShort in an automation definition to identify ROLE='bold'short values.Public data memberClassInfoFORMAT="LINESPECIFIC"static TAutoType ClassInfo;REMAP='BodyNoLead'The ROLE='italic'ClassInfo member of ROLE='italic'TAutoShort holds information that identifies the ROLE='bold'short data type.TAutoStack classMOREINFO="NONE"ocf/autodefs.hREMAP='BodyNoLead'ROLE='italic'TAutoStack processes the command stack that an automation controller sends to an automation server through OLE. The command stack contains a dispatch ID identifying a particular command and a set of VARIANT unions containing all the arguments needed to execute the command. REMAP='Body'ObjectComponents interprets the dispatch ID and extracts the proper C++ value from each union. It builds a command object (ROLE='italic'TAutoCommand) and calls the command's Execute method. ROLE='italic'TAutoCommand in turn invokes the methods you have exposed by declaring them and defining them in your automated classes.REMAP='Body'The stack also carries a locale ID identifying the language used in the command. ObjectComponents takes the locale into account when interpreting strings it extracts from the stack. If you have provided localization resources, then ObjectComponents translates to the requested language for you.REMAP='Body'Usually you do not have to work with ROLE='italic'TAutoStack directly. ObjectComponents automatically passes a stack in to the proper command object for you. The command objects are created by the automation declaration macros.See alsoREMAP='BodyNoLead'TAutoCommand classPublic constructor and destructorConstructorFORMAT="LINESPECIFIC"TAutoStack(TServedObject& owner, VARIANT far* stack, TLocaleId locale,int argcount, int namedcount, long far* map);REMAP='BodyNoLead'The constructor is called only internally. You should not need to construct your own stack.REMAP='Body'ROLE='italic'owner is the automated object to which the command is directed. REMAP='Body'ROLE='italic'stack points to a series of contiguous unions of type VARIANT. The unions contain values or object references passed in automation commands.REMAP='Body'ROLE='italic'locale is a locale ID describing the language the controller is using. REMAP='Body'ROLE='italic'argcount tells how many arguments follow the dispatch ID in the stack. REMAP='Body'ROLE='italic'namedcount tells how many of the arguments were passed with their names. A controller can pass arguments in any order, and even omit optional arguments, if it identifies the arguments it does pass explicitly by the name the server gives them.REMAP='Body'if ROLE='italic'namedcount is greater than zero, then ROLE='italic'map points to an array of ID values corresponding to the argument names passed by the constructor.REMAP='Body'ROLE='italic'map is a table for translating named argument IDs to argument positions.DestructorFORMAT="LINESPECIFIC"~TAutoStack( );REMAP='BodyNoLead'Destroys the ROLE='italic'TAutoStack object.Public member functionoperator [ ]FORMAT="LINESPECIFIC"TAutoVal& operator[](int index);REMAP='BodyNoLead'Extracts individual arguments from the command stack for use as C++ function arguments. ROLE='italic'index is a zero-based index into the command's argument list, which follows the order established in the corresponding EXPOSE macro of the automation definition. This operator is called by the command objects generated in the automation declaration.REMAP='Body'If index is out of range, the operator throws a ROLE='italic'TXAuto::xNoArgSymbol exception.Public data membersArgCountFORMAT="LINESPECIFIC"const int ArgCount;REMAP='BodyNoLead'Holds the number of arguments passed on the command stack (named or unnamed).ArgSymbolCountFORMAT="LINESPECIFIC"int ArgSymbolCount;REMAP='BodyNoLead'Holds the number of command arguments exposed to automation.CurrentArgFORMAT="LINESPECIFIC"int CurrentArg; REMAP='BodyNoLead'As ObjectComponents processes the arguments on the stack one by one, this member indexes the current argument. When ROLE='italic'CurrentArg reaches ROLE='italic'ArgCount, all the arguments have been processed.LangIdFORMAT="LINESPECIFIC"TLangId LangId;REMAP='BodyNoLead'Holds a number that identifies the language the controller is using to send commands.OwnerFORMAT="LINESPECIFIC"TServedObject& Owner;REMAP='BodyNoLead'Refers to the automated object that is processing the command on the stack.SymbolFORMAT="LINESPECIFIC"int ArgSymbolCount;REMAP='BodyNoLead'Holds the number of command arguments exposed to automation.ConstantSetValueFORMAT="LINESPECIFIC"TAutoStack::SetValueREMAP='BodyNoLead'ROLE='italic'SetValue is a predefined standard dispatch ID. The dispatch ID is a number that identifies a particular command that an automated object can execute. The only two standard dispatch IDs used in ObjectComponents are 0 for an object's default action and -3 for a command that sets the value of a property. ROLE='italic'SetValue is -3.See alsoREMAP='BodyNoLead'TAutoVal class, TLocaleIdTAutoString structMOREINFO="NONE"ocf/autodefs.hREMAP='BodyNoLead'An automation server uses ROLE='italic'TAutoString to describe C string types in an automation definition. The member functions of the ROLE='italic'TAutoString structure facilitate copying and assigning string values with minimal memory reallocations when strings are passed back and forth between servers and controllers.REMAP='Body'You do not need to use ROLE='italic'TAutoString with C++ ROLE='italic'string objects. For more information, see Automation Data Types.REMAP='Body'ROLE='italic'TAutoString works best with ROLE='bold'const string values. When passed a non-constant string, ROLE='italic'TAutoString must make an internal copy. When the string is ROLE='bold'const, ROLE='italic'TAutoString knows the value will not change and can skip the copying step. The performance improvement is significant. Public constructors and destructorConstructors FORMAT="LINESPECIFIC"TAutoString(const string& s);REMAP='BodyNoLead'Creates a ROLE='italic'TAutoString and assigns it the string held in a C++ ROLE='italic'string object.FORMAT="LINESPECIFIC"TAutoString(const TAutoString& copy);REMAP='BodyNoLead'Creates a new ROLE='italic'TAutoString that holds the same string value as the ROLE='italic'copy object.FORMAT="LINESPECIFIC"TAutoString(TAutoVal& val);REMAP='BodyNoLead'Initializes the new object with the value in a ROLE='italic'TAutoVal union. ROLE='italic'TAutoVal represents the VARIANT data type OLE uses to pass values between two applications. It is a union of many types. This constructor extracts the value from the union as a string.FORMAT="LINESPECIFIC"TAutoString(const char far* str);REMAP='BodyNoLead'Initializes the new object with the value in a ROLE='bold'const C string.FORMAT="LINESPECIFIC"TAutoString(BSTR s, bool loan)REMAP='BodyNoLead'Initializes the new object with the value in a BASIC-style string, one preceded by its length and not terminated by null. That is the format OLE uses for passing strings. Set ROLE='italic'loan to ROLE='bold'true if the ROLE='italic'TAutoString object owns the BSTR and ROLE='bold'false if it only references the BSTR.DestructorFORMAT="LINESPECIFIC"~TAutoString( );REMAP='BodyNoLead'ROLE='italic'TAutoString maintains a reference count on the string object it contains. The destructor decrements the reference count.Public member functionsint( )FORMAT="LINESPECIFIC"operator int( )REMAP='BodyNoLead'Returns the length of the string value (as ROLE='italic'strlen would calculate the length).operator =FORMAT="LINESPECIFIC"TAutoString& operator =(const char far* str);REMAP='BodyNoLead'Accepts a C-style const string as the new value of the ROLE='italic'TAutoString.FORMAT="LINESPECIFIC"TAutoString& operator =(char* s);REMAP='BodyNoLead'Accepts a C-style non-ROLE='bold'const string as the new value of ROLE='italic'TAutoString. Because the string is not constant, ROLE='italic'TAutoString must create a new copy of the string for itself. This makes Form 3 significantly slower than Form 1. Try to pass ROLE='bold'const strings where possible.FORMAT="LINESPECIFIC"TAutoString& operator =(const TAutoString& copy)REMAP='BodyNoLead'Sets the value of the ROLE='italic'TAutoString object to be a string copied from another ROLE='italic'TAutoString object.char*( )FORMAT="LINESPECIFIC"operator char*( );REMAP='BodyNoLead'Returns the object's string value in the form of a non-ROLE='bold'const C-style string. To do this, ROLE='italic'TAutoString must create a new copy of the string. It is faster to assign to aROLE='bold' const char* where possible.const char far*( )FORMAT="LINESPECIFIC"operator const char far*( );REMAP='BodyNoLead'Returns the object's string value in the form of a ROLE='bold'const C-style string.Public data memberClassInfoFORMAT="LINESPECIFIC"static TAutoType ClassInfo;REMAP='BodyNoLead'This static structure holds a number that identifies the data type as a string. All the automation data types hold a similar static identifier so that ObjectComponents can query any of them to determine what they are.TAutoType structMOREINFO="NONE"ocf/autodefs.hREMAP='BodyNoLead'The ROLE='italic'TAutoType structure is a static data member of all the automation data type classes, such as ROLE='italic'TAutoBool and ROLE='italic'TAutoString. ROLE='italic'TAutoType makes all these data types self-describing. This is an essential quality for dealing with the VARIANT unions that OLE uses to pass values during automation. Because all the automation types derive from ROLE='italic'TAutoType, ObjectComponents can process values of any type with the same code. Because ROLE='italic'TAutoType is self-describing, ObjectComponents can always determine the actual type of any particular item.REMAP='Body'Usually you do not have to work with ROLE='italic'TAutoType directly, just with the automation types that derive from it.Public member functionGetTypeFORMAT="LINESPECIFIC"short GetType( );REMAP='BodyNoLead'Returns an integer that identifies a particular data type. The identifiers are defined in the ROLE='italic'AutoDataTypeROLE='bold' enum.See alsoREMAP='BodyNoLead'AutoDataType enumTAutoVal classMOREINFO="NONE"ocf/autodefs.hREMAP='BodyNoLead'ROLE='italic'TAutoVal duplicates the VARIANT type that OLE uses to pass values between an automation server and controller. It also adds access methods to retrieve the value in the VARIANT. A VARIANT can be cast to type ROLE='italic'TAutoVal, and ROLE='italic'TAutoVal can be cast to a VARIANT.REMAP='Body'A VARIANT is a large union with fields of many different data types. A large set of overloaded assignment operators allow many different kinds of values to be stored in a ROLE='italic'TAutoVal object. Each assignment operator also records internally a number that identifies the type of value just received. A similar set of conversion operators allows the value in the object to be cast to different types of values. Whether a particular conversion succeeds depends on the type of value in the object. A ROLE='italic'string cannot be cast to some other object, for example. If the conversion fails, ROLE='italic'TAutoVal throws an exception of type ROLE='italic'TXAuto::xConversionFailure.REMAP='Body'ObjectComponents treats the data passed between an automation server and controller as a stack of unions. The stack is ROLE='italic'TAutoStack, and the items on the stack are ROLE='italic'TAutoVal. Because the server and controller are built separately and can use different programming languages, data passed between them cannot retain an intrinsic type. Command identifiers and argument values are passed as VARIANTs. The recipient of a VARIANT value must rely on the item's context in order to determine what type the value is supposed to be. For example, when it sees a dispatch ID for a command that expects two integer arguments, the application extracts integers from the next two VARIANTs.Public member functionsoperator =FORMAT="LINESPECIFIC"void operator=(int i);FORMAT="LINESPECIFIC"void operator=(int far* p);FORMAT="LINESPECIFIC"void operator=(long i);FORMAT="LINESPECIFIC"void operator=(long far* p);FORMAT="LINESPECIFIC"void operator=(unsigned long i);FORMAT="LINESPECIFIC"void operator=(unsigned long far* p);FORMAT="LINESPECIFIC"void operator=(short i);FORMAT="LINESPECIFIC"void operator=(short far* p);FORMAT="LINESPECIFIC"void operator=(float i);FORMAT="LINESPECIFIC"void operator=(float far* p);FORMAT="LINESPECIFIC"void operator=(double i);FORMAT="LINESPECIFIC"void operator=(double far* p);FORMAT="LINESPECIFIC"void operator=(TBool i);FORMAT="LINESPECIFIC"void operator=(TBool far* p);FORMAT="LINESPECIFIC"void operator=(const char far* s);FORMAT="LINESPECIFIC"void operator=(string s);FORMAT="LINESPECIFIC"void operator=(TAutoString s);FORMAT="LINESPECIFIC"void operator=(TAutoCurrency i);FORMAT="LINESPECIFIC"void far* operator=(TAutoCurrency far* p);FORMAT="LINESPECIFIC"void operator=(TAutoDate i);FORMAT="LINESPECIFIC"void far* operator=(TAutoDate far* i);FORMAT="LINESPECIFIC"void operator=(TAutoVoid);FORMAT="LINESPECIFIC"void operator=(IDispatch* ifc);FORMAT="LINESPECIFIC"void operator=(IUnknown* ifc);FORMAT="LINESPECIFIC"void operator=(TObjectDescriptor od);REMAP='BodyNoLead'Assignment operators initialize ROLE='italic'TAutoVal by placing in the object both the assigned value and an ID to show the type of the assigned value.REMAP='Body'This table describes those data types that are not standard C types.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='84*'COLNAME='C2' COLWIDTH='290*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'TypeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IDispatchCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A class ObjectComponents uses internally to implement the standard OLE interface called ROLE='italic'IDispatch, supported by automatable objectsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IUnknownCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A class that ObjectComponents uses internally to implement the standard ROLE='italic'IUnknown OLE interface, supported by all OLE objectsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'stringCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'C++ ROLE='italic'string objectCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoCurrencyCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'An automation data type that holds a currency valueCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoStringCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'An automation data type that holds a C-style string valueCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TAutoVoidCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'An automation data type that represents a ROLE='bold'void returnCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'TObjectDescriptorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A class that ObjectComponents uses internally to hold information about an OLE objectSee alsoREMAP='BodyNoLead'Automation data types, String classClearFORMAT="LINESPECIFIC"void Clear( );REMAP='BodyNoLead'Clears the value stored in the object, leaving it empty. This method cannot be called on the objects managed by ROLE='italic'TAutoStack.See alsoREMAP='BodyNoLead'TAutoStack classCopyFORMAT="LINESPECIFIC"void Copy(const TAutoVal& copy);REMAP='BodyNoLead'Copies the ROLE='italic'TAutoVal object into ROLE='italic'copy. Intelligently allocates space for a string, if needed, and calls ROLE='italic'AddRef if the value in the union is an OLE object.double far*( )FORMAT="LINESPECIFIC"operator double far*( );REMAP='BodyNoLead'Returns a pointer to a ROLE='bold'double value.double( )FORMAT="LINESPECIFIC"operator double( );REMAP='BodyNoLead'Returns the value in the object as a ROLE='bold'double value.far*( )FORMAT="LINESPECIFIC"operator int far*( );REMAP='BodyNoLead'Returns a pointer to an ROLE='bold'int.float far*( )FORMAT="LINESPECIFIC"operator float far*( );REMAP='BodyNoLead'Returns a pointer to a floating-point value.float( )FORMAT="LINESPECIFIC"operator float( );REMAP='BodyNoLead'Returns the value in the object as a floating-point value.GetDataTypeFORMAT="LINESPECIFIC"int GetDataType( );REMAP='BodyNoLead'Returns an integer identifying the type of value that was assigned to the union.IDispatch&( )FORMAT="LINESPECIFIC"operator IDispatch&( );REMAP='BodyNoLead'Extracts an ROLE='italic'IDispatch interface from the value in the ROLE='italic'TAutoVal object. ROLE='italic'IDispatch is the standard OLE interface supported by automatable objects. This method does not call ROLE='italic'AddRef on the ROLE='italic'IDispatch interface.See alsoREMAP='BodyNoLead'TAutoVal::IDispatch*( )IDispatch*( )FORMAT="LINESPECIFIC"operator IDispatch*( );REMAP='BodyNoLead'Extracts an ROLE='italic'IDispatch interface from the value in the ROLE='italic'TAutoVal object. ROLE='italic'IDispatch is the standard OLE interface supported by automatable objects. This function also calls the interface's ROLE='italic'AddRef method.See alsoREMAP='BodyNoLead'TAutoVal::IDispatch&( )int( )FORMAT="LINESPECIFIC"operator int( );REMAP='BodyNoLead'Returns the value in the object as an integer.int far*( )FORMAT="LINESPECIFIC"operator int far*( );REMAP='BodyNoLead'Returns a pointer to an ROLE='bold'int.IsRefFORMAT="LINESPECIFIC"bool IsRef( );REMAP='BodyNoLead'Returns ROLE='bold'true if the value assigned to the union is a reference to a value.IUnknown&( )FORMAT="LINESPECIFIC"operator IUnknown&( );REMAP='BodyNoLead'Extracts an ROLE='italic'IUnknown interface from the value in the ROLE='italic'TAutoVal object. ROLE='italic'IUnknown is the standard OLE interface supported by all objects. This method does not call ROLE='italic'AddRef on the ROLE='italic'IUnknown interface.See alsoREMAP='BodyNoLead'TAutoVal::IUnknown*( )IUnknown*( )FORMAT="LINESPECIFIC"operator IUnknown*( );REMAP='BodyNoLead'Extracts an ROLE='italic'IUnknown interface from the value in the ROLE='italic'TAutoVal object. ROLE='italic'IUnknown is the standard OLE interface supported by all objects. This method calls ROLE='italic'AddRef on the ROLE='italic'IUnknown interface.See alsoREMAP='BodyNoLead'TAutoVal::IUnknown&( )long( )FORMAT="LINESPECIFIC"operator long( );REMAP='BodyNoLead'Returns the value in the object as a ROLE='bold'long integer.long far*( )FORMAT="LINESPECIFIC"operator long far*( );REMAP='BodyNoLead'Returns a pointer to a ROLE='bold'long integer.short( )FORMAT="LINESPECIFIC"operator short( );REMAP='BodyNoLead'Returns the value in the object as a ROLE='bold'short integer.short far*( )FORMAT="LINESPECIFIC"operator short far*( );REMAP='BodyNoLead'Returns a pointer to a ROLE='bold'short integer.string( )FORMAT="LINESPECIFIC"operator string( );REMAP='BodyNoLead'Returns the value in the object as a C++ ROLE='italic'string object.TAutoCurrency( )FORMAT="LINESPECIFIC"operator TAutoCurrency( );REMAP='BodyNoLead'Returns the value in the object as a currency value.See alsoREMAP='BodyNoLead'TAutoCurrency classTAutoCurrency far*( )FORMAT="LINESPECIFIC"operator TAutoCurrency far*( );REMAP='BodyNoLead'Returns a pointer to a currency value.See alsoREMAP='BodyNoLead'TAutoCurrencyTAutoDate( )FORMAT="LINESPECIFIC"operator TAutoDate( );REMAP='BodyNoLead'Returns the value in the object as a date value.See alsoREMAP='BodyNoLead'TAutoDate classTAutoDate far*( )FORMAT="LINESPECIFIC"operator TAutoDate far*( );REMAP='BodyNoLead'Returns a pointer to a date value.See alsoREMAP='BodyNoLead'TAutoDate classTBool( )FORMAT="LINESPECIFIC"operator TBool( );REMAP='BodyNoLead'Returns the value in the object as a Boolean value.TBool far*( )FORMAT="LINESPECIFIC"operator TBool far*( );REMAP='BodyNoLead'Returns a pointer to a Boolean value.TUString*( )FORMAT="LINESPECIFIC"operator TUString*( );REMAP='BodyNoLead'Returns the value in the object as a ROLE='italic'TUString object. ROLE='italic'TUString is a reference-counted union of various string representations. It is used internally by ObjectComponents for implementing ROLE='italic'TAutoString.unsigned long( )FORMAT="LINESPECIFIC"operator unsigned long( );REMAP='BodyNoLead'Returns the value in the object as an ROLE='bold'unsignedROLE='bold' long integer.unsigned long far*( )FORMAT="LINESPECIFIC"operator unsigned long far*( );REMAP='BodyNoLead'Returns a pointer to a ROLE='bold'long integer. (ROLE='italic'TAutoVal does not distinguish ROLE='bold'long from ROLE='bold'unsignedROLE='bold' long.)See alsoREMAP='BodyNoLead'TAutoStack classTAutoVoid structMOREINFO="NONE"ocf/autodefs.hREMAP='BodyNoLead'ROLE='italic'TAutoVoid is an automation data type like ROLE='italic'TAutoShort and ROLE='italic'TAutoBool. Use it in an automation definition to describe functions that return no value.REMAP='Body'The purpose of the structure is to implement the assignment of ROLE='bold'void to a ROLE='italic'TAutoVal.See alsoREMAP='BodyNoLead'TAutoVal structPublic data memberClassInfoFORMAT="LINESPECIFIC"static TAutoType ClassInfo;REMAP='BodyNoLead'As with any automation data type, the ROLE='italic'ClassInfo member holds a value that identifies a data type, in this case ROLE='bold'void.See alsoREMAP='BodyNoLead'TAutoType structTComponentFactory type definitionMOREINFO="NONE"ocf/ocreg.hFORMAT="LINESPECIFIC"typedef IUnknown* (*TComponentFactory)(IUnknown* outer, uint32 options, uint32 id = 0);REMAP='BodyNoLead'ROLE='italic'TComponentFactory is a type definition for a callback function.REMAP='Body'ROLE='italic'outer points to the ROLE='italic'IUnknown interface of an external OLE object under which the application is asked to aggregate. If ROLE='italic'outer is 0, then either the new object is independent or it will become the outer object in an aggregation.REMAP='Body'ROLE='italic'options contains bit flags indicating the application's running state. To test the flags, use the ROLE='italic'TOcAppModeROLE='bold' enum constants.REMAP='Body'ROLE='italic'id is a number ObjectComponents assigns to identify a particular type of object the application can create. If id is 0, the application is asked to create itself. To request particular document types, ObjectComponents passes the document template ID.REMAP='Body'The return value is a pointer to the ROLE='italic'IUnknown interface of whatever object the callback function creates, either the application itself or one of its objects. During aggregation, the return value becomes the inner ROLE='italic'IUnknown pointer in some other object. (ROLE='italic'IUnknown is a standard OLE type declared in compobj.h.)REMAP='Body'A callback of type ROLE='italic'TComponentFactory is passed to the constructor of an application's registrar object (either ROLE='italic'TOcRegistrar for a linking and embedding application or ROLE='italic'TRegistrar for an application that supports automation only).See alsoREMAP='BodyNoLead'TOcAppMode enum, TOcRegistrar class, TRegistrar classTLocaleId type definitionMOREINFO="NONE"ocf/autodefs.hFORMAT="LINESPECIFIC"typedef unsigned long TLocaleId; REMAP='BodyNoLead'A locale ID is a 32-bit value that identifies a language. The low half of the value is a 16-bit language ID. In the current OLE definition, the upper word is reserved, so in effect a locale ID is a 32-bit language ID.REMAP='Body'Windows uses locale IDs to set the system's default language. ObjectComponents uses locale IDs in automation. An automation controller passes a locale ID to the server with every command. The server is expected to interpret the commands it receives as strings in the given language.REMAP='Body'There are two predefined system locale settings in the olenls.h header.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='119*'COLNAME='C2' COLWIDTH='255*'VALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LOCALE_SYSTEM_DEFAULT COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The default locale set for the system.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LOCALE_USER_DEFAULTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The default locale set for a particular user (which can differ from the system setting on multiuser systems)See alsoREMAP='BodyNoLead'Langxxxx language ID constants, TLangId typedefTOcApp classMOREINFO="NONE"ocf/ocapp.hBase classFORMAT="LINESPECIFIC"TUnknownREMAP='BodyNoLead'ROLE='italic'TOcApp is an ObjectComponents connector object for a linking and embedding application. It implements the interfaces an application needs for communicating with OLE. Any ObjectComponents application that supports linking and embedding needs to have a ROLE='italic'TOcApp object. Usually it is created for you by your ROLE='italic'TOcRegistrar object.REMAP='Body'Applications that support automation but do not support linking and embedding do not need a ROLE='italic'TOcApp object. They create a ROLE='italic'TRegistrar instead of a ROLE='italic'TOcRegistrar.REMAP='Body'ROLE='italic'TOcApp is a COM object and implements the ROLE='italic'IUnknown interface.See alsoREMAP='BodyNoLead'TOcModule::OnInit, TOcRegistrar class, TOleFactory<> class, TRegistrar class, TUnknown classType definitionsTOcMenuEnableFORMAT="LINESPECIFIC"enum TOcMenuEnableREMAP='BodyNoLead'These enumeration values are flags that can be combined with the bitwise OR operator (|). A container passes them to the ROLE='italic'EnableEditMenu function in order to determine which OLE commands on the Edit menu should be enabled. The answer depends on whether the container supports any of the data formats currently present on the Clipboard.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='104*'COLNAME='C2' COLWIDTH='270*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Menu command enabledVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EnablePasteCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The Paste command places an object from the Clipboard in the open document. The format of the new data object depends on what the server prefers and the container supports.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EnablePasteLinkCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The Paste Link command adds to the open document a link to the object on the Clipboard.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EnableBrowseClipboardCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The Paste Special command invokes a standard dialog box that shows all the data formats available for the object currently on the Clipboard and lets the user choose among them.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EnableBrowseLinksCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The Links command displays a list of all the linked objects in the open document, allowing the user to update or delete them.See alsoREMAP='BodyNoLead'REGFORMAT macro, TOcApp::EnableEditMenuPublic member functionsAddUserFormatNameFORMAT="LINESPECIFIC"void AddUserFormatName(char far* name, char far* resultName, char far* id = 0);REMAP='BodyNoLead'Call this function to associate a result name with a Clipboard format. The ROLE='italic'resultName parameter describes the data format to users and appears in Help text of the Paste Special dialog box. Use one of the other two parameters to identify the associated Clipboard format. This method is used only if you have a non-standard, private Clipboard format that you want to associate with names used in the Paste Special dialog box. REMAP='Body'A custom format must first be entered in the application's registration tables using the REGFORMAT macro. For example,FORMAT="LINESPECIFIC"REGFORMAT(0, "DrawingClip", ocrContent, ocrIStorage, ocrGet);REMAP='Body'"DrawingClip" becomes the ID string that Windows uses internally to identify the custom format. To associate more descriptive strings with the custom format, call ROLE='italic'AddUserFormatName:FORMAT="LINESPECIFIC"AddUserFormatName("DrawingPad", "a freehand drawing", "DrawingClip");REMAP='Body'The name of the "DrawingClip" format is now "DrawingPad". If the user chooses Paste Special when data of this type is on the Clipboard, the name in the dialog box is "DrawingPad". It is perfectly legal for the ID and the name to be the same string.REMAP='Body'The result string, "a freehand drawing", typically appears in the Help text during a Paste Special operation.See alsoREMAP='BodyNoLead'REGFORMAT macroBrowseFORMAT="LINESPECIFIC"bool Browse(TOcInitInfo& initInfo);REMAP='BodyNoLead'Displays the Insert Object dialog box allowing the user to choose from available servers to create a new object in the open document. Returns ROLE='bold'true if the user inserts an object and ROLE='bold'false if the user cancels.REMAP='Body'Create ROLE='italic'initInfo first by passing to its constructor the view object where the new object will be inserted. ROLE='italic'Browse fills ROLE='italic'initInfo with information about the object. Then use ROLE='italic'initInfo to create a new ROLE='italic'TOcPart.See alsoREMAP='BodyNoLead'TOcInitInfo, TOcPart, TOcViewBrowseClipboardFORMAT="LINESPECIFIC"bool BrowseClipboard(TOcInitInfo& initInfo);REMAP='BodyNoLead'Displays the Paste Special dialog box showing the available formats for the data currently on the Clipboard, allowing the user to choose what format to paste. Returns ROLE='bold'true if the user pastes data and ROLE='bold'false if the user cancels.REMAP='Body'Create ROLE='italic'initInfo first by passing to its constructor the view object where the new object will be inserted. ROLE='italic'Browse fills initInfo with information about the object. Then use ROLE='italic'initInfo to create a new ROLE='italic'TOcPart.REMAP='Body'This function is called by ROLE='italic'TOcView::BrowseClipboard.See alsoREMAP='BodyNoLead'TOcInitInfo, TOcPart, TOcViewCanCloseFORMAT="LINESPECIFIC"bool CanClose( );REMAP='BodyNoLead'A container calls this function to determine whether it can shut down. ROLE='italic'CanClose polls all the connected servers and attempts to close them. It returns ROLE='bold'true if it is safe to close the application.ClipFORMAT="LINESPECIFIC"bool Clip(IBPart far* part, bool link, bool embed, bool delay = false);REMAP='Body'Copies the currently selected object to the Clipboard. Usually you do not have to call ROLE='italic'Clip directly because ROLE='italic'TOcView::ROLE='italic'Copy does it for you.REMAP='Body'ROLE='italic'part points to the linked or embedded object. You can pass an object of type ROLE='italic'TOcPart for this parameter. (ROLE='italic'TOcPart supports the ROLE='italic'IBPart interface, which is defined in the BOCOLE library.) If ROLE='italic'link and ROLE='italic'embed are both ROLE='bold'true, then other applications can either link or embed the object when they paste it from the Clipboard. Make delay ROLE='bold'true to have ObjectComponents provide delayed rendering of alternate data formats. (Delayed rendering saves memory. For more information, refer to the Clipboard Overview in the API Help file. Look for the topic "Clipboard Operations.")See alsoREMAP='BodyNoLead'TOcPart, TOcView::CopyConvertFORMAT="LINESPECIFIC"bool Convert(TOcPart* ocPart, bool activate);REMAP='BodyNoLead'Displays the Convert dialog box where the user can alter the aspect or format of a linked or embedded object. ROLE='italic'ocPart points to the object the user wants to modify.REMAP='Body'Make ROLE='italic'activateROLE='bold' true if you want ObjectComponents to activate the object after converting it. Generally activate should be ROLE='bold'false if the user has chosen Links from the Edit menu. If the user tries to ROLE='italic'activate an object whose server is not present, you can offer the option of converting the object to another server, and in that case activate should be ROLE='bold'true.See alsoREMAP='BodyNoLead'TOcPartDragFORMAT="LINESPECIFIC"bool Drag(IBPart far* part, TOcDropAction inAction, TOcDropAction& outAction);REMAP='BodyNoLead'A container calls this function when the user wants to drag one of the container's objects. The first parameter, ROLE='italic'part, is the object the user is trying to drag. Usually this is an object of type ROLE='italic'TOcPart. (ROLE='italic'TOcPart supports the ROLE='italic'IBPart interface, which is defined in the BOCOLE library.)REMAP='Body'ROLE='italic'inAction combines bit flags indicating possible drag actions the application supports. The flags indicate whether the user can move, copy, or link the object. The value returned in ROLE='italic'outAction contains just one of the action flags indicating what actually did happen.See alsoREMAP='BodyNoLead'TOcDropAction enum, TOcPartEnableEditMenuFORMAT="LINESPECIFIC"uint EnableEditMenu(TOcMenuEnable enable, IBDataConsumer far* ocview);REMAP='BodyNoLead'An application calls ROLE='italic'EnableEditMenu to find out which of the OLE-related commands on its Edit menu should currently be enabled. The flags combined in ROLE='italic'enable indicate the commands to be tested, and the return value uses the same bit flags to indicate which commands to enable. ROLE='italic'ocview is usually an object of type ROLE='italic'TOcView. (ROLE='italic'TOcView supports the ROLE='italic'IBDataConsumer interface, which is defined in the BOCOLE library.)REMAP='Body'ROLE='italic'TOleContainer and ROLE='italic'TOleView call ROLE='italic'TOcApp::ROLE='italic'EnableEditMenu in the command enabler functions for the Edit menu.See alsoREMAP='BodyNoLead'TOcApp::TOcMenuEnable enum, TOcViewEvActivateFORMAT="LINESPECIFIC"void EvActivate(bool active);REMAP='BodyNoLead'A container calls this function to tell OLE when its frame window becomes active or inactive. Make ROLE='italic'activeROLE='bold' true if the window was activated or ROLE='bold'false if it was deactivated.See alsoREMAP='BodyNoLead'TOcApp::EvResize, TOcApp::EvSetFocusEvResizeFORMAT="LINESPECIFIC"void EvResize( );REMAP='BodyNoLead'A container calls this function to tell OLE when the size of its frame window (the main window) has changed. OLE might need this information to let a server modify its tool bar during in-place editing.See alsoREMAP='BodyNoLead'TOcApp::EvActivate, TOcApp::EvSetFocusEvSetFocusFORMAT="LINESPECIFIC"bool EvSetFocus(bool set);REMAP='BodyNoLead'A container calls this function to tell OLE that its frame window has either received or yielded the input focus. Make ROLE='italic'setROLE='bold' true if the window gained the focus or ROLE='bold'false if it lost the focus.See alsoREMAP='BodyNoLead'TOcApp::EvActivate, TOcApp::EvResizeGetNameFORMAT="LINESPECIFIC"string GetName( ) const;REMAP='BodyNoLead'Returns a string object containing the application's name.GetNameListFORMAT="LINESPECIFIC"TOcNameList& GetNameList( );REMAP='BodyNoLead'Returns an array of ROLE='italic'TOcNameList objects containing the names of all the Clipboard formats the application supports. The ROLE='italic'TOcView class uses this list when executing the Paste Special command. The list provides the names and Help strings associated with the formats.See alsoREMAP='BodyNoLead'TOcNameListGetRegistrar( )FORMAT="LINESPECIFIC"TOcRegistrar& GetRegistrar( );REMAP='BodyNoLead'Returns the application's registrar object. This is the same object passed into the ROLE='italic'TOcApp constructor.See alsoREMAP='BodyNoLead'TOcApp public constructor and destructor, TOcRegistrar classIsOptionSetFORMAT="LINESPECIFIC"bool IsOptionSet(uint32 option) const;REMAP='BodyNoLead'Tests the application mode flags and returns ROLE='bold'true if those set in ROLE='italic'option are set for the application. The application mode flags are defined in the ROLE='italic'TOcAppMode enum.See alsoREMAP='BodyNoLead'TOcApp::SetOption, TOcAppMode enumPasteFORMAT="LINESPECIFIC"bool Paste(TOcInitInfo& initInfo);REMAP='BodyNoLead'Fills ROLE='italic'initInfo with information about the object on the Clipboard. Returns ROLE='bold'true if it succeeds in gathering information and ROLE='bold'false if it fails.REMAP='Body'Create ROLE='italic'initInfo first. The ROLE='italic'TOcInitInfo constructor receives the view object where the new part will be inserted. Then call ROLE='italic'Paste to put information in ROLE='italic'initInfo. Finally, call ROLE='italic'TOcView::Drop to put the object in the view.REMAP='Body'This function is called by ROLE='italic'TOcView::Paste.See alsoREMAP='BodyNoLead'TOcInitInfo, TOcView, TOcView::Drop, TOcView::PasteRegisterClassFORMAT="LINESPECIFIC"bool RegisterClass(const string& progid, BCID classId, bool multiUse);REMAP='BodyNoLead'Tells OLE that the application is capable of producing objects of a certain type. What objects a server can produce depend on the types of documents it registers. REMAP='Body'ROLE='italic'progid is the registered string that identifies a type of object.REMAP='Body'ROLE='italic'RegisterClasses loops through the application's document templates and calls ROLE='italic'RegisterClass once for each type. The call is made internally and usually you do not need to invoke either function directly.See alsoREMAP='BodyNoLead'TOcApp::RegisterClasses, TOcApp::UnregisterClass, TOcApp::UnregisterClassesRegisterClassesFORMAT="LINESPECIFIC"void RegisterClasses(const TDocTemplate* tplHead = ::DocTemplateStaticHead);REMAP='BodyNoLead'Announces to OLE that the application is running and tells OLE about each type of document the application has registered. The document types are exposed to OLE as kinds of objects the application can produce. ROLE='italic'RegisterClasses tells OLE who you are and what you can make.REMAP='Body'ROLE='italic'tplHead points to the beginning of the application's list of document templates. ObjectWindows stores this list in the global variable ROLE='italic'DocTemplateStaticHead. ROLE='italic'UnregisterClasses loops through the list of document types and calls ROLE='italic'UnregisterClass for each one that has a registered ROLE='italic'progid.REMAP='Body'ROLE='italic'RegisterClasses loops through the document structures in ROLE='italic'tplHead and calls ROLE='italic'RegisterClass once for each type that has a ROLE='italic'progid. The call is made internally, and usually you do not need to invoke either function directly.See alsoREMAP='BodyNoLead'progid registration key, TOcApp::RegisterClass, TOcApp::UnregisterClass, TOcApp::UnregisterClassesReleaseObjectFORMAT="LINESPECIFIC"virtual void ReleaseObject( );REMAP='BodyNoLead'ROLE='italic'ReleaseObject notifies the object that the application's main window is gone. If the application is not serving a client, ROLE='italic'ReleaseObject also decrements the TOcApp object's internal reference count. The object will destroy itself when the count reaches zero. The destructor of ROLE='italic'TOcModule calls this function.See alsoREMAP='BodyNoLead'TOcModuleSetOptionFORMAT="LINESPECIFIC"void SetOption(uint32 bit, bool state);REMAP='BodyNoLead'Modifies the application's running mode flags. bit contains bit flags from the ROLE='italic'TOcAppMode enum. If ROLE='italic'state is ROLE='bold'true, ROLE='italic'SetOption turns the flags on. If ROLE='italic'state is ROLE='bold'false, it turns the flags off. You should never have to call this function because ObjectComponents always maintains the mode flags.See alsoREMAP='BodyNoLead'TOcApp::IsOptionSet, TOcAppMode enumSetupWindowFORMAT="LINESPECIFIC"void SetupWindow(HWND frameWnd);REMAP='BodyNoLead'Tells the ROLE='italic'TOcApp object what window to associate with the application. Usually ROLE='italic'frameWnd is the application's main window. Usually this function is called from the ROLE='italic'SetupWindow function associated with the application's main window.TranslateAccelFORMAT="LINESPECIFIC"bool TranslateAccel(MSG far* msg);REMAP='BodyNoLead'A container application adds ROLE='italic'TranslateAccel to its Windows message loop if it wants to make a DLL server's accelerator keystrokes available to the user during in-place editing. DLL servers require this cooperation because they do not have message loops of their own, as an .EXE server does.REMAP='Body'If you call ROLE='italic'TranslateAccel after the usual call to the Windows API ROLE='italic'TranslateAccelerator, then your own accelerators will have priority if they happen to conflict with the server's.REMAP='Body'ROLE='italic'msg holds a Windows message structure. The return value is ROLE='bold'true if the server translates the accelerator and ROLE='bold'false if it does not.UnregisterClassFORMAT="LINESPECIFIC"bool UnregisterClass(const string& progid);REMAP='BodyNoLead'Notifies OLE when the application is no longer available to produce objects of a certain type. ROLE='italic'progid is the registered string that identifies a type of object. REMAP='Body'ROLE='italic'UnregisterClasses loops through all the documents the application registered and calls ROLE='italic'UnregisterClass for each one. The destructor of ROLE='italic'TOcApp calls ROLE='italic'UnregisterClasses.See alsoREMAP='BodyNoLead'TOcApp::RegisterClass, TOcApp::RegisterClasses, TOcApp::UnregisterClassesUnregisterClassesFORMAT="LINESPECIFIC"void UnregisterClasses(const TDocTemplate* tplHead = ::DocTemplateStaticHead);REMAP='BodyNoLead'Announces to the system that the application is no longer available for OLE interactions. ROLE='italic'tplHead points to the beginning of the application's list of document templates. ObjectWindows stores this list in the global variable ROLE='italic'DocTemplateStaticHead. REMAP='Body'ROLE='italic'UnregisterClasses loops through the list of document types and calls ROLE='italic'UnregisterClass for each one that has a registered ROLE='italic'progid. ROLE='italic'UnregisterClasses is called from the ROLE='italic'TOcApp destructor.See alsoREMAP='BodyNoLead'progid registration key, TOcApp::RegisterClass, TOcApp::RegisterClasses, TOcApp::UnregisterClassProtected constructor and destructorConstructorFORMAT="LINESPECIFIC"TOcApp(TOcRegistrar& registrar, uint32 options = ULONG_MAX, IUnknown* outer = 0, const TDocTemplate* tplHead = ::DocTemplateStaticHead);REMAP='BodyNoLead'The constructor for a ROLE='italic'TOcApp object expands the application's message queue if necessary to accommodate OLE message traffic and builds the application's list of supported Clipboard formats.REMAP='Body'ROLE='italic'registrar is a registration object that processes the command line. Create the registrar first.REMAP='Body'ROLE='italic'options is a set of application mode bit flags. The ROLE='italic'TOcApp object is usually created in the ROLE='italic'TComponentFactory callback function. The constructor's options parameter is the same as the callback's ROLE='italic'options parameter.REMAP='Body'ROLE='italic'outer points to the ROLE='italic'IUnknown interface of the outer object inside which the new application is asked to aggregate itself.REMAP='Body'ROLE='italic'tplHead points to the head of an application's list of document templates. The ObjectWindows Library stores an application's document template list in the global variable ROLE='italic'DocTemplateStaticHead.DestructorFORMAT="LINESPECIFIC"~TOcApp( );REMAP='BodyNoLead'The ROLE='italic'TOcApp destructor notifies OLE that the application is no longer available. REMAP='Body'Usually the creation and destruction of an application's ROLE='italic'TOcApp object are managed by the ROLE='italic'TOcRegistrar object.See alsoREMAP='BodyNoLead'TComponentFactory typedef, TOcRegistrar class, TOcApp::ReleaseObjectProtected member functionsForwardEventFORMAT="LINESPECIFIC"uint32 ForwardEvent(int eventId, const void far* param);FORMAT="LINESPECIFIC"uint32 ForwardEvent(int eventId, uint32 param = 0);REMAP='BodyNoLead'Both forms send a WM_OCEVENT message to the application's main window. The ROLE='italic'eventId parameter becomes the message's ROLE='italic'wParam and should be one of the OC_APPxxxx or OC_VIEWxxxx constants. The second parameter becomes the message's ROLE='italic'lParam and can be either a pointer (Form 1) or an integer (Form 2). Which form you use depends on the information a particular event needs to send in its ROLE='italic'lParam.See alsoREMAP='BodyNoLead'WM_OCEVENT message, OC_APPxxxx messages, OC_VIEWxxxx messages, TOcRegistrar classForwardEventREMAP='BodyNoLead'uint32 ForwardEvent(int eventId, const void far* param);FORMAT="LINESPECIFIC"uint32 ForwardEvent(int eventId, uint32 param = 0);REMAP='BodyNoLead'Both forms send a WM_OCEVENT message to the application's main window. The ROLE='italic'eventId parameter becomes the message's ROLE='italic'wParam and should be one of the OC_APPxxxx or OC_VIEWxxxx constants. The second parameter becomes the message's lParam and can be either a pointer (Form 1) or an integer (Form 2). Which form you use depends on the information a particular event needs to send in its ROLE='italic'lParam.See alsoREMAP='BodyNoLead'WM_OCEVENT message, OC_APPxxxx messages, OC_VIEWxxxx messages, TOcRegistrar classTOcAppMode enumMOREINFO="NONE"ocf/ocreg.hFORMAT="LINESPECIFIC"enum TOcAppModeREMAP='BodyNoLead'The enumerated values of ROLE='italic'TOcAppMode represent flags that ObjectComponents sets to indicate an application's running modes. Some flags are set in response to command-line switches that OLE places on a server's command line. Others are set as the application registers itself.REMAP='Body'To determine whether a particular mode flag is set, call ROLE='italic'TOcApp::ROLE='italic'IsOptionSet or ROLE='italic'TOcModule::ROLE='italic'IsOptionSet. The ROLE='italic'TOcApp object holds the mode flags for each instance of the application. ROLE='italic'TOcModule simply queries the ROLE='italic'TOcApp.REMAP='Body'The enumerated values are bit flags and can be combined with the bitwise OR operator (|). Flags marked with an asterisk can differ for each instance of an application.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='79*'COLNAME='C2' COLWIDTH='295*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'What the Server Should DoVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'amAnyRegOptionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Combine the ROLE='italic'RegServer, ROLE='italic'UnregServer, and ROLE='italic'TypeLib bits.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'amAutomationCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Register itself as single-use (one client only). Always accompanied by -Embedding.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'amDebugCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Enter a debugging session.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'amExeModeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'*Nothing. This flag is set to indicate that the server is running as an .EXE. Either the server was built as an .EXE, or it is a DLL that was launched by an .EXE stub and is running as an executable program.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'amExeModuleCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Nothing. This flag is set to indicate that the server was built as a .EXE program.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'amEmbeddingCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'*Consider remaining hidden because it is running for a client, not for itself.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'amLangIdCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Use the locale ID that follows this switch when creating registration and type libraries. (Useless without the -RegServer or -TypeLib switch.)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'amNoRegValidateCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Omit the usual validation check comparing the server's ROLE='italic'progid, ROLE='italic'clsid, and ROLE='italic'path to those registered with the system. The registrar object responds to this flag.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'amRegServerCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Register itself in the system registration database and quit.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'amRunCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Run its message loop. This is used by the factory callback function.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'amServedAppCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'*Avoid deleting itself (a client is using the application and holds a reference to it).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'amShutdownCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'*When the ROLE='italic'TComponentFactory callback sees this flag, it should terminate the application.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'amSingleUseCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'*Register itself as a single-use (one client only) application.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'amTypeLibCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Create and register a type library.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'amUnregServerCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Remove all its entries from the system registration database and quit.See alsoREMAP='BodyNoLead'TOcModule::IsOptionSet, TOcApp::IsOptionSetTOcAspect enumMOREINFO="NONE"ocf/ocobject.hFORMAT="LINESPECIFIC"enum TOcAspectREMAP='BodyNoLead'A container uses these values to request that objects in its documents be presented in particular ways. An object might be asked to show all its content, to show a miniature representation of its content, or an icon that represents the type of object it is. A server is not obliged to support all the possible aspects. REMAP='Body'The values are flags and can be combined with the bitwise OR operator (|).COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='57*'COLNAME='C2' COLWIDTH='318*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asContentCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Show the full content of the object at its normal size.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asThumbnailCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Show the content of the object shrunk to fit in a smaller space.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asIconCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Show an icon representing the type of object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asDocPrintCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Show the object as it would look if sent to the printer.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asDefaultCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Continue to use the last aspect specified.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'asMaintainCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Preserve the object's original aspect ratio. Do not alter the aspect ratio to fit the rectangle where the client chooses to show the object.See alsoREMAP='BodyNoLead'TOcPart::Draw, ocrxxxx aspect constantsTOcDialogHelp enumMOREINFO="NONE"ocf/ocobject.hFORMAT="LINESPECIFIC"enum TOcDialogHelpREMAP='BodyNoLead'The OC_APPDIALOGHELP event tells the container when the user clicks the Help button in a standard OLE dialog box. The ROLE='italic'lParam of the WM_OCEVENT message carries one of these values to indicate which dialog box the user has open.COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='81*'COLNAME='C2' COLWIDTH='99*'COLNAME='C3' COLWIDTH='195*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Dialog boxCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'PurposeVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dhBrowseCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Insert Object dialog boxCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Choose an object to insert.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dhBrowseClipboardCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Paste Special dialog boxCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Choose the data format for pasting an object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dhConvertCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Convert dialog boxCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Convert an object to work with a different server.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dhBrowseLinksCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Links dialog boxCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Update links to objects.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dhChangeIconCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Change Icon dialog boxCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Used internally by Insert Object and Paste Special dialog boxes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dhFileOpenCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'File Open dialog boxCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Choose a file to open.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dhSourceSetCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Change Source dialog boxCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Assign a new link source to a linked object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dhIconFileOpenCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'File Open dialog boxCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Confirm that the chosen file contains an icon resource.See alsoREMAP='BodyNoLead'EvOcAppDialogHelp event handler, OC_APPxxxx messages, TOleFrame::EvOcAppDialogHelp, WM_OCEVENT message TOcDocument classMOREINFO="NONE"ocf/ocdoc.hREMAP='BodyNoLead'The primary responsibility of a ROLE='italic'TOcDocument is to save and load data in a compound file using hierarchically ordered storages. (A storage is a compartment within a file, just as a directory is a compartment on a disk.) By default the application's native data always goes in the document's root storage, but the application is free to create its own storages in the same file. ROLE='italic'TOcDocument creates new storages below the root as necessary for OLE objects that the user inserts into the compound document. The new storages take their names from the names of the objects they store. ROLE='italic'TOcView automatically assigns a unique string identifier to each new object.REMAP='Body'Both servers and containers can create objects of type ROLE='italic'TOcDocument. In the container, this object represents an entire compound document. In the server, it represents the data for a single OLE object. (The server's single OLE object can have other OLE objects linked or embedded in it.)REMAP='Body'A ROLE='italic'TOcDocument object manages the collection of ROLE='italic'TOcPart objects that are deposited in one of the container's documents. It does not draw the data on the screen. To do that, every ROLE='italic'TOcDocument needs a corresponding ROLE='italic'TOcView or ROLE='italic'TOcRemView object. An application can possess multiple pairs of associated document and view objects, one for each open document.REMAP='Body'A container creates a ROLE='italic'TOcView object to draw its compound document in the container's own window. Because the window where the server draws belongs to the container (it is a child of the container's window), the server must create a remote view object (ROLE='italic'TOcRemView) for each document.REMAP='Body'In spite of the similar names, ROLE='italic'TOcDocument and ROLE='italic'TOcView are not part of the ObjectWindows Doc/View model. The nature of OLE makes it useful to separate data from its graphical representation, and the terms ROLE='italic'document and ROLE='italic'view express that separation even outside of ObjectWindows.REMAP='Body'To execute its tasks, a ROLE='italic'TOcDocument must use the standard OLE interfaces ROLE='italic'IStorage and ROLE='italic'IStream. Usually it is not necessary to use these interfaces directly because ObjectComponents implements them for you in its undocumented ROLE='italic'TOcStorage and ROLE='italic'TOcStream classes. These classes are thin wrappers around standard OLE interfaces. The implementation of ROLE='italic'TOcDocument makes use of both objects.See alsoREMAP='BodyNoLead'TOcRemView class, TOcView classPublic constructors and destructorConstructorsFORMAT="LINESPECIFIC"TOcDocument(TOcApp& app, const char far* fileName = 0);REMAP='BodyNoLead'Creates a new document object for the application and optionally assigns a file name for storing the document. A container uses this constructor for each document the user opens.FORMAT="LINESPECIFIC"TOcDocument(TOcApp& app, const char far* fileName, IStorage far* storageI);REMAP='BodyNoLead'Creates a new document object for the application and assigns a particular file and storage object to hold the document. The container calls this constructor when opening an existing file. The server and the container each create their own ROLE='italic'TOcDocument object for the object they share, but both their objects point to the same file for storing the object.REMAP='Body'ROLE='italic'IStorage is the standard OLE storage interface. ObjectComponents implements this interface in its internal, undocumented ROLE='italic'TOcStorage class. It is usually not necessary to manipulate the ROLE='italic'IStorage interface or the ROLE='italic'TOcStorage class directly in an ObjectComponents application.DestructorFORMAT="LINESPECIFIC"~TOcDocument( );REMAP='BodyNoLead'Destroys the ROLE='italic'TDocument object.Public member functionsCloseFORMAT="LINESPECIFIC"void Close( );REMAP='BodyNoLead'A container calls ROLE='italic'TOcPart::Close for each object in the compound document to release its servers. ROLE='italic'TOleDocument calls this function automatically when asked to close down.See alsoREMAP='BodyNoLead'TOcPart::Close, TOleDocument classGetActiveViewFORMAT="LINESPECIFIC"TOcView* GetActiveView( );REMAP='BodyNoLead'Returns a pointer to the active view. ROLE='italic'TOcPart calls this method to coordinate changing focus among active parts.See alsoREMAP='BodyNoLead'TOcDocument::SetActiveViewGetNameFORMAT="LINESPECIFIC"string GetName( ) const;REMAP='BodyNoLead'Returns the name of the file where the document will be stored. ObjectComponents keeps track of the name in order to create links correctly.See alsoREMAP='BodyNoLead'TOcDocument::SetNameGetPartsFORMAT="LINESPECIFIC"TOcPartCollection& GetParts( );REMAP='BodyNoLead'Returns an object with information about all the parts in the document. Each part corresponds to a linked or embedded object. Create an iterator of type ROLE='italic'TOcPartCollectionIter to loop through the collection and extract information about individual parts.See alsoREMAP='BodyNoLead'TOcPart class, TOcPartCollection class, TOcPartCollectionIter classGetStorageFORMAT="LINESPECIFIC"TOcStorage* GetStorage( );REMAP='BodyNoLead'Returns the document file's root storage.See alsoREMAP='BodyNoLead'TOcDocument::SetStorageLoadPartsFORMAT="LINESPECIFIC"bool LoadParts( );REMAP='BodyNoLead'Reads all the linked and embedded parts saved in a compound file. ROLE='italic'LoadParts does not necessarily load all the data from all the parts into memory immediately. The data is needed only if the object is visible.REMAP='Body'ROLE='italic'LoadParts returns ROLE='bold'true if all the parts are read successfully. If no file has yet been assigned to the document, then there is nothing to load and the function still returns ROLE='bold'true. (A document can acquire a file from its constructor, from ROLE='italic'SaveToFile, or from ROLE='italic'SetStorage.)See alsoREMAP='BodyNoLead'TOcDocument public constructors and destructors, TOcDocument::SaveParts, TOcDocument::SaveToFile, TOcDocument::SetStorageRenamePartsFORMAT="LINESPECIFIC"void RenameParts(IBRootLinkable far* BLDocumentI);REMAP='BodyNoLead'Call this whenever the name of the document file changes. ROLE='italic'RenameParts updates the internal name stored with each part so that other applications can still link to them correctly.REMAP='Body'ROLE='italic'IBRootLinkable is a custom OLE interface defined in the BOCOLE support library. Objects of type ROLE='italic'TOcView implement this interface, so it is usually not necessary to implement it yourself. Simply pass the document's view object to ROLE='italic'RenameParts.REMAP='Body'ROLE='italic'TOcView calls this function automatically if the view is renamed. See alsoREMAP='BodyNoLead'TOcDocument::SetName, TOcView::RenameSavePartsFORMAT="LINESPECIFIC"bool SaveParts(IStorage* storage = 0, bool sameAsLoaded = true);REMAP='BodyNoLead'Writes all the document's linked and embedded objects to the document's file. ROLE='italic'storage is the root storage in the file. A container's ROLE='italic'TOcDocument creates the storage object when the document is created or the first time it is saved. Find the object by calling ROLE='italic'GetStorage. A server gets the storage object from the container. It is usually not necessary to manipulate the ROLE='italic'storage object directly.REMAP='Body'ROLE='italic'sameAsLoaded should be ROLE='bold'true unless the name of the document file has changed since the last time the document was loaded or saved.REMAP='Body'ROLE='italic'SaveParts returns ROLE='bold'true if all the objects are successfully written to the file.REMAP='Body'ROLE='italic'LoadParts and ROLE='italic'SaveParts are called by the ROLE='italic'Open and ROLE='italic'Commit methods in ROLE='italic'TOleDocument.See alsoREMAP='BodyNoLead'TOcDocument::GetStorage, TOcDocument::LoadParts, TOcDocument::SaveToFileSaveToFileFORMAT="LINESPECIFIC"bool SaveToFile(const char far* newName);REMAP='BodyNoLead'Saves the document in the file named by ROLE='italic'newName. Usually a container calls this function when the user chooses File|Save for an unnamed document or File|Save As for any document. ROLE='italic'SaveToFile creates a new storage object and then calls ROLE='italic'SaveParts. It returns ROLE='bold'true if all the linked and embedded parts are successfully saved.See alsoREMAP='BodyNoLead'TOcDocument::SavePartsSetActiveViewFORMAT="LINESPECIFIC"void SetActiveView(TOcView* view);REMAP='BodyNoLead'A ROLE='italic'TOcView object calls this method when it is activated so that the document can locate the active view. ROLE='italic'TOcDocument communicates only with the active view. The active view sends messages to the corresponding window, perhaps a ROLE='italic'TOleView window. This window is responsible for telling other windows about changes.See alsoREMAP='BodyNoLead'TOcDocument::GetActiveViewSetNameFORMAT="LINESPECIFIC"void SetName(const string& newName);REMAP='BodyNoLead'Tells the document the name of the file where it will be stored. ObjectComponents needs to know the name in order to create links correctly. More specifically, ROLE='italic'SetName causes ObjectComponents to update the OLE moniker that a link server must provide.See alsoREMAP='BodyNoLead'TOcDocument::GetNameSetStorageFORMAT="LINESPECIFIC"void SetStorage(const char far* path);REMAP='BodyNoLead'Creates a compound file using the name in ROLE='italic'path and assigns the root storage of the new file to be the root storage of the document. Usually a container calls this function when the user chooses File|Save for an unnamed document or File|Save As for any document.FORMAT="LINESPECIFIC"void ROLE='italic'SetStorage(IStorage* storage);REMAP='BodyNoLead'Assigns ROLE='italic'storage to be the document's root storage. Usually a server calls this function when the container passes it an ROLE='italic'IStorage object. (An ROLE='italic'IStorage object implements the standard OLE interface ROLE='italic'IStorage. Usually it is not necessary to manipulate this object directly.)REMAP='Body'Assigns the document a storage for writing its data. ROLE='italic'storage becomes the document's root storage. Each linked or embedded object gets its own substorage under the root storage. See alsoREMAP='BodyNoLead'TOcDocument::GetStorageTOcDragDrop structMOREINFO="NONE"ocf/ocview.hREMAP='BodyNoLead'Holds information that a view or a window needs in order to accept a drag and drop object. The OC_VIEWDRAG and OC_VIEWDROP messages carry a reference to this structure in their ROLE='italic'lParams. ROLE='italic'TOleView and ROLE='italic'TOleWindow process these messages for you, so you should not need to use ROLE='italic'TOcDragDrop directly unless you are programming without ObjectWindows. For examples of how to process OC_VIEWDRAG and OC_VIEWDROP messages, look at the source code for the ROLE='italic'EvOcViewDrag and ROLE='italic'EvOcViewDrop methods in ROLE='italic'TOleView and ROLE='italic'TOleWindow.See alsoREMAP='BodyNoLead'OC_VIEWxxxx messages, TOleView::EvOcViewDrag, TOleView::EvOcViewDrop, TOleWindow::EvOcViewDrag, TOleWindow::EvOcViewDropPublic data members InitInfoFORMAT="LINESPECIFIC"TOcInitInfo far* InitInfo;REMAP='BodyNoLead'When carried in an OC_VIEWDROP message, this field describes an object about to be dropped on the view. When carried in an OC_VIEWDRAG message, this field is zero.See alsoREMAP='BodyNoLead'OC_VIEWxxxx messages, TOcInitInfo classPosFORMAT="LINESPECIFIC"TRect Pos;REMAP='BodyNoLead'The coordinates in ROLE='italic'Pos indicate the area of the view where the user has dropped an object. The position is given in device coordinates relative to the client area.See also REMAP='BodyNoLead'TRect classWhereFORMAT="LINESPECIFIC"TPoint Where;REMAP='BodyNoLead'The coordinates in ROLE='italic'Where indicate the point on the view where the mouse released the object. The position is given in client area coordinates.See alsoREMAP='BodyNoLead'TPoint classTOcDropAction enumMOREINFO="NONE"ocf/ocobject.hFORMAT="LINESPECIFIC"enum TOcDropActionREMAP='BodyNoLead'ROLE='italic'TOcApp::ROLE='italic'Drag uses these values to describe what actions are allowed and what actions actually occur during a drag and drop operation. The values are flags and can be combined with the bitwise OR operator (|).COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='57*'COLNAME='C2' COLWIDTH='150*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'daDropCopyCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Copy the object to the drop site.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'daDropMoveCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Move the object to the drop site.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'daDropLinkCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Create a link to the object at the drop site.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'daDropNoneCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No action occurred.See alsoREMAP='BodyNoLead'TOcApp::DragTOcFormatList classMOREINFO="NONE"ocf/ocview.hREMAP='BodyNoLead'Manages a list of Clipboard formats that a particular view supports. REMAP='Body'ROLE='italic'TOcFormat, TOcFormatList, and ROLE='italic'TOcFormatListIter all work together to maintain the list of formats. ROLE='italic'TOcFormatList adds and deletes ROLE='italic'TOcFormat objects from the list. ROLE='italic'TOcFormatListIter enumerates the items in the list whenever the view needs to examine them one by one. Because ROLE='italic'TOcView creates and maintains this list internally, it is usually not necessary for you to use any of these classes directly.REMAP='Body'When ObjectComponents receives your document registration table, it sees entries for each Clipboard format that the document receives or produces. From these entries, ROLE='italic'TOcView creates a list of objects of type ROLE='italic'TOcFormat, each object representing one format. The view needs this list to know when a Clipboard command or drag and drop operation can succeed. For example, if the user drags a bitmap over a view that accepts only text, ROLE='italic'TOcView knows the object cannot be dropped and adjusts the cursor accordingly.See alsoREMAP='BodyNoLead'TOcFormat class, TOcFormatListIter class, TOcView classPublic constructor and destructorConstructorFORMAT="LINESPECIFIC"TOcFormatList( );REMAP='BodyNoLead'Creates an empty list object. To insert items in the list, call the ROLE='italic'Add method.DestructorFORMAT="LINESPECIFIC"~TOcFormatList( );REMAP='BodyNoLead'Deletes all the items in the list.See alsoREMAP='BodyNoLead'TOcFormatList::AddPublic member functionsAddFORMAT="LINESPECIFIC"int Add(TOcFormat* format);REMAP='BodyNoLead'Inserts a new Clipboard format item in the list. Returns 0 for failure and 1 for success.See alsoREMAP='BodyNoLead'TOcFormatList::ClearClearFORMAT="LINESPECIFIC"void Clear(int del = 1);REMAP='BodyNoLead'Removes all the items from the list. If ROLE='italic'del is 1, ROLE='italic'Clear also deletes all the ROLE='italic'TOcFormat objects.See alsoREMAP='BodyNoLead'TOcFormatList::Add, TOcFormatList::DetachCountFORMAT="LINESPECIFIC"virtual uint Count( ) const;REMAP='BodyNoLead'Returns the number of items in the list.See alsoREMAP='BodyNoLead'TOcFormatList::IsEmptyDetachFORMAT="LINESPECIFIC"int Detach(const TOcFormat* format, int del = 0);REMAP='BodyNoLead'Removes one format item from the list. If ROLE='italic'del is 1, then ROLE='italic'Detach also deletes the ROLE='italic'TOcFormat object. See alsoREMAP='BodyNoLead'TOcFormatList::Add, TOcFormatList::ClearFindFORMAT="LINESPECIFIC"unsigned Find(const TOcFormat* format) const;REMAP='BodyNoLead'Searches the list for the object passed as format. If the object is found, then ROLE='italic'Find returns the object's position in the list. (The first position is 0.) If format is not in the list, ROLE='italic'Find returns UINT_MAX.IsEmptyFORMAT="LINESPECIFIC"int IsEmpty( ) const;REMAP='BodyNoLead'Returns 1 if the list object currently contains no ROLE='italic'TOcFormat items and 0 if the list is not empty.See alsoREMAP='BodyNoLead'TOcFormatList::Countoperator []FORMAT="LINESPECIFIC"TOcFormat*& operator [](unsigned index);REMAP='BodyNoLead'Retrieves a Clipboard format by its position in the list. If index is 1, for example, the [] returns the second item in the list. The order of items depends on the priority assigned to them when they are registered.TOcFormatListIter classMOREINFO="NONE"ocf/ocview.hREMAP='BodyNoLead'Enumerates all the Clipboard formats that a particular view supports. REMAP='Body'ROLE='italic'TOcFormat, TOcFormatList, and ROLE='italic'TOcFormatListIter all work together to manage the list of formats. ROLE='italic'TOcFormatList adds and deletes ROLE='italic'TOcFormat objects from the list. ROLE='italic'TOcFormatListIter enumerates the items in the list whenever the view needs to examine them one by one. Because ROLE='italic'TOcView creates and maintains this list internally, it is usually not necessary for you to use any of these classes directly.REMAP='Body'When ObjectComponents receives your document registration table, it sees entries for each Clipboard format that the document receives or produces. From these entries, ROLE='italic'TOcView creates a list of objects of type ROLE='italic'TOcFormat, each object representing one format. The view needs this list to know when a Clipboard command or drag and drop operation can succeed. For example, if the user drags a bitmap object over a view that accepts only text, ROLE='italic'TOcView knows the object cannot be dropped and adjusts the cursor accordingly.See alsoREMAP='BodyNoLead'TOcFormat class, TOcFormatList class, TOcView classPublic constructorConstructorFORMAT="LINESPECIFIC"TOcFormatListIter(const TOcFormatList& collection)REMAP='BodyNoLead'Constructs an iterator to enumerate the Clipboard formats contained in collection.Public member functionsCurrentFORMAT="LINESPECIFIC"TOcFormat* Current( ) const;REMAP='BodyNoLead'Returns the format that the iterator currently points to.operator ++FORMAT="LINESPECIFIC"TOcFormat* operator++( );REMAP='BodyNoLead'Returns the current format and then advances the iterator to point to the next format (postincrement).FORMAT="LINESPECIFIC"TOcFormat* operator++(int);REMAP='BodyNoLead'Advances the iterator to point to the next format in the list and then returns that format (preincrement).operator intFORMAT="LINESPECIFIC"operator int( ) const;REMAP='BodyNoLead'Converts the iterator to an integer value in order to test whether the iterator has finished enumerating the collection. If parts remain unenumerated, the operator returns the iterator's current position in the list of parts. If the iterator has reached the end of the list, the operator returns zero.RestartFORMAT="LINESPECIFIC"void Restart( );REMAP='BodyNoLead'Resets the iterator to begin again with the first format in the list.FORMAT="LINESPECIFIC"void Restart(unsigned start, unsigned stop);REMAP='BodyNoLead'Resets the iterator to enumerate a subset of the format list, beginning with the object at position start and ending with the object at position stop.TOcFormatName classMOREINFO="NONE"ocf/ocapp.hREMAP='BodyNoLead'ROLE='italic'TOcApp uses this class internally to hold the strings that describe a Clipboard data format such as text or bitmap. ROLE='italic'TOcApp displays these strings in standard OLE dialog boxes such as Paste Link.REMAP='Body'Every Clipboard format has three associated pieces of information: an ID value, a name string, and a result name. For standard formats, the ID is a constant such as CF_SYLK. The name string is a short name such as "Sylk." The result name is a longer string that tells the user what pasting this data producesname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'for example, "a spreadsheet". A ROLE='italic'TOcFormatName object holds all three values for one format.REMAP='Body'ROLE='italic'TOcApp makes a ROLE='italic'TOcNameList object to hold all the format names it needs. It loads descriptive strings into ROLE='italic'TOcFormatName objects and adds the objects one by one to its name list. Both objects are created and managed inside ROLE='italic'TOcApp. Usually you do not have to manipulate either of them directly.See alsoREMAP='BodyNoLead'TOcApp class, TOcNameList classPublic constructors and destructorConstructorsFORMAT="LINESPECIFIC"TOcFormatName( );REMAP='BodyNoLead'Constructs an empty format name object.FORMAT="LINESPECIFIC"TOcFormatName(char far* fmtName, char far* fmtResultName, char far* id = 0);REMAP='BodyNoLead'Constructs a format name object and initializes it with three values that describe a Clipboard format. ROLE='italic'fmtName is the name of the format ("metafile"). ROLE='italic'fmtResultName describes what the user gets by pasting this format ("a Windows metafile picture"). is the value that Windows assigns to identify the format (CF_METAFILEPICT) but expressed as a string of decimal digits ("3").DestructorFORMAT="LINESPECIFIC"~TOcFormatName( );REMAP='BodyNoLead'Releases the object.Public member functionsGetIdFORMAT="LINESPECIFIC"const char far* GetId( );REMAP='BodyNoLead'Returns a pointer to the string that the system uses to designate the format.GetNameFORMAT="LINESPECIFIC"const char far* GetName( );REMAP='BodyNoLead'Returns a pointer to the name of the format.GetResultNameFORMAT="LINESPECIFIC"const char far* GetResultName( );REMAP='BodyNoLead'Returns the descriptive string that tells the user what pasting data of this format produces.operator ==FORMAT="LINESPECIFIC"bool operator==(const TOcFormatName& other);REMAP='BodyNoLead'Returns ROLE='bold'true if ROLE='italic'other is the same object as ROLE='bold'this.TOcInitHow enumMOREINFO="NONE"ocf/ocobject.hFORMAT="LINESPECIFIC"enum TOcInitHowREMAP='BodyNoLead'These values tell whether a container is to link or embed a new object it is receiving. The container passes this information to a ROLE='italic'TOcInitInfo object when it receives a new OLE object.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='54*'COLNAME='C2' COLWIDTH='321*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ihLinkCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Link to the object. Create a reference in the container's document that points to the place in the server's document where the data actually resides.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ihEmbedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Embed the object. Copy the object's data directly into the container's document.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ihMetafileCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Embed a static object that draws itself as a metafile.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ihBitmapCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Embed a static object that draws itself as a bitmap.See alsoREMAP='BodyNoLead'TOcInitInfo public constructors, TOcInitWhere enumTOcInitInfo classMOREINFO="NONE"ocf/ocobject.hREMAP='BodyNoLead'ROLE='italic'TOcInitInfo holds information that tells ObjectComponents how to create a new part. When the user pastes, inserts, or drops an object into a container, ObjectComponents creates a ROLE='italic'TOcInitInfo object, initializes it with information about the incoming OLE object, and passes the info object to the ROLE='italic'TOcPart constructor. The info object tells the part where to find its data and how to create itself.REMAP='Body'If you are using ObjectWindows, ROLE='italic'TOleView manages these details for you. If you are programming without ObjectWindows, you can find sample code for using ROLE='italic'TOcInitInfo objects in the ROLE='italic'TOleView methods that insert objects: look at the code for ROLE='italic'CmEditInsertObject and ROLE='italic'CmEditPasteSpecial. Look also at the code for ROLE='italic'TOcView::Drop.See alsoREMAP='BodyNoLead'TOcPart Class, TOcView::Drop, TOleView::CmEditInsertObject, TOleView::CmEditPasteSpecialPublic data membersContainerFORMAT="LINESPECIFIC"IBContainer far* Container;REMAP='BodyNoLead'ROLE='italic'Container is the view object that is about to receive the object. ROLE='italic'IBContainer is an undocumented custom OLE interface defined in the BOCOLE support library and implemented in ROLE='italic'TOcView. The ROLE='italic'Container data member can hold an object of type ROLE='italic'TOcView.See alsoREMAP='BodyNoLead'TOcView classHIconFORMAT="LINESPECIFIC"HICON HIcon;REMAP='BodyNoLead'ROLE='italic'HIcon holds the icon to draw if the user chooses the Display As Icon option from the Insert Object dialog box. The ROLE='italic'HIcon handle is actually a global memory handle to a metafile containing the icon. The ROLE='italic'Browse and ROLE='italic'BrowseClipboard functions in ROLE='italic'TOcApp handle the Insert Object dialog box for you, so usually you do not need to display the icon directly yourself.HowFORMAT="LINESPECIFIC"TOcInitHow How;REMAP='BodyNoLead'Tells whether the object should be linked or embedded when it is added to the document.See alsoREMAP='BodyNoLead'TOcInitHow enumStorageFORMAT="LINESPECIFIC"IStorage far* Storage;REMAP='BodyNoLead'ROLE='italic'Storage is the storage object in a compound file. The container provides the storage to hold data transferred from the server. ROLE='italic'IStorage is a standard OLE interface. ObjectComponents implements the ROLE='italic'IStorage interface in ROLE='italic'TOcStorage, so ROLE='italic'Storage usually holds a ROLE='italic'TOcStorage object. WhereFORMAT="LINESPECIFIC"TOcInitWhere Where;REMAP='BodyNoLead'Tells where the server will place the object's data. For example, the server can choose to transfer data by placing it in a file, in a storage, or in a memory handle.See alsoREMAP='BodyNoLead'TOcInitWhere enumDataFORMAT="LINESPECIFIC"IDataObject* Data;REMAP='BodyNoLead'One of four data fields in an anonymous union, this field is used when Where is ROLE='italic'iwDataObject indicating that the server has created an OLE data object to transfer the data for the incoming object. Data points to the ROLE='italic'IDataObject interface on the server's data transfer object. (ROLE='italic'IDataObject is a standard OLE interface.) This is the normal transfer method for objects received from the Clipboard or through a drag-and-drop operation.PathFORMAT="LINESPECIFIC"LPCOLESTR Path;REMAP='BodyNoLead'One of four data fields in an anonymous union, this field is used when ROLE='italic'Where is ROLE='italic'iwFile indicating that the server has placed the data for the incoming object in a file. ROLE='italic'Path points to the name of the file where the data is stored. CIdFORMAT="LINESPECIFIC"BCID CId;REMAP='BodyNoLead'One of four data fields in an anonymous union, this field is used when ROLE='italic'Where is ROLE='italic'iwNew indicating that the incoming object is brand new, being freshly created. ROLE='italic'CId is the class ID that the server registered for one of its document factories. It tells the server what kind of object to create.See alsoREMAP='BodyNoLead'TOcApp::RegisterClasses, TOcInitInfo::WhereHandleFORMAT="LINESPECIFIC" struct{FORMAT="LINESPECIFIC" HANDLE Data;FORMAT="LINESPECIFIC" uint DataFormat;FORMAT="LINESPECIFIC"} Handle;REMAP='BodyNoLead'One of four data fields in an anonymous union, this structure is used when ROLE='italic'Where is ROLE='italic'iwHandle indicating that the server has placed the data for the incoming object in a memory handle. ROLE='italic'Data is the handle itself and ROLE='italic'DataFormat identifies a Clipboard format for the data in the handle.Public constructorsTOcInitInfoFORMAT="LINESPECIFIC"IBContainer far* Container;REMAP='BodyNoLead'ROLE='italic'Container is the view object that is about to receive the object. ROLE='italic'IBContainer is an undocumented custom OLE interface defined in the BOCOLE support library and implemented in ROLE='italic'TOcView. The ROLE='italic'Container data member can hold an object of type ROLE='italic'TOcView.See alsoREMAP='BodyNoLead'TOcView classTOcInitInfoFORMAT="LINESPECIFIC"TOcInitInfo(IBContainer far* container);REMAP='BodyNoLead'Use Form 1 when invoking the server to create a new object from scratchname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'for example, when processing the Insert Object command. The new part will be embedded, not linked. FORMAT="LINESPECIFIC"TOcInitInfo(TOcInitHow how, TOcInitWhere where, IBContainer far* container);REMAP='BodyNoLead'Use Form 2 when creating a part to hold an object that already existsname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'for example, when loading a part from a storage in a compound document. ROLE='italic'how tells whether the object will be linked or embedded. ROLE='italic'where tells what medium the server will use to transfer data from the existing object. REMAP='Body'Both forms of the constructor create a ROLE='italic'TOcInitInfo object for placing a new part in ROLE='italic'container. ROLE='italic'container is the view that will hold the new part. ROLE='italic'IBContainer is a custom OLE interface defined in the BOCOLE support library and implemented in ROLE='italic'TOcView. container can be an object of type ROLE='italic'TOcView.Public member functionsReleaseDataObjectFORMAT="LINESPECIFIC"uint32 ReleaseDataObject( );REMAP='BodyNoLead'If the ROLE='italic'TOcInitInfo object holds a pointer to the data object from which the new part is about to be created, then ROLE='italic'ReleaseDataObject decrements the data object's reference count. Call this when you are through with the data object.See alsoREMAP='BodyNoLead'TOcInitInfo::DataTOcInitWhere enumMOREINFO="NONE"ocf/ocobject.hFORMAT="LINESPECIFIC"enum TOcInitWhereREMAP='BodyNoLead'These values tell where the data for an object resides. A container passes this information to a ROLE='italic'TOcInitInfo object when it receives a new OLE object for linking or embedding. The server can choose any of several available channels for transferring the data in the object.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='63*'COLNAME='C2' COLWIDTH='312*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'iwFileCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The server passes the data in a disk file.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'iwStorageCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The server passes the data in a storage object (part of a compound file).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'iwDataObjectCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The server passes the data in a data transfer object, one that supports the standard ROLE='italic'IDataObject OLE interface. (Objects transferred through the Clipboard or by dragging support this interface. ROLE='italic'TOcInitInfo holds a pointer to the interface.)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'iwNewCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The server will be asked to create a new object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'iwHandleCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The server passes a memory handle for the data.See alsoREMAP='BodyNoLead'TOcInitInfo public constructors, TOcInitHow enumTOcInvalidate enumMOREINFO="NONE"ocf/ocobject.hFORMAT="LINESPECIFIC"enum TOcInvalidateREMAP='BodyNoLead'Functions that invalidate an object use these enumeration values to indicate whether the data in the object has changed or the appearance of the object has changed. It is possible for the data in an object to change without invalidating the view of the object. For example, if the object is drawn as an icon, then editing the data probably does not call for an update to the view. If both the data and the view change, then combine both flags with the bitwise OR operator (|).REMAP='Body'If the view is invalid, the object needs to be redrawn. If the data is invalid, then the object needs saving. (It is not necessary to save the object right away. ROLE='italic'invData simply indicates that the object is dirty and needs to be saved before the document is closed.)COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='51*'COLNAME='C2' COLWIDTH='303*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'invDataCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The data in an object has changed and should be updated in the container.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'invViewCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The appearance of an object needs to change and should be updated in the container.See alsoREMAP='BodyNoLead'TOcRemView::InvalidateTOc, TOleView::InvalidatePart, TOleWindow::InvalidatePartTOcMenuDescr structMOREINFO="NONE"ocf/ocapp.hREMAP='BodyNoLead'The menu descriptor structure is used when merging the menus of a container and server for in-place editing. The structure holds a handle to a shared Windows menu object and a count of the number of drop-down menus in each group. REMAP='Body'If you are using ObjectWindows, use the information in the structure to construct a ROLE='italic'TMenuDescr object for the other application. To merge two menus, call ROLE='italic'TMenuDescr::Merge. If you are not using ObjectWindows, call the Windows API routines such as ROLE='italic'InsertMenu to place your own commands in the shared menu.REMAP='Body'The following messages carry a ROLE='italic'TOcMenuDescrROLE='bold' struct in their ROLE='italic'lParams: OC_APPINSMENUS, OC_APPMENUS, and OC_VIEWINSMENUS. The ObjectWindows OLE-enabled window and view classes process these messages for you. Unless you are programming without ObjectWindows, you usually will not have to use ROLE='italic'TOcMenuDescr directly. For examples of how to process the messages, see the source code for the relevant event handlers in ROLE='italic'TOleView, TOleWindow, TOleFrame, and ROLE='italic'TOleMDIFrame.See alsoREMAP='BodyNoLead'OC_APPxxxx messages, OC_VIEWxxxx messages, TMenuDescr classPublic data membersHMenuFORMAT="LINESPECIFIC"HMENU HMenu;REMAP='BodyNoLead'Holds a handle to the shared menu. The handle is valid only while the menu is constructed. Do not store it for later use.WidthFORMAT="LINESPECIFIC"int Width[6];REMAP='BodyNoLead'The ROLE='italic'Width array contains the number of pop-up menus in each menu group. The groups, in order, are File, Edit, Container, Object, Windows, and Help.REMAP='Body'The array is meant to help you construct a ROLE='italic'TMenuDescr object. The numbers it holds control how the menu is merged.See alsoREMAP='BodyNoLead'TMenuDescr public constructors and destructorsTOcModule classMOREINFO="NONE"ocf/ocapp.hREMAP='BodyNoLead'ROLE='italic'TOcModule is a mix-in class for deriving OLE-enabled application classes. Any ObjectComponents application that supports linking and embedding should derive its application class from both ROLE='italic'TApplication and ROLE='italic'TOcModule. The ObjectComponents module class coordinates some basic housekeeping chores related to registration and memory management. It also holds a pointer to the ROLE='italic'TOcApp object that connects your application object to OLE through ObjectComponents. Allowing ROLE='italic'TOcModule to do this work also makes it easy to use the same code for both .EXE and .DLL versions of the same server.See alsoREMAP='BodyNoLead'TApplication class, TOcApp classPublic constructor and destructorConstructorFORMAT="LINESPECIFIC"TOcModule( );REMAP='BodyNoLead'Builds a ROLE='italic'TOcModule. After creating a ROLE='italic'TOcModule object, you need to call ROLE='italic'OcInit.DestructorFORMAT="LINESPECIFIC"~TOcModule( );REMAP='BodyNoLead'Releases the ROLE='italic'TOcApp object. An application that derives from ROLE='italic'TOcModule does not need to call the ROLE='italic'TOcApp::ReleaseObject method when it closes down. (Never call ROLE='bold'delete to destroy a ROLE='italic'TOcApp object, either.)See AlsoREMAP='BodyNoLead'TOcModule::OcInitTOcModuleOcInitPublic member functionsGetRegistrarFORMAT="LINESPECIFIC"TRegistrar& GetRegistrar( );REMAP='BodyNoLead'Returns the application's registrar object. Be sure to call ROLE='italic'OcInit first.See alsoREMAP='BodyNoLead'TOcModule::OcInit, TRegistrar classIsOptionSetFORMAT="LINESPECIFIC"bool IsOptionSet(uint32 option) const;REMAP='BodyNoLead'Returns ROLE='bold'true if the command-line flag indicated by ROLE='italic'option is set and ROLE='bold'false if it is not. The registrar sets the flags for you when it interprets OLE-related switches on the application's command line. The possible values for ROLE='italic'option are enumerated in ROLE='italic'TOcAppMode.See alsoREMAP='BodyNoLead'TOcAppMode class, TOcRegistrar classOcInitFORMAT="LINESPECIFIC"void OcInit(TOcRegistrar& registrar, uint32 options);REMAP='BodyNoLead'Initializes ObjectComponents support for the code module. This call causes ObjectComponents to create the ROLE='italic'TOcApp connector object that attaches the application to the OLE system. Always call ROLE='italic'OcInit right after constructing the module object. REMAP='Body'ROLE='italic'registrar is the application registrar object. It must be created before you call ROLE='italic'OcInit.REMAP='Body'ROLE='italic'options is a set of bit flags describing command-line options set for this instance of the program. To test for particular options, call ROLE='italic'IsOptionSet. The possible option flags are defined in ROLE='italic'TOcAppMode.See alsoREMAP='BodyNoLead'TOcApp class, TOcAppMode enum, TOcModule::IsOptionSet, TOcModule::IsOptionSet,, TOcRegistrar classPublic data membersOcAppFORMAT="LINESPECIFIC"TOcApp* OcApp;REMAP='BodyNoLead'Holds the ROLE='italic'TOcApp object that is the ObjectComponents partner object for your ROLE='italic'TApplication-derived class. This member is initialized when you call ROLE='italic'OcInit.See alsoREMAP='BodyNoLead'TOcApp class, TOcModule::OcInitOleMallocFORMAT="LINESPECIFIC"TOleAllocator OleMalloc;REMAP='BodyNoLead'Sets up an allocator object that initializes the OLE system and sets up the memory allocator. OLE allows each program to set up a memory manager for OLE to use when allocating and de-allocating memory on behalf of that application. REMAP='Body'ROLE='italic'TOcModule simply chooses the default allocator. If you have unusual memory management needs and want to supply your own custom memory allocator, set its ROLE='italic'IMalloc interface in ROLE='italic'OleMalloc::Mem.See alsoREMAP='BodyNoLead'TOleAllocator class, TOleAllocator::MemTOcNameList classMOREINFO="NONE"ocf/ocapp.hREMAP='BodyNoLead'ROLE='italic'TOcApp uses this class internally to manage a collection of ROLE='italic'TOcFormatName objects. Each format name object holds three strings that describe a Clipboard data format such as text or bitmap. ROLE='italic'TOcApp displays these strings in standard OLE dialog boxes such as Paste Link.REMAP='Body'The list of format names is created and managed inside ROLE='italic'TOcApp. Usually you do not have to manipulate the list directly. To put your own custom formats in the list, however, you do have to register them. See ROLE='italic'TOcApp::AddUserFormatName for more information about setting up custom formats.REMAP='Body'Standard Windows Clipboard formats are always added to the list for you. The name and result strings for standard formats are defined in OLEVIEW.RC. To localize the strings, edit this file. (Standard formats do not have an identifier string. Instead they have a registration number, such as CF_TEXT.)See alsoREMAP='BodyNoLead'TOcApp class, TOcApp::AddUserFormatName, TOcFormatName classPublic constructor and destructorConstructorFORMAT="LINESPECIFIC"TOcNameList( );REMAP='BodyNoLead'Constructs a name list containing no items. To insert names in the list, call ROLE='italic'Add.DestructorFORMAT="LINESPECIFIC"~TOcNameList( );REMAP='BodyNoLead'Destroys the list and the objects in the list.See alsoREMAP='BodyNoLead'TOcNameList::AddPublic member functionsoperator [ ]FORMAT="LINESPECIFIC"TOcFormatName*& operator[](unsigned index);REMAP='BodyNoLead'Returns the item at position ROLE='italic'index in the list of format name objects. The first object is at ROLE='italic'index 0. If index points past the end of the list, the function throws a precondition exception.FORMAT="LINESPECIFIC"TOcFormatName* operator[](char far* id);REMAP='BodyNoLead'Returns the format name object whose format ID string matches ROLE='italic'id. The return value is 0 if no match is found.See alsoREMAP='BodyNoLead'TOcFormatNameAddFORMAT="LINESPECIFIC"int Add(TOcFormatName* name);REMAP='BodyNoLead'Inserts the object ROLE='italic'name into the list. Returns 1 for success and 0 for failure.See alsoREMAP='BodyNoLead'TOcNameList::Clear, TOcNameList::DetachClearFORMAT="LINESPECIFIC"void Clear(int del = 1);REMAP='BodyNoLead'Empties the list. If ROLE='italic'del is 1, ROLE='italic'Clear also deletes each object in the list.See alsoREMAP='BodyNoLead'TOcNameList::Add, TOcNameList::DetachCountFORMAT="LINESPECIFIC"virtual uint Count( ) const;REMAP='BodyNoLead'Returns the number of items in the list.See alsoREMAP='BodyNoLead'TOcNameList::IsEmptyDetachFORMAT="LINESPECIFIC"int Detach(const TOcFormatName* name, int del = 0);REMAP='BodyNoLead'Removes the single object name from the list. If ROLE='italic'del is 1, ROLE='italic'Detach also deletes the object ROLE='italic'name.See alsoREMAP='BodyNoLead'TOcNameList::Clear, TOcNameList::AddFindFORMAT="LINESPECIFIC"unsigned Find(const TOcFormatName* name) const;REMAP='BodyNoLead'Searches the list and returns the position of ROLE='italic'name. If the ROLE='italic'name object is not in the list, ROLE='italic'Find returns UINT_MAX.IsEmptyFORMAT="LINESPECIFIC"int IsEmpty( ) const;REMAP='BodyNoLead'Returns 1 if the list currently contains no items and 0 if it contains at least one item.See alsoREMAP='BodyNoLead'TOcNameList::CountTOcPart classMOREINFO="NONE"ocf/ocpart.hBase classFORMAT="LINESPECIFIC"TUnknownREMAP='BodyNoLead'A ROLE='italic'TOcPart object represents a linked or embedded object in a document. It represents the linked or embedded object as the container sees it. From the server's side, the same linked or embedded OLE object has two parts: data (ROLE='italic'TOcDocument) and a graphical representation of the data (ROLE='italic'TOcRemView). ROLE='italic'TOcPart manages a site in the container's document where a server places an OLE object.REMAP='Body'ROLE='italic'TOcPart is a COM object and implements the ROLE='italic'IUnknown interface.See alsoREMAP='BodyNoLead'TOcDocument class, TOcPartCollection class, TOcRemView class, TUnknown classPublic constructorsConstructorsFORMAT="LINESPECIFIC"TOcPart(TOcDocument& document, TOcInitInfo far& initInfo, TRect pos, int id = 0);REMAP='BodyNoLead'ROLE='italic'document is the container's ROLE='italic'TOcDocument object representing the compound document that will hold the newly created part. ROLE='italic'initInfo contains information about the object being inserted. It is usually obtained during a paste, drop, or insertion operation. The coordinates in ROLE='italic'pos designate the area where the new object will be drawn. ROLE='italic'id is any arbitrary unique integer used to distinguish this object from others in the same document. If ROLE='italic'id is 0, ROLE='italic'TOcPart generates a new ID automatically.FORMAT="LINESPECIFIC"TOcPart(TOcDocument& document, const char far* name);REMAP='BodyNoLead'ROLE='italic'document is the same as for Form 1. The ROLE='italic'name string is the name of a linked or embedded part. The second form is used when loading a part from a compound document. The name of the part is also the name of the storage where the part was written.REMAP='Body'Both constructors expect to receive the container's own ROLE='italic'TOcDocument object. This represents the compound document where the new object will be placed.See alsoREMAP='BodyNoLead'TOcDocument class, TOcInitInfo class, TOcPart::Delete, TRect classPublic member functionsoperator ==FORMAT="LINESPECIFIC"bool operator==(const TOcPart& other);REMAP='BodyNoLead'Returns ROLE='bold'true if other is the same ROLE='italic'TOcPart as this. This operator is defined for the use of the ROLE='italic'TOcPartCollection class.ActivateFORMAT="LINESPECIFIC"bool Activate(bool activate);REMAP='BodyNoLead'If ROLE='italic'activate is ROLE='bold'true, this function activates the part by asking the server to execute its primary (or default) verb for the object. If the default verb is ROLE='italic'Edit, for example, ROLE='italic'Activate initiates an in-place editing session. If ROLE='italic'activate is ROLE='bold'false, then this function deactivates an in-place editing session.REMAP='Body'ROLE='italic'Activate returns ROLE='bold'true if the server is able to execute the command.See alsoREMAP='BodyNoLead'TOcPart::IsActive, TOcPart::OpenCloseFORMAT="LINESPECIFIC"bool Close( );REMAP='BodyNoLead'Disconnects the embedded object from its server. Returns ROLE='bold'true if the server closes successfully.DeleteFORMAT="LINESPECIFIC"void Delete( );REMAP='BodyNoLead'ROLE='italic'Delete is used when the user selects an embedded object and presses the Delete key (or does a cut operation). It first calls ROLE='italic'Close to disconnect the container from the embedded object. Then it releases the reference to the embedded part. See alsoREMAP='Body'TOcPart::CloseDetachFORMAT="LINESPECIFIC"int Detach( );REMAP='BodyNoLead'Separates a part from its document. Call ROLE='italic'Detach before cutting a part to the Clipboard, for example.DoVerbFORMAT="LINESPECIFIC"bool DoVerb(uint whichVerb);REMAP='BodyNoLead'Tells the server to execute one of its commands on the part. A verb is usually an action such as Edit or Play. One server can support several verbs, and ROLE='italic'whichVerb identifies a particular verb by its ordinal value. (The first verb, the primary or default verb, is zero.) ROLE='italic'DoVerb returns ROLE='bold'true if the server is able to complete the requested action. Executing a verb can cause the part to become activated.See alsoREMAP='BodyNoLead'TOcPart::EnumVerbsDrawFORMAT="LINESPECIFIC"bool Draw(HDC dc, const TRect& pos, const TRect& clip, TOcAspect aspect = asDefault);REMAP='BodyNoLead'Draws the part on the screen. If the part has not yet been loaded, ROLE='italic'Draw loads it first.REMAP='Body'ROLE='italic'dc is a Windows device context where the part is to be drawn. The coordinates in pos tell where in the window to place the part. The ROLE='italic'clip rectangle designates an area outside of which the server cannot draw. ROLE='italic'clip and ROLE='italic'pos can be the same. If clip describes an empty rectangle, then the server can draw anywhere. aspect controls how the data were presentedname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'as an icon, for example.See alsoREMAP='BodyNoLead'TOcAspect enum, TRect classEnumVerbsFORMAT="LINESPECIFIC"bool EnumVerbs(const TOcVerb& verb);REMAP='BodyNoLead'Call ROLE='italic'EnumVerbs to find out what verbs the server supports for a particular part. Each call to ROLE='italic'EnumVerbs places another verb in the ROLE='italic'verb parameter. When all the server's verbs have been enumerated, ROLE='italic'EnumVerbs returns ROLE='bold'false.REMAP='Body'ROLE='italic'TOleWindow calls ROLE='italic'EnumVerbs in order to place verbs for the active object on the container's Edit menu.GetNameFORMAT="LINESPECIFIC"LPCOLESTR GetName( );REMAP='BodyNoLead'Returns the string that identifies the part. Every part in a document has a different name. ObjectComponents creates the names for you automatically by incrementing an internal ID number for each new part.See alsoREMAP='BodyNoLead'TOcPart::GetNameLen, TOcPart::RenameGetNameLenFORMAT="LINESPECIFIC"int GetNameLen( );REMAP='BodyNoLead'Returns the number of characters in the name string that identifies the part. The count does not include the terminating null character.See alsoREMAP='BodyNoLead'TOcPart::GetName, TOcPart::RenameGetPosFORMAT="LINESPECIFIC"TPoint GetPos( ) const;REMAP='BodyNoLead'Returns the part's position within its container document. The position specifies the part's upper left corner in client area coordinates. The coordinates take into account any scaling set for the ROLE='italic'TOcView object that holds the part.See alsoREMAP='BodyNoLead'TOcPart::GetRect, TOcPart::GetSize, TOcPart::SetPos, TPoint classGetRectFORMAT="LINESPECIFIC"TRect GetRect( ) const;REMAP='BodyNoLead'Returns the rectangle that bounds the image of the part in the container's client area. The position of the rectangle is given in client area coordinates.See alsoREMAP='BodyNoLead'TOcPart::GetPos, TOcPart::GetSize, TOcPart::UpdateRect, TRect classGetServerNameFORMAT="LINESPECIFIC"LPCOLESTR GetServerName(TOcPartName partName);REMAP='BodyNoLead'Asks OLE for the name of the object or of the object's server, depending on the value of ROLE='italic'partName. A container might want to display this information in its title bar.REMAP='Body'In the current implementation of ObjectComponents, this function is not used. The ROLE='italic'TOcView object automatically updates the container window title.See alsoREMAP='BodyNoLead'TOcPartName enumGetSizeREMAP='BodyNoLead'TSize GetSize( ) const;REMAP='BodyNoLead'Returns the size of the part's image in the container document. The fields of the return value give the width and height of the part in client area coordinates. If there is scaling, the coordinates take that into account.See alsoREMAP='BodyNoLead'TOcPart::GetPos, TOcPart::GetRect, TOcPart::SetSize, TSize classIsActiveFORMAT="LINESPECIFIC"bool IsActive( ) const;REMAP='BodyNoLead'Returns ROLE='bold'true if the part is currently active and ROLE='bold'false if it is not. See alsoREMAP='BodyNoLead'TOcPart::SetActiveIsLinkFORMAT="LINESPECIFIC"bool IsLink( ) const;REMAP='BodyNoLead'Returns ROLE='bold'true if the part represents a linked OLE object and ROLE='bold'false if it represents an embedded OLE object. A container might use this method to distinguish visually between linked and embedded objects. For an example, look at the source code for ROLE='italic'TOleWindow::PaintParts.IsSelectedFORMAT="LINESPECIFIC"bool IsSelected( ) const;REMAP='BodyNoLead'Returns ROLE='bold'true if the part is currently selected and ROLE='bold'false if it is not. This function is frequently called in loops that process all the selected objects in a document. For example, when ROLE='italic'TOleView paints the parts in a document, it calls ROLE='italic'IsSelected for each one to determine where to paint selection boxes.REMAP='Body'Selection state information is maintained entirely in ROLE='italic'TOcPart and does not affect the OLE object itself.See alsoREMAP='BodyNoLead'TOcPart::SelectIsVisibleFORMAT="LINESPECIFIC"bool IsVisible( ) const;REMAP='BodyNoLead'Returns ROLE='bold'true if the part is currently visible and ROLE='bold'false if it is hidden.FORMAT="LINESPECIFIC"bool IsVisible(const TRect& logicalRect) const;REMAP='BodyNoLead'Returns ROLE='bold'true if the part is currently visible within the given ROLE='italic'logicalRect area of the container's window. Returns ROLE='bold'false if the part is not visible, perhaps because the user has scrolled to another part of the document.See alsoREMAP='BodyNoLead'TOcPart::SetVisibleLoadFORMAT="LINESPECIFIC"bool Load( );REMAP='BodyNoLead'Initializes a ROLE='italic'TOcPart object with information read from a storage.See alsoREMAP='BodyNoLead'TOcPart::SaveOpenFORMAT="LINESPECIFIC"bool Open(bool open);REMAP='BodyNoLead'If ROLE='italic'Open is ROLE='bold'true, the ROLE='italic'Open command invokes the server to initiate an out-of-place editing session. More specifically, it asks the server to execute its Open verb. If ROLE='italic'Open is false, the command tells the server to hide its open editing window but does not end the session. REMAP='BodyNoLead'ROLE='italic'Open returns ROLE='bold'true for success. If the server does not support editing, ROLE='italic'Open returns ROLE='bold'false.REMAP='.ScanBold'ROLE='bold'NoteREMAP='BodyNoLead'ROLE='italic'TOcPart::Close is not the opposite of ROLE='italic'TOcPart::Open. To terminate editing, pass ROLE='bold'false to ROLE='italic'Open.See alsoREMAP='BodyNoLead'TOcPart::ActivateRenameFORMAT="LINESPECIFIC"void Rename( );REMAP='BodyNoLead'Causes the part to update the internal name that ObjectComponents generates to distinguish the parts in a document. Call ROLE='italic'Rename whenever you rename the document's file. OLE uses the object's name when creating links, so the object name must accurately reflect the file name in order for links to work.See alsoREMAP='BodyNoLead'TOcPart::GetName, TOcPart::GetNameLenSaveFORMAT="LINESPECIFIC"bool Save(bool sameAsLoaded = true);REMAP='BodyNoLead'Causes the part to write itself into the document's file stream. If ROLE='italic'sameAsLoaded is ROLE='bold'true, then the part saves itself in the same storage where it was last written. Setting ROLE='italic'sameAsLoaded to ROLE='bold'false causes the part to create a new storage for itself under the document's new root storage. Usually ROLE='italic'sameAsLoaded should be ROLE='bold'true in response to a File|Save command and ROLE='bold'false in response to File|Save As.REMAP='Body'(A storage is a compartment within a compound file. ObjectComponents manages the storages for you. Usually you do not have to give explicit instructions about where to store parts.)FORMAT="LINESPECIFIC"bool Save(IStorage* storage, bool sameAsLoaded, bool remember);REMAP='BodyNoLead'The second form accepts a pointer to an ROLE='italic'IStorage interface, allowing you to control where the object is written. ROLE='italic'sameAsLoaded is the same as in Form 1. ROLE='italic'remember tells the part whether or not to remember the object in ROLE='italic'storage. When saving a part to its usual file, you typically want it to remember its own storage. When copying a part, on the other hand, you typically want the part to keep its original storage object, not the one where you are saving the copy. When saving a copy to a file for the Clipboard, for example, ROLE='italic'remember should be ROLE='bold'false.See alsoREMAP='BodyNoLead'TOcPart::LoadSelectFORMAT="LINESPECIFIC"void Select(bool select);REMAP='BodyNoLead'Tells the part whether or not it is currently selected. Make ROLE='italic'selectROLE='bold' true to select the part and ROLE='bold'false to deselect it. The user selects objects in order to perform operations on them. For example, the user selects an object before copying it to the Clipboard. When ROLE='italic'TOleView paints its parts, it queries each one and draws a selection box around any that the user has selected.See alsoREMAP='BodyNoLead'TOcPart::IsSelectedSetActiveFORMAT="LINESPECIFIC"void SetActive( );REMAP='BodyNoLead'Synchronizes an internal flag with the object's actual state, active or inactive. Usually you should not have to call this function. To make a part active, call ROLE='italic'TOcPart::ROLE='italic'Activate instead.See alsoREMAP='BodyNoLead'TOcPart::Activate, TOcPart::IsActiveSetHostFORMAT="LINESPECIFIC"bool SetHost(IBContainer far* container);REMAP='BodyNoLead'Moves the part from one container to another. ROLE='italic'container can be an object of type ROLE='italic'TOcView (or one derived from ROLE='italic'TOcView). It designates the view that receives the part. ROLE='italic'SetHost is not usually called from within the application.REMAP='Body'ROLE='italic'IBContainer is a custom interface defined within the BOCOLE support library. ROLE='italic'TOcView implements this interface.SetPosFORMAT="LINESPECIFIC"void SetPos(const TPoint& pos);REMAP='BodyNoLead'Sets the part's position within its container document. The position specifies the part's upper left corner in pixels measured from the upper left corner of the container's client window. If there is scaling, the coordinates take that into account.See alsoREMAP='BodyNoLead'TOcPart::GetPos, TOcPart::SetSize, TOcPart::UpdateRect, TPoint classSetSizeFORMAT="LINESPECIFIC"void SetSize(const TSize& size);REMAP='BodyNoLead'Sets the size of the part's image in the container document. size sets the width and height of the part in client area coordinates. The coordinates take into account any scaling set for the ROLE='italic'TOcView object that holds the part.See alsoREMAP='BodyNoLead'TOcPart::GetPos, TOcPart::SetSize, TOcPart::UpdateRect, TSize classSetVisibleFORMAT="LINESPECIFIC"void SetVisible(bool visible);REMAP='BodyNoLead'Shows or hides the part, according to the value of ROLE='italic'visible.See alsoREMAP='BodyNoLead'TOcPart::IsVisibleShowFORMAT="LINESPECIFIC"bool Show(bool show);REMAP='BodyNoLead'Makes the part visible. ROLE='italic'Show is used to ask the Link Source to show itself in the container window. If ROLE='italic'show is ROLE='bold'false, the part hides itself. The return value is ROLE='bold'true for success.See alsoREMAP='BodyNoLead'TOcPart::IsVisibleUpdateRectFORMAT="LINESPECIFIC"void UpdateRect( );REMAP='BodyNoLead'Sets the part to a new rectangle when its size or position changes. Called by ROLE='italic'SetPos and ROLE='italic'SetRect.See alsoREMAP='BodyNoLead'TOcPart::GetRect, TOcPart::SetPos, TOcPart::SetSizeProtected destructorDestructorFORMAT="LINESPECIFIC"~TOcPart( );REMAP='BodyNoLead'Destroys the ROLE='italic'TOcPart object.TOcPartCollection classMOREINFO="NONE"ocf/ocpart.hREMAP='BodyNoLead'Manages a set of ROLE='italic'TOcPart objects. Every ROLE='italic'TOcDocument creates a part collection object to maintain the set of OLE objects linked or embedded in the document. The part collection object adds parts, deletes parts, finds them, counts them, and generally helps the document keep track of what it has.REMAP='Body'Because ROLE='italic'TOcDocument contains a part collection object, usually you do not have to create or manipulate the collection directly yourself.See alsoREMAP='BodyNoLead'TOcPart class, TOcPartCollectionIter classPublic constructor and destructorConstructorFORMAT="LINESPECIFIC"TOcPartCollection( );REMAP='BodyNoLead'Creates an empty collection. Call ROLE='italic'Add to insert parts in the collection.DestructorFORMAT="LINESPECIFIC"~TOcPartCollection( );REMAP='BodyNoLead'Releases all the servers that supply the linked or embedded objects.Public member functionsAddFORMAT="LINESPECIFIC"int Add(TOcPart* const& part);REMAP='BodyNoLead'Adds a new part to the collection. Returns 1 for success and 0 for failure.See alsoREMAP='BodyNoLead'TOcPart classClearFORMAT="LINESPECIFIC"void Clear( );REMAP='BodyNoLead'Disconnects all the parts in the collection from their servers, removes them from the collection, and releases them. Tells OLE that this collection has no further need for the servers.CountFORMAT="LINESPECIFIC"virtual unsigned Count( ) const;REMAP='BodyNoLead'Returns the number of parts currently in the collection.DetachFORMAT="LINESPECIFIC"int Detach(TOcPart* const& part, int del = 0);REMAP='BodyNoLead'Removes ROLE='italic'part from the collection. If ROLE='italic'del is nonzero, then ROLE='italic'Detach also releases ROLE='italic'TOcPart object. If the part's internal reference count reaches zero as a result, the part deletes itself. Returns 1 for success and 0 for failure.See alsoREMAP='BodyNoLead'TOcPart classFindFORMAT="LINESPECIFIC"unsigned Find(TOcPart* const& part) const;REMAP='BodyNoLead'Searches for ROLE='italic'part and returns its position in the collection. If ROLE='italic'part is not in the collection, ROLE='italic'Find returns UINT_MAX.See alsoREMAP='BodyNoLead'TOcPart classIsEmptyFORMAT="LINESPECIFIC"int IsEmpty( ) const;REMAP='BodyNoLead'Returns ROLE='bold'true if the collection currently contains no objects and ROLE='bold'false if it does contain at least one object.LocateFORMAT="LINESPECIFIC"TOcPart* Locate(TPoint& point);REMAP='BodyNoLead'Returns the part object visible at a particular point on the screen. The numbers in point are interpreted as logical coordinates. If no part in the collection occupies the given point, ROLE='italic'Locate returns 0.See alsoREMAP='BodyNoLead'TPoint classSelectAllFORMAT="LINESPECIFIC"bool SelectAll(bool select = false);REMAP='BodyNoLead'Sets the selection state of all the parts in the collection. If ROLE='italic'select is ROLE='bold'true, ROLE='italic'SelectAll selects them all. If ROLE='italic'select is ROLE='bold'false, it deselects all the parts. The user can perform actions (such as dragging, deleting, and copying) that affect all the selected objects.REMAP='Body'The container conventionally marks selected objects by drawing a rectangle with grapples (handles for moving the rectangle) around each of them. The ROLE='italic'TOleWindow class does this automatically in ObjectWindows programs.TOcPartCollectionIter classMOREINFO="NONE"ocf/ocpart.hREMAP='Body'A part collection iterator enumerates the objects embedded in a compound document. REMAP='Body'A compound document can contain many linked and embedded objects. Within the container, each object is represented by an object of type ROLE='italic'TOcPart. To manage all the parts it contains, ROLE='italic'TOcDocument creates a collection object of type ROLE='italic'TOcPartCollection. The collection object takes care of adding and deleting members of the collection. In order to walk through the current list of its parts, ROLE='italic'TOcDocument also creates a part collection iterator. An iterator basically points to an element in the collection. You can increment the iterator to walk through the list of objects. The iterator signals when it reaches the end (the ++ operator returns 0).REMAP='Body'Together the collection and its iterator give the document much flexibility in managing its objects.See alsoREMAP='BodyNoLead'TOcPart class, TOcPartCollection classPublic constructorConstructorFORMAT="LINESPECIFIC"TOcPartCollectionIter(const TOcPartCollection& coll);REMAP='BodyNoLead'Constructs an iterator to enumerate the objects contained in the collection ROLE='italic'coll.See also REMAP='BodyNoLead'TOcPartCollection classPublic member functionsoperator ++FORMAT="LINESPECIFIC"TOcPart* operator++(int);REMAP='BodyNoLead'Returns the current part and then advances the iterator to point to the next part (postincrement).FORMAT="LINESPECIFIC"TOcPart* operator++( );REMAP='BodyNoLead'Advances the iterator to point to the next part in the list and then returns that part (preincrement).CurrentFORMAT="LINESPECIFIC"TOcPart* Current( ) const;REMAP='BodyNoLead'Returns the part that the iterator currently points to.operator intFORMAT="LINESPECIFIC"operator int( ) const;REMAP='BodyNoLead'Converts the iterator to an integer value in order to test whether the iterator has finished enumerating the collection. Returns zero if the iterator has reached the end of the list and a nonzero value if it has not.RestartFORMAT="LINESPECIFIC"void Restart( );REMAP='BodyNoLead'Resets the iterator to begin again with the first part in the document.FORMAT="LINESPECIFIC"void Restart(unsigned start, unsigned stop);REMAP='BodyNoLead'Resets the iterator to enumerate a partial range of objects in the document, beginning with the object at position ROLE='italic'start in the list and ending with the object at position ROLE='italic'stop.TOcPartName enumMOREINFO="NONE"ocf/ocobject.hFORMAT="LINESPECIFIC"enum TOcPartNameREMAP='BodyNoLead'When a container asks the server for the name of a part, it might want any of several possible answers. These values indicate which name the container wants to see.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='62*'COLNAME='C2' COLWIDTH='312*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'pnLongCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The string the server registered as the ROLE='italic'description for this type of object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'pnShortCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The string the server registered as the ROLE='italic'progid for this type of object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'pnAppCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The string the server registered as the ROLE='italic'description for the server application as a whole.See alsoREMAP='BodyNoLead'description registration key, progid registration key, TOcPart::GetServerNameTOcRegistrar classMOREINFO="NONE"ocf/ocapp.hBase classFORMAT="LINESPECIFIC"TRegistrarREMAP='BodyNoLead'ROLE='italic'TOcRegistrar manages all the registration tasks for an application. It processes OLE-related switches on the command line and records any necessary information about the application in the system registration database. If the application is already registered in the database, the registrar confirms that the registered ROLE='italic'path, progid, and ROLE='italic'clsid are still accurate. If not, it reregisters the application.REMAP='Body'Every ObjectComponents application needs to create a registrar object. If your application supports linking and embedding, then create a ROLE='italic'TOcRegistrar object. If your application supports automation but not linking and embedding, then you should create a ROLE='italic'TRegistrar object instead. ROLE='italic'TOcRegistrar extends ROLE='italic'TRegistrar by connecting the application to the BOCOLE support library interfaces that support linking and embedding.REMAP='Body'An application's main procedure usually performs these actions with its registrarMARK='bullet'REMAP='Bullet1'Construct the registrar, passing it a pointer to the application's factory callback.REMAP='Bullet1'Call ROLE='italic'IsOptionSet to check for options that might affect how the application chooses to start (for example, remaining invisible if invoked for embedding.REMAP='Bullet1'Call ROLE='italic'Run to enter the program's message loop.REMAP='Body'ROLE='italic'TOcRegistrar inherits both ROLE='italic'IsOptionSet and ROLE='italic'Run from its base class, ROLE='italic'TRegistrar.See alsoREMAP='BodyNoLead'clsid registration key, path registration key, progid registration key, TRegistrar classPublic constructor and destructorConstructorFORMAT="LINESPECIFIC"TOcRegistrar(TRegList& regInfo, TComponentFactory callback, string& cmdLine, HINSTANCE hInst = _hInstance);REMAP='BodyNoLead'ROLE='italic'regInfo is the application registration structure (conventionally named ROLE='italic'appReg).REMAP='Body'ROLE='italic'callback is the factory callback function that ObjectComponents invokes when it is time for the application to create an object. An ObjectWindows program can use the ROLE='italic'TOleFactory class to implement this callback.REMAP='Body'ROLE='italic'cmdLine holds the command line string that invoked the application. REMAP='Body'ROLE='italic'hInst is the application's instance.DestructorFORMAT="LINESPECIFIC"~TOcRegistrar( );REMAP='BodyNoLead'Destroys objects the registrar uses internally.See alsoREMAP='BodyNoLead'TComponentFactory typedef, TOleFactory<> classPublic member functionsBOleComponentCreateFORMAT="LINESPECIFIC"HRESULT BOleComponentCreate(IUnknown far* far* retIface, IUnknown far* outer, BCID idClass);REMAP='BodyNoLead'Calls the BOCOLE support library to create one of the helper objects that ObjectComponents uses internally. Usually you do not need to call ROLE='italic'BOleComponentCreate yourself.REMAP='Body'ROLE='italic'retIface receives an interface to the requested component.REMAP='Body'ROLE='italic'outer is the ROLE='italic'IUnknown interface of the outer object that you want the new component to become a part of.REMAP='Body'ROLE='italic'idClass identifies the particular component you want to create. The possible values are defined as ROLE='italic'cidBolexxxx constants in ocf/boledefs.h.REMAP='Body'The return value is an OLE result, either HR_OK for success or HR_FAIL for failure.See alsoREMAP='BodyNoLead'HR_xxxx result macrosCreateOcAppFORMAT="LINESPECIFIC"void CreateOcApp(uint32 options, TOcApp*& ret);REMAP='BodyNoLead'Creates the connector object that attaches an application to OLE. ROLE='italic'options is a set of bit flags indicating the application's running mode. The possible option flags are defined in ROLE='italic'TOcAppMode. ROLE='italic'ret is where ROLE='italic'CreateOcApp places a pointer to the newly created ROLE='italic'TOcApp connector object. REMAP='Body'ROLE='italic'CreateOcApp is called during ROLE='italic'TOcModule::OcInit. You shouldn't have to call it directly yourself.REMAP='Body'The purpose of ROLE='italic'CreateOcApp is to shield you from the details of the ROLE='italic'TOcApp connector object. ROLE='italic'TOcApp is closely tied to the implementation of ObjectComponents, and the details of initializing an OLE session are subject to change.See alsoREMAP='BodyNoLead'TOcApp class, TOcAppMode enum, TOcModule::OcInitGetAppDescriptorFORMAT="LINESPECIFIC"TAppDescriptor& GetAppDescriptor( );REMAP='BodyNoLead'Returns the application descriptor. ObjectComponents uses an application descriptor internally to hold information about a module. (A DLL gets an application descriptor of its own.) ROLE='italic'TAppDescriptor is undocumented because it is used only internally and is subject to change. The registrar classes, ROLE='italic'TOcRegistrar and ROLE='italic'TRegistrar, are the supported interfaces to the application descriptor. The registrar constructs the descriptor and most of its member functions call descriptor functions to perform the work.REMAP='Body'Usually you will not need to call this method yourself.Protected member functionsCanUnloadFORMAT="LINESPECIFIC"bool CanUnload( );REMAP='BodyNoLead'Returns ROLE='bold'true if the application is not currently serving any OLE clients and ROLE='bold'false otherwise.GetFactoryFORMAT="LINESPECIFIC"void far* GetFactory(const GUID& clsid, const GUID far& iid);REMAP='BodyNoLead'Returns a pointer to the factory interface for creating the type of object indicated by ROLE='italic'clsid. ROLE='italic'iid names the particular interface you want to receive. If the registrar is unable to find an ROLE='italic'iid interface for ROLE='italic'clsid objects, it returns zero.REMAP='Body'ObjectComponents calls a DLL's ROLE='italic'GetFactory member every time a new client loads the DLL. Usually you do not need to call ROLE='italic'GetFactory yourself.LoadBOleFORMAT="LINESPECIFIC"void LoadBOle( );REMAP='BodyNoLead'Loads and initializes the ObjectComponents support library (BOCOLE.DLL). ROLE='italic'LoadBOle throws a ROLE='italic'TXObjComp exception if it cannot find BOCOLE.DLL, or if the installed version is not compatible with the application's version of the library.TOcRemView classMOREINFO="NONE"ocf/ocremvie.hBase classFORMAT="LINESPECIFIC"TOcViewREMAP='BodyNoLead'A linking and embedding server creates a remote view object in order to draw its OLE object in the container's window. ROLE='italic'TOcRemView only draws the object. To load and save the data in the object, the server also needs to create a ROLE='italic'TOcDocument object. The document and the remote view together represent an OLE object as the server sees it.REMAP='Body'The container creates a ROLE='italic'TOcPart object for every OLE object it receives. The container's part object communicates with the server's document and view objects through OLE. The part tells the server's view when and where to draw the object. It tells the server's document when and where to load or save the object.REMAP='Body'Do not confuse the two kinds of views, ROLE='italic'TOcView with ROLE='italic'TOcRemView. A container creates a single view (ROLE='italic'TOcView) for its compound document. This view can contain parts received from other applications. Each part draws itself by invoking a remote view from its server. Containers create ROLE='italic'TOcView objects and servers create ROLE='italic'TOcRemView objects. (A ROLE='italic'TOcRemView object can become a container also, however, if the user embeds objects within objects.)REMAP='Body'In spite of the similar names, ROLE='italic'TOcDocument, ROLE='italic'TOcView, and ROLE='italic'TOcRemView are not part of the ObjectWindows Doc/View model. The nature of OLE makes it beneficial to separate data from its graphical representation, and the terms ROLE='italic'document and ROLE='italic'view express that separation even outside of ObjectWindows.REMAP='Body'ROLE='italic'TOcRemView is a COM object and implements the ROLE='italic'IUnknown interface.See alsoREMAP='BodyNoLead'TOcDocument class, TOcView classPublic constructorConstructorFORMAT="LINESPECIFIC"TOcRemView(TOcDocument& doc, TRegList* regList = 0, IUnknown* outer = 0);REMAP='BodyNoLead'A remote view is always associated with a ROLE='italic'TOcDocument object. The document loads and saves data in an OLE object and the remote view draws the data in the container's window. In both forms of the constructor, ROLE='italic'doc is the document to associate with the view. That means the document must always be created first.REMAP='Body'Also, in both forms ROLE='italic'regList is a document registration table. A server that creates different kinds of objects needs several document registration tables, one for each type. The ROLE='italic'regList parameter determines the type of object that the view represents. ROLE='italic'outer points to the ROLE='italic'IUnknown interface of a master object under which the new object is asked to aggregate itself.REMAP='Body'Registration tables are built with the BEGIN_REGISTRATION and END_REGISTRATION macros.REMAP='Body'The destructor for ROLE='italic'TOcRemView is private. ObjectComponents releases the object when it is no longer needed.See alsoREMAP='BodyNoLead'BEGIN_REGISTRATION macro, TAutoObject class, TOcDocument classPublic member functionsCopyFORMAT="LINESPECIFIC"virtual bool Copy( );REMAP='BodyNoLead'Copies the object to the Clipboard. Returns ROLE='bold'true for success.EvCloseFORMAT="LINESPECIFIC"virtual void EvClose( );REMAP='BodyNoLead'The application's remote view window calls this function when it closes. ROLE='italic'EvClose disconnects the view from any parts displayed in it.GetContainerTitleFORMAT="LINESPECIFIC"virtual LPCOLESTR GetContainerTitle( );REMAP='BodyNoLead'Asks the container for its name. The server usually includes this string in its own title bar during out-of-place editing (when the user edits a linked or embedded object in the server's own window, not in the container's).GetInitialRectFORMAT="LINESPECIFIC"void GetInitialRect( );REMAP='BodyNoLead'Requests the initial size and position of the area where the server can draw its object. The function initializes ROLE='italic'Extent, a protected data member that ROLE='italic'TOcRemView inherits from ROLE='italic'TOcView.See alsoREMAP='BodyNoLead'TOcView::ExtentInvalidateFORMAT="LINESPECIFIC"void Invalidate(TOcInvalidate invalid);REMAP='BodyNoLead'Notifies the container's active view that the server has changed either the contents or the appearance of the object. The ROLE='italic'invalid parameter indicates what needs changing. It can be ROLE='italic'invData, ROLE='italic'invView, or both combined with the OR operator (|). If the container is an ObjectComponents application, its active view generates an OC_VIEWPARTINVALID message.See alsoREMAP='BodyNoLead'OC_VIEWxxxx messages, TOcInvalidate enumIsOpenEditingFORMAT="LINESPECIFIC"bool IsOpenEditing( ) const;REMAP='BodyNoLead'Returns ROLE='bold'true if the view is currently engaged in an open editing session. Open editing occurs when the user chooses an object's Open verb. Open editing takes place in the server's own frame window, unlike in-place editing, which takes place in the container's window. Remote view objects are used in both kinds of editing.LoadFORMAT="LINESPECIFIC"bool Load(IStorage* storageI);REMAP='BodyNoLead'Reads from ROLE='italic'storageI information specific to the remote view. This information is part of the data the server stores in the container's file when asked to save an object. ROLE='italic'Load returns ROLE='bold'true for success. REMAP='Body'ROLE='italic'IStorage is a pointer to an OLE interface. ROLE='italic'storageI can be a pointer to a ROLE='italic'TOcStorage object, the ObjectComponents implementation of that interface.See alsoREMAP='BodyNoLead'TOcRemView::SaveRenameFORMAT="LINESPECIFIC"virtual void Rename( );REMAP='BodyNoLead'Updates the name string ObjectComponents generates to distinguish the parts in a compound document. ROLE='italic'TOcRemView calls ROLE='italic'Rename during construction to find out what the container wants to call the object. It is usually not necessary for you to call ROLE='italic'Rename directly.SaveFORMAT="LINESPECIFIC"bool Save(IStorage* storageI);REMAP='BodyNoLead'Writes to ROLE='italic'storageI information specific to the remote view. This information becomes part of the object data stored in the container's compound document file. Returns ROLE='bold'true for success. REMAP='Body'ROLE='italic'IStorage is a pointer to an OLE interface. ROLE='italic'storageI can be a pointer to a ROLE='italic'TOcStorage object, the ObjectComponents implementation of that interface.See alsoREMAP='BodyNoLead'TOcRemView::LoadTOcSaveLoad structMOREINFO="NONE"ocf/ocview.hREMAP='BodyNoLead'Holds information that a view uses when loading and saving its OLE object parts. The OC_VIEWLOADPART and OC_VIEWSAVEPART messages carry a pointer to this structure in their ROLE='italic'lParams.REMAP='Body'The ROLE='italic'TOleView processes the load and save messages for you. If you are programming with the ObjectWindows Doc/View model, then you do not need to use the ROLE='italic'TOcSaveLoad structure directly. For examples that show how to process the load and save messages, look at the source code for the ROLE='italic'EvViewSavePart and ROLE='italic'EvViewLoadPart methods in ROLE='italic'TOleView.See alsoREMAP='BodyNoLead'OC_VIEWxxxx messages, TOleView::EvViewSavePart, TOleView::EvViewLoadPartPublic data membersReleaseFORMAT="LINESPECIFIC"bool Release;REMAP='BodyNoLead'Is ROLE='bold'true if the view should keep the storage object for future file operations and ROLE='bold'false if it should forget the storage object after using it once.StorageIFORMAT="LINESPECIFIC"IStorage far* StorageI;REMAP='BodyNoLead'Points to the storage object assigned to hold the part. ObjectComponents implements the standard OLE ROLE='italic'IStorage interface in ROLE='italic'TOcStorage, so ROLE='italic'TOcStorage can be used to construct an ROLE='italic'IStorage.TOcScaleFactor classMOREINFO="NONE"ocf/ocview.hREMAP='BodyNoLead'The ROLE='italic'TOcScaleFactor class carries information from a container to a server about how the container wants to scale its document. For example, if the container has a Zoom command and the user chooses to magnify the document to 120%, the server should match the scaling factor when it draws objects embedded in the container.REMAP='Body'ObjectComponents passes a reference to an ROLE='italic'TOcScaleFactor object in the ROLE='italic'lParam of OC_VIEWGETSCALE and OC_VIEWSETSCALE messages. When a container receives OC_VIEWGETSCALE, it fills in the object with scaling information. When a server receives the OC_VIEWSETSCALE information, it reads the scaling values and can use them in its paint procedure.REMAP='Body'ROLE='italic'TOcScaleFactor stores scaling information in its two ROLE='italic'TSize members, ROLE='italic'SiteSize and ROLE='italic'PartSize. The names refer to the area where the container wants to draw an object (the site) and the object itself (the part.) The values in the members need not be the actual size of the site or the part, however. What matters is the ratio of the two sizes. If the ROLE='italic'SiteSize values are twice as large as the ROLE='italic'PartSize values, then the server is being asked to draw the object at twice its default size.REMAP='Body'If you are programming with ObjectWindows, then the ROLE='italic'TOleWindow class takes care of scaling for you. For examples showing how to handle scaling without the benefit of ObjectWindows, look at the source code for the following ROLE='italic'TOleWindow methods: ROLE='italic'EvViewGetScale, EvViewSetScale, and ROLE='italic'SetupDC.See alsoREMAP='BodyNoLead'OC_VIEWxxxx messages, TOleWindow::EvViewGetScale, TOleWindow::EvViewSetScale, TOleWindow::SetupDC, TSize classPublic constructorsConstructorsFORMAT="LINESPECIFIC"TOcScaleFactor( );REMAP='BodyNoLead'Initializes the site and part extents to 1 so the scaling factor is 100%.FORMAT="LINESPECIFIC"TOcScaleFactor(const RECT& siteRect, const TSize& partSize);REMAP='BodyNoLead'Bases the initial scaling factor on the values in the given rectangle structure and size object. Calculates the extents of the rectangle ROLE='italic'siteRect and sets them in ROLE='italic'SiteSize. Copies ROLE='italic'partSize to ROLE='italic'PartSize.FORMAT="LINESPECIFIC"TOcScaleFactor(const BOleScaleFactor far& scaleFactor);REMAP='BodyNoLead'Bases the initial scaling factor on the values in ROLE='italic'scaleFactor. ROLE='italic'BOleScaleFactor is a structure that the BOCOLE support library uses internally to carry scaling information. You should not have to use the structure directly.REMAP='Body'Usually you do not have to construct a ROLE='italic'TOcScaleFactor object directly. ObjectComponents creates it for you and passes it in the OC_VIEWGETSCALE or OC_VIEWSETSCALE message.DestructorFORMAT="LINESPECIFIC"~TOcScaleFactor( );See alsoREMAP='BodyNoLead'TOcScaleFactor::PartSize, TOcScaleFactor::SiteSize, TSize classPublic data membersPartSizeFORMAT="LINESPECIFIC"TSize PartSize;REMAP='BodyNoLead'Holds two values describing the default horizontal and vertical extent of a server's object. The values in ROLE='italic'PartSize do not need to be actual measurements. What matters is the ratio of the values here to the values in ROLE='italic'SiteSize. That ratio determines how an image should be scaled.See alsoREMAP='BodyNoLead'TOcScaleFactor::SiteSize, TSize classSiteSizeFORMAT="LINESPECIFIC"TSize SiteSize;REMAP='BodyNoLead'Holds two values describing the horizontal and vertical extent of the area a container has allotted for displaying a linked or embedded object. The values in ROLE='italic'SiteSize do not need to be actual measurements. What matters is the ratio of the values here to the values in ROLE='italic'PartSize. That ratio determines how an image should be scaled.See alsoREMAP='BodyNoLead'TOcScaleFactor::PartSize, TSize classPublic member functionsoperator =FORMAT="LINESPECIFIC"TOcScaleFactor& operator =(const BOleScaleFactor far& scaleFactor);REMAP='BodyNoLead'Copies the values in a ROLE='italic'BOleScaleFactor structure. The BOCOLE support library uses this structure internally to carry scaling information. FORMAT="LINESPECIFIC"TOcScaleFactor& operator =(const TOcScaleFactor& scaleFactor);REMAP='BodyNoLead'Copies one ROLE='italic'TOcScaleFactor into another.REMAP='Body'Both forms of the assignment operator copy the values from one scaling object into another. See alsoREMAP='BodyNoLead'OC_VIEWxxxx messagesGetScaleFORMAT="LINESPECIFIC"uint16 GetScale( );REMAP='BodyNoLead'Retrieves a percentage value expressing the ratio of the part's size to the site's size. For example, if the part size is 20 x 20 and the site size is 40 x 40, then ROLE='italic'GetScale returns 200.See alsoREMAP='BodyNoLead'TOcScaleFactor::SetScaleGetScaleFactorFORMAT="LINESPECIFIC"void GetScaleFactor(BOleScaleFactor far& scaleFactor) const;REMAP='BodyNoLead'Fills in ROLE='italic'scaleFactor with values from the ROLE='italic'TOcScaleFactor object. ROLE='italic'BOleScaleFactor is a structure that the BOCOLE library uses to hold the same scaling information. Usually you do not have to call this function directly.IsZoomedFORMAT="LINESPECIFIC"bool IsZoomed( );REMAP='BodyNoLead'Returns ROLE='bold'true if the sizes stored for the part and the site do not match.SetScaleFORMAT="LINESPECIFIC"void SetScale(uint16 percent);REMAP='BodyNoLead'Sets the ratio of the part's size to the site's size. More specifically, ROLE='italic'SetScale sets the size of the part to 100 and the size of the site to ROLE='italic'percent. See alsoREMAP='BodyNoLead'TOcScaleFactor::GetScaleTOcScrollDir enumMOREINFO="NONE"ocf/ocobject.hFORMAT="LINESPECIFIC"enum TOcScrollDirREMAP='BodyNoLead'The OC_VIEWSCROLL event tells the container when the user performs a drag movement that should scroll the window. The ROLE='italic'lParam of the WM_OCEVENT message carries one of these values to indicate which direction the window has been asked to scroll.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='61*'COLNAME='C2' COLWIDTH='170*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'sdScrollUpCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Scroll toward the top of the document.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'sdScrollDownCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Scroll toward the bottom of the document.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'sdScrollLeftCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Scroll toward the left edge of the document.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'sdScrollRightCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Scroll toward the right edge of the document.See alsoREMAP='BodyNoLead'EvOcViewScroll event handler, OC_VIEWxxxx messages, TOleView::EvOcViewScroll, TOleWindow::EvOcViewScroll, WM_OCEVENT messageTOcToolbarInfo structMOREINFO="NONE"ocf/ocview.hREMAP='BodyNoLead'The OC_VIEWSHOWTOOLS message carries a pointer to this structure in its ROLE='italic'lParam. The message asks a server for handles to its tool bars so the container can display them in its own window. This happens during in-place editing when the user opens an object in the container in order to modify it.REMAP='Body'The structure has four fields, allowing the server to return handles for up to four tool bars. Each tool bar occupies a different edge of the container's client area. REMAP='Body'For examples, look at the source code for ROLE='italic'TOleWindow::ROLE='italic'EvOcViewShowTools and ROLE='italic'TOleView::ROLE='italic'EvOcViewShowTools. The default implementations of these methods allow a single tool bar at the top of the client area. To give the container more tool bars, handle the OC_VIEWSHOWTOOLS message directly yourself.See alsoREMAP='BodyNoLead'TOleView::EvOcViewShowTools, TOleWindow::EvOcViewShowToolsPublic data membersHBottomTBFORMAT="LINESPECIFIC"HWND HBottomTB;REMAP='BodyNoLead'Holds a handle to the tool bar that the server wants to place at the bottom of the container's client area.HFrameFORMAT="LINESPECIFIC"HWND HFrame;REMAP='BodyNoLead'If ROLE='italic'Show is ROLE='bold'true and the server is being asked to display its tool bar, then ROLE='italic'HFrame holds a handle to the frame window where the tool bar is to appear. If ROLE='italic'Show is ROLE='bold'false, then ROLE='italic'HFrame holds a handle to the server's own frame window.See alsoREMAP='BodyNoLead'TOcToolbarInfo::ShowHLeftTBFORMAT="LINESPECIFIC"HWND HLeftTB;REMAP='BodyNoLead'Holds a handle to the tool bar that the server wants to place at the left edge of the container's client area.HRightTBFORMAT="LINESPECIFIC"HWND HRightTB;REMAP='BodyNoLead'Holds a handle to the tool bar that the server wants to place at the right edge of the container's client area.HTopTBFORMAT="LINESPECIFIC"HWND HTopTB;REMAP='BodyNoLead'Holds a handle to the tool bar that the server wants to place at the top of the container's client area.ShowFORMAT="LINESPECIFIC"bool Show;REMAP='BodyNoLead'Is ROLE='bold'true to ask that the server display its tool bar or ROLE='bold'false to request that the server hide the tool bar.TOcVerb classMOREINFO="NONE"ocf/ocpart.hREMAP='BodyNoLead'Holds information about a single verb that a server supports for its objects.REMAP='Body'A verb is an action the server can perform with one of its objects. A server that creates text objects, for example, might support an Edit verb. A server for sound objects might support Edit, Play, and Rewind.REMAP='Body'When the user selects an object in a compound document, the container asks the ROLE='italic'TOcPart object for a list of the verbs it can execute. The container displays the verbs on its Edit menu. The command for enumerating verbs is ROLE='italic'TOcPart::EnumVerbs.REMAP='Body'Whenever the user selects a part, the container modifies its Edit menu by adding an item for manipulating the object. If the object is part of a Quattro Pro spreadsheet, for example, the container adds the command Notebook Object to its Edit menu. If the user selects this command, then the container shows a pop-up menu with the notebook's verbs, Edit and Open.REMAP='Body'For an example of how to implement these items on the edit menu, look at the source code for ROLE='italic'TOleWindow::ROLE='italic'CeEditObject in OLEWINDO.CPP.See alsoREMAP='BodyNoLead'TOcPart::EnumVerbsPublic constructorConstructorFORMAT="LINESPECIFIC"TOcVerb( );REMAP='BodyNoLead'Creates an empty verb object.Public data membersCanDirtyFORMAT="LINESPECIFIC"bool CanDirty;REMAP='BodyNoLead'Is ROLE='bold'true if executing the verb can modify the object so that it might need to be saved or redrawn afterwards. For example, the ROLE='italic'CanDirty field of an Edit verb is always ROLE='bold'true, and the ROLE='italic'CanDirty field of a Play verb is usually ROLE='bold'false.TypeNameFORMAT="LINESPECIFIC"LPCOLESTR TypeName;REMAP='BodyNoLead'Points to the name of the type of object to which this verb belongs. The container usually shows this name in the Object item of its Edit menu. For example, if the user has selected an object inserted from the server in Step 15 of the ObjectWindows tutorial, ROLE='italic'TypeName is "Drawing Pad," and the container's Edit menu should have an item saying "Drawing Pad." Choosing this item leads to a pop-up menu with all the picture's verbs on it.REMAP='Body'The ROLE='italic'TypeName string comes from the value the server registered for the ROLE='italic'menuname key in its document registration table.See alsoREMAP='BodyNoLead'TOcPart::EnumVerbs, menuname registration keyVerbIndexFORMAT="LINESPECIFIC"uint VerbIndex;REMAP='BodyNoLead'Holds the index number that identifies this verb in the server's list of possible verbs. The first verb is always 0 and is considered the default verb. If the user double-clicks the object, the container should ask the server to execute its default verb.VerbNameFORMAT="LINESPECIFIC"LPCOLESTR VerbName;REMAP='BodyNoLead'Points to the name of the verb. This is the string that the container adds to its Edit menu.TOcView classMOREINFO="NONE"ocf/ocview.hBase classFORMAT="LINESPECIFIC"TUnknownREMAP='BodyNoLead'ROLE='italic'TOcView manages the presentation of a container's compound document containing linked and embedded objects. Each object in the document is represented by an object of type ROLE='italic'TOcPart. The document view knows which parts are selected or activated. It scrolls the window and remembers which parts are visible. It transfers parts to and from the document through the Clipboard or through drag-and-drop operations.REMAP='Body'Every ROLE='italic'TOcView has a corresponding ROLE='italic'TOcDocument. The ObjectComponents document object implements the OLE interfaces that manipulate the data in a compound document. ROLE='italic'TOcView implements the interfaces the manipulate the appearance of a compound document.REMAP='Body'ROLE='italic'TOcView is a COM object and implements the ROLE='italic'IUnknown interface.See alsoREMAP='BodyNoLead'TOcApp class, TOcDocument class, TOcPart class, TUnknown classPublic constructorConstructorFORMAT="LINESPECIFIC"TOcView(TOcDocument& doc, TRegList* regList = 0, IUnknown* outer=0);REMAP='BodyNoLead'ROLE='italic'doc refers to the ROLE='italic'TOcDocument object that corresponds to the view. ROLE='italic'TOcDocument manages the data in a compound document, and ROLE='italic'TOcView manages the appearance of the document on the screen.REMAP='Body'ROLE='italic'regList is the registration structure for a particular document. Use the BEGIN_REGISTRATION and END_REGISTRATION macros to create an object of type ROLE='italic'TRegList.REMAP='Body'ROLE='italic'outer is the root interface of an outer object inside which the new view is asked to aggregate itself.See alsoREMAP='BodyNoLead'BEGIN_REGISTRATION macro, TAutoObject class, TOcDocument classPublic member functionsActivatePartFORMAT="LINESPECIFIC"bool ActivatePart(TOcPart* part);REMAP='BodyNoLead'Attempts to activate the given part (by calling ROLE='italic'TOcPart::Activate). Returns ROLE='bold'true if the designated part becomes active and ROLE='bold'false otherwise. If any other part was already active, it is deactivated first.See alsoREMAP='BodyNoLead'TOcPart::Activate, TOcView::ActivePart, TOcView::GetActivePartBrowseClipboardFORMAT="LINESPECIFIC"bool BrowseClipboard(TOcInitInfo& initInfo);REMAP='BodyNoLead'Displays the Paste Special dialog box showing the available formats for the data currently on the Clipboard, allowing the user to choose what format to paste. Returns ROLE='bold'true if the user pastes data and ROLE='bold'false if the user cancels or the dialog box fails.REMAP='Body'Create ROLE='italic'initInfo first by passing the view to the ROLE='italic'TOcInitInfo constructor. ROLE='italic'BrowseClipboard fills ROLE='italic'initInfo with information about the object. Then use ROLE='italic'initInfo to create a new ROLE='italic'TOcPart.REMAP='Body'This function calls ROLE='italic'TOcApp::BrowseClipboard.See alsoREMAP='BodyNoLead'TOcApp::BrowseClipboard, TOcApp::BrowseLinks, TOcInitInfo class, TOcPart classBrowseLinksFORMAT="LINESPECIFIC"bool BrowseLinks( );REMAP='BodyNoLead'Displays the Links dialog box showing all the linked objects in the compound document and what they are linked to. The user can modify the displayed links, perhaps to reconnect with a file that was moved. Returns ROLE='italic'false if an error prevents the dialog box from being displayed or if the user cancels the dialog box.See alsoREMAP='BodyNoLead'TOcApp::BrowseClipboardCopyFORMAT="LINESPECIFIC"bool Copy(TOcPart* part);REMAP='BodyNoLead'Creates a copy of a linked or embedded object and places it on the Clipboard. Returns ROLE='italic'true if the operation succeeds. Call ROLE='italic'Copy in response to Cut or Copy commands from the Edit menu.EvActivateFORMAT="LINESPECIFIC"void EvActivate(bool activate);REMAP='BodyNoLead'A container calls this function if any of its windows gains focus while any of its linked or embedded objects is being edited in place. ROLE='italic'EvActivate restores focus to the in-place activated view. If the user clicks in the client window of an MDI frame, for example, the client window needs to shift the focus back to the view, which in turn restores focus to the activated part. A part engaged in in-place editing should always retain the focus.REMAP='Body'ROLE='italic'activate should be ROLE='bold'true if the window is gaining focus and ROLE='bold'false if it is losing it.See also REMAP='BodyNoLead'TOcView::EvClose, TOcView::EvResize, TOcView::EvSetFocusEvCloseFORMAT="LINESPECIFIC"virtual void EvClose( );REMAP='BodyNoLead'A container calls this function to tell ObjectComponents that the window associated with the view has closed. See alsoREMAP='BodyNoLead'TOcView::EvActivate, TOcView::EvResize, TOcView::EvSetFocusEvResizeFORMAT="LINESPECIFIC"void EvResize( );REMAP='BodyNoLead'A container calls this function to tell OLE when the window associated with the view changes size. OLE might need this information to let a server modify its tool bar during in-place editing.See alsoREMAP='BodyNoLead'TOcView::EvActivate, TOcView::EvClose, TOcView::EvSetFocusEvSetFocusFORMAT="LINESPECIFIC"bool EvSetFocus(bool set);REMAP='BodyNoLead'A container calls this function to tell OLE that the window associated with the view has either received or lost the input focus. Make ROLE='italic'setROLE='bold' true if the window gained the focus or ROLE='bold'false if it lost the focus.REMAP='Body'The function returns ROLE='bold'false if the view is unable to receive the focus. That happens if an object in the view is engaged in in-place editing. Such objects retain the focus until the editing session ends.See alsoREMAP='BodyNoLead'TOcView::EvActivate, TOcView::EvResize, TOcView::EvSetFocusGetActivePartFORMAT="LINESPECIFIC"TOcPart* GetActivePart( );REMAP='BodyNoLead'Returns the currently active part. If the view does not contain an active part, the return value is 0.See alsoREMAP='BodyNoLead'TOcView::ActivePart, TOcView::ActivatePartGetOcDocumentFORMAT="LINESPECIFIC"TOcDocument& GetOcDocument( );REMAP='BodyNoLead'Returns the ObjectComponents document associated with the view. Views and documents work in pairs. ROLE='italic'TOcView manages the appearance of a compound document and ROLE='italic'TOcDocument manages the data in it.See alsoREMAP='BodyNoLead'TOcDocument class, TOcView::OcDocumentGetOriginFORMAT="LINESPECIFIC"TPoint GetOrigin( ) const;REMAP='BodyNoLead'Returns the physical coordinates currently mapped to the upper left corner of the container window's client area. ObjectWindows programmers can ignore this method because ROLE='italic'TOleWindow performs scrolling for you.See alsoREMAP='BodyNoLead'TOcView::Origin, TOcView::ScrollWindow, TPoint classGetWindowRectFORMAT="LINESPECIFIC"TRect GetWindowRect( ) const;REMAP='BodyNoLead'Returns the client rectangle for the view window.See alsoREMAP='BodyNoLead'TOcView::GetOrigin, TRect classInvalidatePartFORMAT="LINESPECIFIC"void InvalidatePart(const TOcPart* part);REMAP='BodyNoLead'Sends an OC_VIEWPARTINVALID message to the container window. If the container window responds with ROLE='bold'false to indicate it has not processed the message, ROLE='italic'InvalidatePart tells the system that the area inside the part's bounding rectangle is invalid and needs repainting.PasteFORMAT="LINESPECIFIC"bool Paste(bool linking = false);REMAP='BodyNoLead'Inserts an object from the Clipboard into the compound document. If ROLE='italic'linking is ROLE='bold'true, Paste will try to create a link rather than embedding the new object. Make ROLE='italic'linkingROLE='bold' true when processing the Paste Link command.RegisterClipFormatsFORMAT="LINESPECIFIC"bool RegisterClipFormats(TRegList& regList);REMAP='BodyNoLead'Tells OLE what Clipboard formats the document understands. The list of formats comes from ROLE='italic'regList, the document's registration structure. Use the BEGIN_REGISTRATION and END_REGISTRATION macros to create ROLE='italic'regList. Also, the REGFORMAT macro places Clipboard format entries in the structure. To register custom Clipboard formats, be sure to callROLE='italic' TOcApp::AddUserFormatName as well.REMAP='Body'ROLE='italic'RegisterClipFormats is called automatically when the view is constructed.See also REMAP='BodyNoLead'BEGIN_REGISTRATION macro, REGFORMAT macro, TOcApp::AddUserFormatName, TOcView::FormatListReleaseObjectFORMAT="LINESPECIFIC"virtual void ReleaseObject( );REMAP='BodyNoLead'Call this instead of delete to destroy a ROLE='italic'TOcView object when you are through with it. ROLE='italic'ReleaseObject decrements the view's internal reference count and dissociates the view from its window. See alsoREMAP='BodyNoLead'TOcView::SetupWindowRenameFORMAT="LINESPECIFIC"virtual void Rename( );REMAP='BodyNoLead'Tells OLE when the name assigned to a compound document has changed. OLE updates its internal records. Also, the associated ROLE='italic'TOcDocument object passes the new name to any linked or embedded objects it contains.ScrollWindowFORMAT="LINESPECIFIC"void ScrollWindow(int dx, int dy);REMAP='BodyNoLead'Brings new areas of a document into view by adjusting the origin of the container window. ROLE='italic'dx and ROLE='italic'dy are horizontal and vertical offsets added to the origin. This function is usually called in response to messages from the window scroll bars or from the arrow keys.See alsoREMAP='BodyNoLead'TOcView::GetOrigin, TOcView::OriginSetLinkFORMAT="LINESPECIFIC"void SetLink(bool pasteLink);REMAP='BodyNoLead'Sets an internal flag that determines whether Paste operations create linked or embedded objects. More specifically, ROLE='italic'SetLink alters the priority of the document's registered Clipboard formats. You set the original priorities with the first parameter of the REGFORMAT macro. If ROLE='italic'pasteLink is ROLE='bold'true, then ROLE='italic'SetLink moves the Link Source format to the top of the list. If ROLE='italic'pasteLink is ROLE='bold'false, it restores the Link Source format to its original position behind Embed Source.REMAP='Body'It is usually not necessary to call ROLE='italic'SetLink directly because the ROLE='italic'Paste method calls it for you.See alsoREMAP='BodyNoLead'REGFORMAT macro, TOcView::PasteSetupWindowFORMAT="LINESPECIFIC"void SetupWindow(HWND hWin);REMAP='BodyNoLead'Tells the view what window is associated with it. The view sometimes sends notification messages to its window. Usually this function should be called from the ROLE='italic'SetupWindow member of the container's window class. ROLE='italic'TOleWindow performs this task automatically.See alsoREMAP='BodyNoLead'OC_VIEWxxxx messages, TOleWindow::SetupWindow, TOcView::WinProtected destructorProtected DestructorFORMAT="LINESPECIFIC"~TOcView( );REMAP='BodyNoLead'Destroys the view object.Protected member functionsForwardEventFORMAT="LINESPECIFIC"uint32 ForwardEvent(int eventId, const void far* param);FORMAT="LINESPECIFIC"uint32 ForwardEvent(int eventId, uint32 param = 0);REMAP='Body'Both forms send a WM_OCEVENT message to the container's window. The ROLE='italic'eventId parameter becomes the message's ROLE='italic'wParam and should be one of the OC_APPxxxx or OC_VIEWxxxx constants. The second parameter becomes the message's ROLE='italic'lParam and may be either a pointer (Form 1) or an integer (Form 2). Which form you use depends on the information a particular event needs to send in its ROLE='italic'lParam.See alsoREMAP='BodyNoLead'OC_APPxxxx messages, OC_VIEWxxxx messages, TOcView::Win, WM_OCEVENT messageInitFORMAT="LINESPECIFIC"void Init(TRegList* regList);REMAP='BodyNoLead'Initializes a newly created view object. ROLE='italic'Init is called by both of the ROLE='italic'TOcView constructors. Usually you don't need to call it directly yourself. ROLE='italic'TRegList is the data type that holds all the registry keys and associated values for a single registration table. ROLE='italic'regList must be a document registration table (the structure created by the registration macros and conventionally named ROLE='italic'DocReg).REMAP='Body'ROLE='italic'Init makes this view the document's active view, connects with the BOCOLE support library, and registers supported Clipboard formats.ShutdownFORMAT="LINESPECIFIC"void Shutdown( );REMAP='BodyNoLead'Called by the destructor of derived classes to release helper objects that the view holds internally.See alsoREMAP='BodyNoLead'TOcView public constructors and destructorProtected data membersActivePartFORMAT="LINESPECIFIC"TOcPart* GetActivePart( );REMAP='BodyNoLead'Returns the currently active part. If the view does not contain an active part, the ROLE='bold'return value is 0.See alsoREMAP='BodyNoLead'TOcView::ActivePart, TOcView::ActivatePartExtentFORMAT="LINESPECIFIC"TSize Extent;REMAP='BodyNoLead'Holds the current width and height of the container window's client area. Both are measured in device units.See alsoREMAP='BodyNoLead'TOcView::GetWindowRectFormatListFORMAT="LINESPECIFIC"TOcFormatList FormatList;REMAP='BodyNoLead'Holds information about all the Clipboard formats the compound document supports. The list is generated from information the application registers for the types of documents it supports.See alsoREMAP='BodyNoLead'TOcFormatList class, TOcView::RegisterClipFormatsLinkFORMAT="LINESPECIFIC"int Link;REMAP='Body'Used internally by the ROLE='italic'Paste method to adjust the priority of link source format.OcAppFORMAT="LINESPECIFIC"TOcApp& OcApp;REMAP='BodyNoLead'A view stores the application that owns it in this protected data member.OcDocumentFORMAT="LINESPECIFIC"TOcDocument& OcDocument;REMAP='BodyNoLead'A view stores the document object that owns the view in this protected data member. The view object manages the appearance of a compound document, and the document object manages the data.See AlsoREMAP='BodyNoLead'TOcView::GetOcDocumentOriginFORMAT="LINESPECIFIC"TPoint Origin;REMAP='BodyNoLead'Holds the coordinates of the point currently mapped to the upper left corner of the container window's client area.See AlsoREMAP='BodyNoLead'TOcView::GetOriginWinFORMAT="LINESPECIFIC"HWND Win;REMAP='BodyNoLead'Holds a handle to the window where the view draws itself. The ROLE='italic'ForwardEvent method sends messages to this window.See Also REMAP='BodyNoLead'TOcView::ForwardEvent, TOcView::SetupWindowWinTitleFORMAT="LINESPECIFIC"string WinTitle;REMAP='BodyNoLead'Holds the original caption string of the container's window. The caption is usually modified as the user moves from part to part within the document. When no part is active, the view restores the window's title to this original string.TOcViewPaint structMOREINFO="NONE"ocf/ocview.hREMAP='BodyNoLead'The OC_VIEWPAINT message carries a pointer to this structure in its ROLE='italic'lParam. The message notifies a server that it should update its painting of an object. The structure carries information about the area that needs repainting. Generally a program should respond by calling paint methods on the window or view that receives the message. For examples, look at the source code for ROLE='italic'TOleWindow::ROLE='italic'EvOcViewPaint and ROLE='italic'TOleView::ROLE='italic'EvOcViewPaint.See alsoREMAP='BodyNoLead'OC_VIEWxxxx messages, TOleView::EvOcViewPaint, TOleWindow::EvOcViewPaintPublic data membersAspectFORMAT="LINESPECIFIC"TOcAspect Aspect;REMAP='BodyNoLead'Holds an enumerated value that tells how the part is to be drawn. A single object can often be drawn in more than one way. For example, the server might show the object's full contents, a miniature representation of the contents, or an icon that represents the type of object without indicating its specific contents.See alsoREMAP='BodyNoLead'TOcAspect enumClipFORMAT="LINESPECIFIC"TRect* Clip;REMAP='BodyNoLead'Designates the area where the part should be allowed to draw. The server can clip the output to this area to avoid drawing outside its allotted space.See alsoREMAP='BodyNoLead'TRect classDCFORMAT="LINESPECIFIC"HDC DC;REMAP='BodyNoLead'Contains a handle to the device context where the repainting should occur.PartFORMAT="LINESPECIFIC"TOcPart* Part;REMAP='BodyNoLead'Points to the part that needs to be redrawn. This member can be used to ask the part to repaint itself. In the current implementation of ObjectComponents, this member is not used.See alsoREMAP='BodyNoLead'TOcPart classPosFORMAT="LINESPECIFIC"TRect* Pos;REMAP='BodyNoLead'Specifies the upper left corner of the server object that has become invalid and needs repainting.See alsoREMAP='BodyNoLead'TRect classTOleAllocator classMOREINFO="NONE"ocf/oleutil.hREMAP='BodyNoLead'A linking and embedding .EXE application creates a memory allocator object in order to tell OLE what memory manager the system should use when allocating and deallocating memory on behalf of the server. Unless you have particular memory management needs, it's easiest to let OLE use its default allocator. REMAP='Body'When writing a linking and embedding application, you usually do not need to create a memory allocator object directly because your ROLE='italic'TOcApp object takes care of it for you. The only applications that create memory allocators directly are automation servers that do not support linking and embedding. Because automation servers don't create ROLE='italic'TOcApp objects, they do need to create ROLE='italic'TOleAllocators.REMAP='Body'DLL servers do not need a memory allocator because the system uses whatever allocator the .EXE client designates. See alsoREMAP='BodyNoLead'TOcApp classPublic constructors and destructorConstructorFORMAT="LINESPECIFIC"TOleAllocator(IMalloc* mem = 0);REMAP='BodyNoLead'Initializes the OLE system library and, if ROLE='italic'mem is nonzero, registers a custom memory allocator. Unless you have particular memory management needs, it is easiest to let OLE use its default allocator. To implement your own allocator, refer to the OLE documentation on the ROLE='italic'IMalloc interface.FORMAT="LINESPECIFIC"TOleAllocator( );REMAP='BodyNoLead'Tells OLE to use the custom memory allocator. Does not initialize the OLE system library. In .EXE applications, the registrar object initializes the OLE library. In DLL servers, the .EXE client provides the allocator.DestructorFORMAT="LINESPECIFIC"~TOleAllocator( );REMAP='BodyNoLead'Releases the memory allocator (either the default allocator or a custom allocator) and uninitializes the OLE system.See alsoREMAP='BodyNoLead'TOcRegistrar Class, TRegistrar ClassPublic member functionsAllocFORMAT="LINESPECIFIC"void far* Alloc(unsigned long size);REMAP='BodyNoLead'Calls the ROLE='italic'Alloc method on the active memory allocator to request a block of memory. ROLE='italic'size gives the size of the block. Unless you have registered a custom memory allocator, ROLE='italic'Alloc calls OLE's default allocator. If the request fails, ROLE='italic'Alloc returns 0.See AlsoREMAP='BodyNoLead'TOleAllocator::Free_FreeFORMAT="LINESPECIFIC"void Free(void far* block);REMAP='BodyNoLead'Calls the ROLE='italic'Free method on the active memory allocator to release a block of memory previously allocated with ROLE='italic'Alloc. block points to the base of the area to be released. Unless you have registered a custom memory allocator, ROLE='italic'Free calls OLE's default allocator.See alsoREMAP='BodyNoLead'TOleAllocator::Alloc_Public data memberMemFORMAT="LINESPECIFIC"IMalloc* Mem;REMAP='BodyNoLead'Points to the active memory allocator object. Unless you have registered a custom memory allocator, ROLE='italic'Mem points to OLE's default allocator.TRegistrar classMOREINFO="NONE"ocf/ocreg.hREMAP='BodyNoLead'ROLE='italic'TRegistrar manages all the registration tasks for an application. It processes OLE-related switches on the command line and records any necessary information about the application in the system registration database. If the application is already registered in the database, the registrar confirms that the registered ROLE='italic'path, progid, and ROLE='italic'clsid are still accurate. If not, it reregisters the application.REMAP='Body'Every ObjectComponents application needs to create a registrar object. If your application supports automation but not linking and embedding, then create a ROLE='italic'TRegistrar object. To support linking and embeddingname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'alone or along with automationname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'then create a ROLE='italic'TOcRegistrar instead. ROLE='italic'TOcRegistrar extends ROLE='italic'TRegistrar by connecting the application to the BOCOLE support library interfaces that support linking and embedding.REMAP='Body'An application's main procedure usually performs these actions with its registrar:MARK='bullet'REMAP='Bullet1'Construct the registrar, passing it a pointer to the application's factory callback.REMAP='Bullet1'Call ROLE='italic'IsOptionSet to check for options that might affect how the application chooses to start (for example, remaining invisible if invoked for embedding.REMAP='Bullet1'Call ROLE='italic'Run to enter the program's message loop.See alsoREMAP='BodyNoLead'TOcRegistrar classPublic constructor and destructorConstructorFORMAT="LINESPECIFIC"TRegistrar(TRegList& regInfo, TComponentFactory callback, string& cmdLine, HINSTANCE hInst);REMAP='BodyNoLead'ROLE='italic'regInfo is the application registration structure (conventionally named ROLE='italic'appReg). ROLE='italic'callback is the factory callback function that ObjectComponents invokes when it is time for the application to create a document. An ObjectWindows program can use the ROLE='italic'TOleFactory class to create this callback. ROLE='italic'cmdLine points to the command line received when the application was invoked. ROLE='italic'hInst is the application instance.DestructorFORMAT="LINESPECIFIC"virtual ~TRegistrar( );REMAP='BodyNoLead'Deletes objects the registrar maintains internally.REMAP='Body'The constructor processes OLE-related switches and removes them from the command line. (Call ROLE='italic'IsOptionSet to determine what switches were found.) It also initializes some settings from the application registration table. If the application is a DLL, the constructor initializes the global ROLE='italic'DllRegistrar variable.See alsoREMAP='BodyNoLead'string class, TComponentFactory typedef, TOleFactory class, TRegistrar::IsOptionSetPublic member functionsCanUnloadFORMAT="LINESPECIFIC"virtual bool CanUnload( );REMAP='BodyNoLead'Returns ROLE='bold'true if the application is not currently serving any OLE clients and ROLE='bold'false otherwise.CreateAutoAppFORMAT="LINESPECIFIC"TUnknown* CreateAutoApp(TObjectDescriptor app, uint32 options, IUnknown* outer = 0);REMAP='BodyNoLead'Creates an instance of an automated application. This method is usually called from the application's ROLE='italic'TComponentFactory callback function.REMAP='Body'ROLE='italic'app is the automation server's primary automated class created from the ROLE='italic'TAutoObjectDelete<> template. REMAP='Body'ROLE='italic'options contains the application's mode flags. This is usually the same value passed in to the factory callback function. The possible values are enumerated in ROLE='italic'TOcAppMode.REMAP='Body'ROLE='italic'outer points to the ROLE='italic'IUnknown interface of an outer component under which the application is asked to aggregate.REMAP='Body'The return value points to the new OLE application object.See alsoREMAP='BodyNoLead'TAutoObjectDelete<> class, TComponentFactory typedef, TRegistrar::CreateAutoObjectCreateAutoObjectFORMAT="LINESPECIFIC"TUnknown* CreateAutoObject(TObjectDescriptor obj, TServedObject& app);REMAP='BodyNoLead'ROLE='italic'app is the automated OLE application object.REMAP='Body'ROLE='italic'obj is the automated C++ object.FORMAT="LINESPECIFIC"TUnknown* CreateAutoObject(const void* obj, const typeinfo& objInfo, const void* app, const typeinfo& appInfo);REMAP='BodyNoLead'ROLE='italic'app and ROLE='italic'obj are the same as in Form 1.REMAP='Body'ROLE='italic'objInfo identifies the type of object in ROLE='italic'obj. ROLE='italic'appInfo identifies the type of object in ROLE='italic'app. Both values can be obtained using ROLE='italic'typeid.REMAP='Body'ROLE='italic'CreateAutoObject asks an automated application to instantiate one of its automated objects. It is usually called from the application's ROLE='italic'TComponentFactory callback function. Which form you call depends on what information you have to identify the kind of object you want to create. See alsoREMAP='BodyNoLead'TComponentFactory typedef, TRegistrar::CreateAutoApp, typeid, typeinfo classGetFactoryFORMAT="LINESPECIFIC"virtual void far* GetFactory(const GUID& clsid, const GUID far& iid);REMAP='BodyNoLead'Returns a pointer to the factory interface for creating type object indicated by ROLE='italic'clsid. ROLE='italic'iid names the particular interface you want to receive. If the registrar is unable to find an ROLE='italic'iid interface for ROLE='italic'clsid objects, it returns zero.REMAP='Body'ObjectComponents calls a DLL's ROLE='italic'GetFactory member every time a new client loads the DLL. Usually you do not need to call ROLE='italic'GetFactory yourself.GetOptionsFORMAT="LINESPECIFIC"uint32 GetOptions( ) const;REMAP='BodyNoLead'Returns a 32-bit integer containing bit flags that reflect the application's running mode. Some of the flags are set in response to command-line switches. Others are set directly by ObjectComponents. For a list of the mode flags, see the ROLE='italic'TOcAppMode enum.See alsoREMAP='BodyNoLead'TOcAppMode enum, TRegistrar::IsOptionSet, TRegistrar::ProcessCmdLine, TRegistrar::SetOptionIsOptionSetFORMAT="LINESPECIFIC"bool IsOptionSet(uint32 option) const;REMAP='BodyNoLead'Returns ROLE='bold'true if a particular option was set as a flag on the application's command line, and ROLE='bold'false if the option was not set. The flags are set by the ROLE='italic'ProcessCmdLine method.REMAP='Body'For a list of possible values ROLE='italic'option can assume, see the ROLE='italic'TOcAppMode enum.See alsoREMAP='BodyNoLead'TOcApp::IsOptionSet, TOcAppMode enum, TRegistrar::GetOptions, TRegistrar::ProcessCmdLine, TRegistrar::SetOptionProcessCmdLineFORMAT="LINESPECIFIC"void ProcessCmdLine(string& cmdLine);REMAP='BodyNoLead'Locates any OLE-related switches on the application's command line (or passed in to a DLL server from ObjectComponents). The switches tell the program whether it has been launched independently or as a server, whether it should register or unregister itself, whether to create a type library, and signal other running conditions as well. ROLE='italic'ProcessCmdLine records the presence of each flag it finds. You can call ROLE='italic'IsOptionSet to determine the results.REMAP='Body'The command line is always processed for you when the registrar object is constructed. Usually you do not need to call this function directly.REMAP='Body'ROLE='italic'cmdLine contains the string of arguments passed to the program on its command line. ROLE='italic'ProcessCmdLine removes OLE-related switches from the command line. That lets you process ROLE='italic'cmdLine afterwards for any of your own arguments without worrying about OLE arguments.See alsoREMAP='BodyNoLead'string class, TRegistrar::IsOptionSetReleaseAutoAppFORMAT="LINESPECIFIC"void ReleaseAutoApp(TObjectDescriptor app);REMAP='BodyNoLead'This method is used by an application's factory callback function if the application must detach itself from OLE before it can shut down. Detaching the application is necessary when an automated application has registered its application object for its class, allowing the controller to manipulate it.RegisterAppClassFORMAT="LINESPECIFIC"void RegisterAppClass( );REMAP='BodyNoLead'Tells OLE that an automated application is up and ready to create an application instance. Has no effect if called from an application that does not support automation. REMAP='Body'For convenience, it is recommended that every ObjectComponents application, even those that do not support automation, call ROLE='italic'RegisterAppClass on starting up and ROLE='italic'UnregisterAppClass when closing down. This habit is harmless even if sometimes unnecessary and ensures that you will not forget to include registration functions if you later add automation.See alsoREMAP='BodyNoLead'TRegistrar::UnregisterAppClassRunFORMAT="LINESPECIFIC"virtual int Run( );REMAP='BodyNoLead'Call this function to execute your program. If the application was built as an .EXE file, then ROLE='italic'Run lets the application enter its message loop. If the application was built as a DLL, then Run returns without entering the message loop. DLL servers must wait for OLE to call their factory before they run. The purpose of the ROLE='italic'Run function is to let you build your applications as either an .EXE or a DLL without having to modify your code.REMAP='Body'In .EXE programs, ROLE='italic'Run performs the following steps:MARK='bullet'REMAP='Bullet1'If the application is automated, call ROLE='italic'RegisterAppClass.REMAP='Bullet1'Call the factory function to run the application. The application enters its message loop.REMAP='Bullet1'Call the factory function to shut down the application.REMAP='Bullet1'Ensure that the application's ROLE='italic'TOcApp connector object is properly released.See alsoREMAP='BodyNoLead'TOcApp, TRegistrar::RegisterApp, TRegistrar::ShutdownSetOptionFORMAT="LINESPECIFIC"void SetOption(uint32 bit, bool state);REMAP='BodyNoLead'Modifies the application's running mode flags. ROLE='italic'bit contains bit flags from the ROLE='italic'TOcAppMode enum. If ROLE='italic'state is ROLE='bold'true, ROLE='italic'SetOption turns the flags on. If state is ROLE='bold'false, it turns the flags off. You should never have to call this function because ObjectComponents always maintains the mode flags.See alsoREMAP='BodyNoLead'TOcAppMode enum, TRegistrar::GetOptions, TRegistrar::IsOptionSet, TRegistrar::ProcessCmdLineShutdownFORMAT="LINESPECIFIC"virtual void Shutdown(IUnknown* releasedObj, uint32 options);REMAP='BodyNoLead'Calls the application's factory function and asks it to make the application stop. Ensures that the application's ROLE='italic'TOcApp connector object is properly released. In the normal path of execution, the Run command performs the same tasks. Call ROLE='italic'Shutdown to terminate the application directly.See alsoREMAP='BodyNoLead'TOcApp, TRegistrar::RunUnregisterAppClassFORMAT="LINESPECIFIC"void UnregisterAppClass( );REMAP='BodyNoLead'Announces that the application is no longer available for OLE interactions.See alsoREMAP='BodyNoLead'TRegistrar::RegisterAppClassProtected data memberAppDescFORMAT="LINESPECIFIC"TAppDescriptor& AppDesc;REMAP='BodyNoLead'Holds the application descriptor. ObjectComponents uses an application descriptor internally to manage information about a component. (Like EXEs, each DLL gets an application descriptor of its own.) ROLE='italic'TAppDescriptor is undocumented because it is used only internally and is subject to change. The registrar classes, ROLE='italic'TOcRegistrar and ROLE='italic'TRegistrar, are the supported interfaces to the application descriptor. The registrar constructs the descriptor, and most of its member functions call descriptor functions to perform the work.REMAP='Body'Usually you will not need to manipulate this data member directly.Protected constructorConstructorFORMAT="LINESPECIFIC"TRegistrar(TAppDescriptor& appDesc);REMAP='BodyNoLead'The protected constructor is used only by the derived class ROLE='italic'TOcRegistrar. ROLE='italic'TAppDescriptor is a class that both registrar objects (ROLE='italic'TRegistrar and ROLE='italic'TOcRegistrar) use internally to hold information about an application.TUnknown classMOREINFO="NONE"ocf/oleutil.hREMAP='BodyNoLead'Implements the standard OLE ROLE='italic'IUnknown interface. ObjectComponents derives some of its own classes from ROLE='italic'TUnknown, so usually you do not need to use it directly yourself. Advanced users, however, might find ROLE='italic'TUnknown helpful in creating their own custom Component Object Model (COM) objects.REMAP='Body'The ROLE='italic'TUnknown class is the basis for the ObjectComponents implementation of object aggregation. With aggregation, you can make distinct components work together as a single OLE object. A single primary object becomes the outer object, and secondary objects behave as though they are parts of the primary object. For this to work, whenever any inner object is asked for its ROLE='italic'IUnknown interface, it must return the ROLE='italic'IUnknown that belongs to the outer object. If the outer object is asked for an interface it does not support, it forwards the request to the chain of attached inner objects. All the interfaces supported by any object in the aggregation are available through the ROLE='italic'QueryInterface method of the outer object.REMAP='Body'Aggregation is established in the ROLE='italic'TComponentFactory callback function. Each component receives the ROLE='italic'IUnknown pointer to its outer object and returns its own ROLE='italic'IUnknown pointer to be placed in the chain of secondary objects.See alsoREMAP='BodyNoLead'TComponentFactory typedef Public member functionsAggregateFORMAT="LINESPECIFIC"IUnknown& Aggregate(TUnknown& inner);REMAP='BodyNoLead'Aggregates a new object under the current object. ROLE='italic'inner points to the ROLE='italic'IUnknown interface of the new object. The current object stores ROLE='italic'inner for use in responding to future ROLE='italic'QueryInterface calls. It also calls ROLE='italic'AddRef on the inner pointer. REMAP='Body'If ROLE='bold'this is already part of an aggregation, ROLE='italic'inner is passed down to the last inner object in the chain.REMAP='Body'ROLE='italic'Aggregate returns a reference to the object's own outer ROLE='italic'IUnknown interface. The newly added object should use the return value as its ROLE='italic'Outer pointer, too. To aggregate ROLE='bold'this under an object that is not a ROLE='italic'TUnknown, call ROLE='italic'SetOuter instead.See alsoREMAP='BodyNoLead'TUnknown::SetOuter, TUnknown::OuterGetOuterFORMAT="LINESPECIFIC"IUnknown* GetOuter( );REMAP='BodyNoLead'Returns a pointer to the object's outer ROLE='italic'IUnknown interface, the one that belongs to the primary object in a group of aggregated objects.See alsoREMAP='BodyNoLead'TUnknown::SetOuter, TUnknown::OuterGetRefCountFORMAT="LINESPECIFIC"unsigned long GetRefCount( );REMAP='BodyNoLead'Returns the reference count of the outer object. If ROLE='bold'this is not aggregated, then ROLE='italic'GetRefCount returns the object's own reference count.REMAP='Body'The reference count tells how many clients hold pointers to the object. The destructor prevents the object from being destroyed if the reference count is not 0.operator IUnknown&( )FORMAT="LINESPECIFIC"operator IUnknown&( );REMAP='BodyNoLead'Returns a reference to the object's outer ROLE='italic'IUnknown interface. Does not increment the object's reference count.operator IUnknown*( )FORMAT="LINESPECIFIC"operator IUnknown*( );REMAP='BodyNoLead'Returns a pointer to the object's outer ROLE='italic'IUnknown interface. Increments the object's reference count first.See alsoREMAP='BodyNoLead'TUnknown::operator IUnknown&( )SetOuterFORMAT="LINESPECIFIC"IUnknown* SetOuter(IUnknown* outer);REMAP='BodyNoLead'Tells the object to aggregate itself under the object ROLE='italic'outer. When asked for its ROLE='italic'IUnknown interface, ROLE='bold'this always returns ROLE='italic'outer. ROLE='italic'SetOuter returns the object's own ROLE='italic'IUnknown interface to the outer object. It does not call ROLE='italic'AddRef before returning the pointer.REMAP='Body'If ROLE='italic'outer is 0, ROLE='italic'SetOuter ignores ROLE='italic'outer but still returns its own ROLE='italic'IUnknown interface.REMAP='Body'SetOuter is called to make the object aggregate under an unknown outer object. If the outer object is also a TUnknown, call Aggregate instead. Aggregate sets the object's inner pointer as well as its outer pointer.See alsoREMAP='BodyNoLead'TUnknown::Aggregate, TUnknown::GetOuter, TUnknown::Outer, TUnknown::operator IUnknown*( )Protected constructor and destructorConstructorFORMAT="LINESPECIFIC"TUnknown( );REMAP='BodyNoLead'Creates a ROLE='italic'TUnknown object with an initial reference count of 0. Initially the object is not aggregated with any other object.REMAP='Body'These members are protected because only a derived class should be able to construct a ROLE='italic'TUnknown object. ROLE='italic'TUnknown is meant to be a base for other objects, not an independent object.DestructorFORMAT="LINESPECIFIC"virtual ~TUnknown( );REMAP='BodyNoLead'Deletes the object.See alsoREMAP='BodyNoLead'TUnknown::AggregateProtected member functionsQueryObjectFORMAT="LINESPECIFIC"virtual HRESULT QueryObject(const GUID far& iid, void far* far* pif);REMAP='BodyNoLead'Asks whether the object supports the interface identified by ROLE='italic'iid. If the object supports the interface, the function returns HR_NOERROR and places a pointer to the interface in ROLE='italic'pif.REMAP='Body'The implementation of ROLE='italic'QueryObject in ROLE='italic'TUnknown always fails. It always returns HR_NOINTERFACE. Classes derived from ROLE='italic'TUnknown should override this function.REMAP='Body'For examples of override functions, look at the source code for classes such as ROLE='italic'TOcApp and ROLE='italic'TOcView.ThisUnknownFORMAT="LINESPECIFIC"IUnknown& ThisUnknown( );REMAP='BodyNoLead'Returns a reference to the ROLE='italic'IUnknown interface for ROLE='bold'this, not to the outer or inner aggregated objects.Protected data memberOuterFORMAT="LINESPECIFIC"IUnknown* Outer;REMAP='BodyNoLead'Holds a pointer to the ROLE='italic'IUnknown interface of the outer object in a group of aggregated objects.See alsoREMAP='BodyNoLead'TUnknown::GetOuter, TUnknown::SetOuterTXAuto classMOREINFO="NONE"ocf/autodefs.hBase classFORMAT="LINESPECIFIC"TXBaseREMAP='BodyNoLead'ROLE='italic'TXAuto is the exception object that ObjectComponents throws when it encounters an unexpected error while processing automation calls. The possible errors are indicated by the ROLE='italic'TError nested ROLE='bold'enum values.See alsoREMAP='BodyNoLead'TXBase class (OWL.HLP), TXObjComp class, TXOle class, TXRegistry classPublic constructorConstructorFORMAT="LINESPECIFIC"TXAuto(TXAuto::TError err);REMAP='BodyNoLead'Constructs an exception object to describe the problem indicated by ROLE='italic'err.See alsoREMAP='BodyNoLead'TXAuto::TError enumPublic data memberErrorCodeFORMAT="LINESPECIFIC"TError ErrorCode;REMAP='BodyNoLead'Holds the code that identifies the problem this object was constructed to describe.See alsoREMAP='BodyNoLead'TXAuto::TError enumType definitionTErrorFORMAT="LINESPECIFIC"enum TErrorREMAP='BodyNoLead'The values of the enumeration identify possible errors that can occur during automation.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='81*'COLNAME='C2' COLWIDTH='294*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xNoErrorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No error occurred.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xConversionFailureCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Problem converting a value from a VARIANT union to the expected data type.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xNotIDispatchCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Attempted to send an automation command to an object that does not execute commands.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xForeignIDispatchCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Attempted to send an automation command to an automated object that does not derive from ROLE='italic'TAutoProxy.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xTypeMismatchCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A supplied argument cannot be converted to the required type.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xNoArgSymbolCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A command attempted to use more arguments than the server recognizes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xParameterMissingCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'An automation call failed to provide a required argument when setting a property value.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xNoDefaultValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A parameter is missing and no default value was supplied.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xValidateFailureCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The code in a user-defined validation hook indicated that the argument values it received are unacceptable.TXObjComp classMOREINFO="NONE"ocf/ocdefs.hBase classFORMAT="LINESPECIFIC"TXBaseREMAP='BodyNoLead'ROLE='italic'TXObjComp is the exception object that ROLE='italic'ObjectComponents throws when it encounters an unexpected error while processing its own internal code. The possible errors are indicated by the ROLE='italic'TError nested enum values.See alsoREMAP='BodyNoLead'TXAuto class, TXBase class, TXOle class, TXRegistry classPublic constructorConstructorFORMAT="LINESPECIFIC"TXObjComp(TXObjComp::TError err, const char* msg = 0);REMAP='BodyNoLead'Constructs an exception object to describe the problem indicated by ROLE='italic'err. Associates the optional ROLE='italic'msg string with the error.See alsoREMAP='BodyNoLead'TXObjComp::TErrorPublic member functionErrorCodeFORMAT="LINESPECIFIC"TError ErrorCode;REMAP='BodyNoLead'Holds the error code that identifies the problem this object was constructed to describe.See alsoREMAP='BodyNoLead'TXObjComp::TError enumType definitionTErrorFORMAT="LINESPECIFIC"enum TErrorREMAP='BodyNoLead'The values of the enumeration identify possible errors that can occur inside ObjectComponents.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='104*'COLNAME='C2' COLWIDTH='270*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ConstantCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ROLE='bold'Application ErrorsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xNoErrorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'No error occurred.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xBOleLoadFailCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The BOCOLE support library could not be loaded.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xBOleBindFailCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ObjectComponents could not get a necessary interface from the BOCOLE support library.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xDocFactoryFailCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TOcApp was unable to register or unregister the application with OLE.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xRegWriteFailCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The registrar could not write to the system registration database.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ROLE='bold'Document and Part ErrorsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xMissingRootIStorageCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The document where a part was asked to construct itself does not possess a root storage object. (Without a storage, the document has nowhere to store its parts.)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xInternalPartErrorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ObjectComponents was unable to create a part object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xPartInitErrorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ObjectComponents was unable to initialize a newly created part.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xDocSaveErrorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A ROLE='italic'TOcDocument could not write itself to a file.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ROLE='bold'Storage ErrorsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xStorageOpenErrorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A document was unable to open its storage object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xStreamOpenErrorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A document was unable to open the stream object it needs for file I/O.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xStreamWriteErrorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'A document was unable to write to the stream object it needs for file I/O.TXOle classMOREINFO="NONE"ocf/oleutil.hBase classFORMAT="LINESPECIFIC"TXBaseREMAP='BodyNoLead'ROLE='italic'TXOle is the exception object that ObjectComponents throws when it encounters an unexpected error while executing an OLE API call.REMAP='Body'The object's ROLE='italic'Check method is static so that you can call it without actually creating a ROLE='italic'TXOle object. If the parameters you pass indicate an error has occurred, ROLE='italic'Check creates a ROLE='italic'TXOle object and throws the exception for you.See alsoREMAP='BodyNoLead'TXAuto class, TXObjComp class, TXRegistry classPublic constructors and destructorConstructorsFORMAT="LINESPECIFIC"TXOle(const char far* msg, HRESULT stat);REMAP='BodyNoLead'Creates an OLE exception object. ROLE='italic'msg points to an error message and ROLE='italic'stat holds the return value from an OLE API call.FORMAT="LINESPECIFIC"TXOle(const TXOle& copy);REMAP='BodyNoLead'Constructs a new OLE exception object by copying the one passed as ROLE='italic'copy.REMAP='Body'Usually you do not need to construct an OLE exception object directly. Call ROLE='italic'Check instead.DestructorFORMAT="LINESPECIFIC"~TXOle( );REMAP='BodyNoLead'Destroys the ROLE='italic'TXOle object.See alsoREMAP='BodyNoLead'TXOle::CheckPublic member functionsCheckFORMAT="LINESPECIFIC"static void Check(HRESULT stat, const char far* msg);REMAP='BodyNoLead'If ROLE='italic'stat indicates an error, Form 1 throws a ROLE='italic'TXOle exception containing the ROLE='italic'msg error string.FORMAT="LINESPECIFIC"static void Check(HRESULT stat);REMAP='BodyNoLead'If ROLE='italic'stat indicates an error, Form 2 throws a ROLE='italic'TXOle exception containing the error string "OLE call FAILED, ErrorCode = ROLE='italic'stat" where ROLE='italic'stat is shown as an eight-digit hexadecimal value.REMAP='Body'If you see this error message when running programs, you can look it up in the OLE_ERRS.TXT file, which for convenience matches the error codes to corresponding comments from the OLE system header files.REMAP='Body'Checks whether an error has occurred and if so throws an exception. ROLE='italic'stat is the value returned by an OLE API call. ROLE='italic'Check is static so that you can call it without actually creating a ROLE='italic'TXOle object first. If ROLE='italic'stat indicates an error, then ROLE='italic'Check creates a ROLE='italic'TXOle object and throws an exception. Public data memberStatFORMAT="LINESPECIFIC"long Stat;REMAP='BodyNoLead'ROLE='italic'Stat ("status") holds the result code returned from an OLE API.TXRegistry classMOREINFO="NONE"ocf/ocdefs.hBase classFORMAT="LINESPECIFIC"TXBaseREMAP='BodyNoLead'ROLE='italic'TXRegistry is the exception object that ObjectComponents throws when it encounters an unexpected error while reading from or writing to the system registration database.REMAP='Body'The object's ROLE='italic'Check method is static so that you can call it without actually creating a ROLE='italic'TXRegistry object. If the parameters you pass indicate an error has occurred, ROLE='italic'Check creates a ROLE='italic'TXRegistry object and throws the exception for you.See alsoREMAP='BodyNoLead'TXAuto class, TXObjComp class, TXOle classPublic constructorsConstructorsFORMAT="LINESPECIFIC"TXRegistry(const char* msg, const char* key);REMAP='BodyNoLead'Creates a registry exception object. ROLE='italic'msg points to an error message and ROLE='italic'key points to the name of the registry key that ObjectComponents was processing when the exception occurred.FORMAT="LINESPECIFIC"TXRegistry(const TXRegistry& copy);REMAP='BodyNoLead'The copy constructor constructs a new registry exception object by copying the one passed as ROLE='italic'copy. REMAP='Body'Usually you do not need to construct a registry exception directly. Call ROLE='italic'Check instead.See alsoREMAP='BodyNoLead'TXRegistry::CheckPublic member functionsCheckFORMAT="LINESPECIFIC"static void Check(long stat, const char* key);REMAP='BodyNoLead'Tests the value of ROLE='italic'stat to determine if an error has occurred and if so throws an exception. ROLE='italic'stat is the return value from a registration command. ROLE='italic'key is the name of the key that the registration command was processing.REMAP='Body'Check is static so that you can call it without actually creating a ROLE='italic'TXRegistry object first. If stat is nonzero, then ROLE='italic'Check creates a ROLE='italic'TXRegistry object and throws an exception. The exception carries the message string "Registry failure on key: ROLE='italic'key, ErrorCode = ROLE='italic'stat."KeyFORMAT="LINESPECIFIC"const char* Key;REMAP='BodyNoLead'Points to the name of the registration key that ObjectComponents was processing when the exception occurred.typehelp registration keyMOREINFO="NONE"REMAP='Body'Registers the name of a Help file (.HLP) containing information about the methods and properties your program exposes for automation. If the file is not in the same directory as the executable, be sure to register helpdir as well.REMAP='Body'ROLE='italic'typehelp is valid in the application registration table of an automation server. It is optional. Also, the file name can be localized, making it easy to have different Help files for different languages.REMAP='Body'To register ROLE='italic'typehelp, use the REGDATA macro, passing ROLE='italic'typehelp as the first parameter and file name as the second parameter.See alsoREMAP='BodyNoLead'helpdir registration key, REGDATA macro, typelib registration keyusage registration keyMOREINFO="NONE"REMAP='Body'Determines whether a single instance of your application is allowed to support multiple users or whether a new instance should be launched for each new OLE client. The -ROLE='italic'Automation command-line switch overrides this setting and forces single use when an automation server is invoked.REMAP='Body'The ROLE='italic'usage key is valid in any server registration table. It is always optional. If you omit it, ObjectComponents by default registers the application to support only one client per instance.REMAP='Body'To register the ROLE='italic'usage key, use the REGDATA macro, passing ROLE='italic'usage as the first parameter and one of the ROLE='italic'ocrxxxx Usage constants as the second parameter.FORMAT="LINESPECIFIC"REGDATA(usage, ocrSingleUse) // one client per instance (default)See alsoREMAP='BodyNoLead'ocrxxxx usage constants, REGDATA macroverbn registration keysMOREINFO="NONE"REMAP='Body'A string naming an action the server can perform with its objects. Containers add the active object's verbs to their Edit menus.REMAP='Body'ROLE='italic'verb0 is the name of the primary (default) verb for the class. The primary verb is executed if the user double-clicks the object. Use ROLE='italic'verb1 through ROLE='italic'verb7 to register additional verbs. The ocrVerbLimit constant, defined in ocf/ocreg.h, represents the maximum number of verbs allowed (8).REMAP='Body'The ROLE='italic'verbn keys are valid in the document registration tables of a server that supports linking and embedding. Every server should register a default verb. Other verbs are optional.REMAP='Body'To register a verb, use the REGDATA macro, passing ROLE='italic'verbn as the first parameter and a menu item string as the second parameter.FORMAT="LINESPECIFIC"REGDATA(verb0, "&Edit") // default action
REGDATA(verb1, "&Open") // another possible action (optional)See alsoREMAP='BodyNoLead'REGDATA macro, verbnopt registration keysverbnopt registration keysMOREINFO="NONE"REMAP='Body'Registers option flags describing the server's verbs. The flags determine how the verbs appear on the container's menu. They can be grayed or disabled, for example.REMAP='Body'Verb options are valid in the document registration table of any server that supports linking and embedding. They are always optional. Verb options are meaningless unless you also register verbs.REMAP='Body'To register verb options, use the REGVERBOPT macro, passing a verb key (such as ROLE='italic'verb0 or ROLE='italic'verb1) as the first parameter. For the second parameter, use ROLE='italic'ocrxxxx verb menu constants. For the third parameter, use ocrxxxx verb attribute constants.FORMAT="LINESPECIFIC"REGVERBOPT(verb2, ocrGrayed, ocrOnContainerMenu | ocrNeverDirties)See alsoREMAP='BodyNoLead'ocrxxxx verb menu constants, ocrxxxx verb attribute constants, REGVERBOPT macro, verbn registration keysversion registration keyMOREINFO="NONE"REMAP='Body'Registers a version string for the application and type library. The string can include minor version numbers delimited by periods. OLE ignores version numbers after the first two (the major and minor version numbers).REMAP='Body'The version key is valid in any registration table. It is always optional.REMAP='Body'To register ROLE='italic'version, use the REGDATA macro, passing ROLE='italic'version as the first parameter and a version number string as the second parameter.FORMAT="LINESPECIFIC"REGDATA(version, "1.0.5")See alsoREMAP='BodyNoLead'description registration key, permid registration key, permname registration keyWM_OCEVENT messageMOREINFO="NONE"ocf/ocapp.hREMAP='Body'ObjectComponents defines the WM_OCEVENT message in order to notify an application's window when significant OLE-related events occur.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='72*'COLNAME='C2' COLWIDTH='303*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MessageCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'MeaningVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WM_OCEVENTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Notification of an OLE event from ObjectComponents. The ROLE='italic'wParam value identifies the particular event.See also REMAP='BodyNoLead'OC_APPxxxx messages, OC_VIEWxxxx messagesREMAP='NumPart'ID='X-38263'ObjectSupport referenceREMAP='NumChapter'ID='X-20435'Overview of ObjectSupportREMAP='Body'This chapter provides an overview of the ObjectSupport classes, libraries, and header files, which provide various services that help you design your ObjectWindows application. These classes include the following groups:MARK='bullet'REMAP='Bullet1'Mathematical classes such as ROLE='italic'TPoint, ROLE='italic'TSize, and ROLE='italic'TRect that define screen coordinates and properties of rectangles.REMAP='Bullet1'Document template classes that make it easier to design Doc/View applications.REMAP='Bullet1'ROLE='italic'TLocaleString, which localizes OLE registration information required for containers and servers.REMAP='Body'The geometric classes support various operations that you might want to perform on points and rectangles. ROLE='italic'TPoint encapsulates a two-dimensional point that represents a screen position. You can use ROLE='italic'TPoint to compare, assign, and manipulate points. ROLE='italic'TSize encapsulates a two-dimensional quantity that represents the displacement of an area or the height and width of a rectangle. You can use ROLE='italic'TSize to compare, assign, and manipulate sizes. ROLE='italic'TRect encapsulates the properties of rectangles with sides parallel to the x- and y-axes. You can use ROLE='italic'TRect to perform a variety of rectangle tests and manipulations, such as inflating, normalizing, and changing the offset dimensions of a rectangle. A parameterized class, ROLE='italic'TPointer holds a pointer to its parameterized type. You can assign a pointer to a ROLE='italic'TPointer object and easily remove the object by assigning 0 to the pointer.REMAP='Body'Other ObjectSupport classes such as ROLE='italic'TDropInfo and ROLE='italic'TDocTemplate provide functions that let you manipulate files and documents. ROLE='italic'TDropInfo, which supports file drag and drop operations, makes it easy to determine the number of files dropped, the names of the files, and where they were dropped. The templetized classes, ROLE='italic'TDocTemplate and ROLE='italic'TDocTemplateT, support creating documents and views. You can use these classes to create a document template with a specified file description, file filter pattern, and default file extension. REMAP='Body'The ObjectSupport library also includes classes and macros designed to simplify the process of localizing strings and building registration tables. The localization class, ROLE='italic'TLocaleString, provides support for ObjectWindows' Doc/View as well as ObjectComponents' OLE-enabled applications. A struct defining a localizable substitute for ROLE='bold'char* strings, ROLE='italic'TLocaleString contains functions that translate and compare strings in a given language. ObjectWindows' registration macros simplify the process of building a registration table for either an automation server or a non-automated application or document.REMAP='Body'The ObjectSupport library contains one exception class, ROLE='italic'TXBase, which is the base class for both ObjectWindows' and ObjectComponents' exception-handling classes. Exception classes derived from ROLE='italic'TXBase are designed to handle specific error conditions, such as an out-of-memory error or an attempt to create an invalid window. To handle an exception, you will want to derive a class from any one of the ObjectWindows' classes that describe this particular exception.REMAP='Body'The following table lists the files included in the Object Support Library (..\OSL directory).REMAP='TblWideCap'Summary of the Object Support library FilesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='56*'COLNAME='C2' COLWIDTH='224*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ROLE='BOLD'File nameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'geometry.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Contains descriptions of mathematical classes such as TPoint, TRect, TSize, TResId, TDropInfo, TProcInstance, and TPointer.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'doctpl.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Contains definitions of files TDocTemplate, and TDocTemplateT<D,V>.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'defs.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Contains common definitions, includes windows.h definitions, and deals with BOOL data types.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'except.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines class TXBase, the base exception-handling class for ObjectWindows and classes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'locale.hCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Defines TLocaleString class as well as registration macros.REMAP='NumChapter'ID='X-28627'ObjectSupport library referenceRegistration macros MOREINFO="NONE"REMAP='Body'The following macros, defined in locale.h, take care of performing various OLE-related registration procedures. These macros simplify the process of building a registration table (a specific kind of lookup table) for an automation server and for a non-automated application or document associated with either a container or a server. A collection of vital statistics about an object, the registration table provides an external description associated with an object. Some of the information goes into the system registry and is used by OLE. Some of the information is displayed in the File|Open dialog box when the user selects the Insert Object selection.REMAP='Body'The registration macros build a ROLE='italic'TRegList structure containing entries of type ROLE='italic'TRegItem, a struct which is defined as follows:FORMAT="LINESPECIFIC"struct TRegItem {
char* Key; //Item name
TLocaleString Value; //String value for the item
};REMAP='Body'Using these macros saves you the trouble of having to build the ROLE='italic'TRegItem and ROLE='italic'TRegList structures directly. REMAP='Body'Although both servers and containers use the same macros, they pass different kinds of information to the registration structures. Depending on the amount of information you want associated with your application and whether you want to set up a structure with document or application information, use one or more of these registration macros.Registration macrosCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='148*'COLNAME='C2' COLWIDTH='226*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ROLE='BOLD'Macro COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Meaning VALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BEGIN_REGISTRATIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Begins a registration macro table.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'END_REGISTRATIONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Ends a registration macro table.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'REGDATACOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Registers information about the application, for example, class ID, description, document filter, and debugger.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'REGDOCFLAGCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Registers a series of document flags. Required for a document registration table.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'REGFORMATCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Registers a data format.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'REGICONCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Registers an icon.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'REGITEMCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Registers a customized format. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'REGSTATUSCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Registers an aspect status.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'REGVERBOPTCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Registers an option for a verb.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'REGISTRATION_FORMAT_BUFFERCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Sets the size of the buffer space needed for expansion.REMAP='Body'REMAP='Body'REGDATA, which is the main macro used in the registration table, passes string data in its arguments. The REGFORMAT, REGDOCFLAG, REGICON, REGSTATUS, and REGVERBOPT macros format numeric values as string values.REMAP='Body'See the ROLE='italic'ObjectWindows Programmer's Guide for a list of which item names (referred to as keys) are required in the application and document registration tables. For information about how to use these macros in your OLE-enabled applications, see the sections on "Registering a linking and embedding server" and "Registering the container" in the ROLE='italic'ObjectWindows Programmer's Guide. The sample applications, REGTEST.CPP and STEP15DV.CPP, on your distribution disk, provide examples of registration tables designed for different kinds of applications and documents.See alsoREMAP='BodyNoLead'END_REGISTRATION Macro, BEGIN_REGISTRATION Macro, TLocaleStringBEGIN_REGISTRATION macroMOREINFO="NONE"locale.hFORMAT="LINESPECIFIC"BEGIN_REGISTRATION(regname)FORMAT="LINESPECIFIC"Indicates the beginning of a registration macro table. The macro takes one argument (ROLE='italic'regname), which is the name of the structure to be built. Within the registration table macro, there are several macros that build the registration structure. Depending on the type of application or document, different macros are used. The following example from STEP15.CPP, registers the drawing pad as a server application and builds an ROLE='italic'AppReg structure:FORMAT="LINESPECIFIC"BEGIN_REGISTRATION(AppReg)
REGDATA(clsid, "{5E4BD320-8ABC-101B-A23B-CE4E85D07ED2}")
REGDATA(description,"OWL Drawing Pad Server")
END_REGISTRATIONSee alsoREMAP='.Indent1' ROLE='indent1'END_REGISTRATION macro, REGDATA macroEND_REGISTRATION macroMOREINFO="NONE"locale.hFORMAT="LINESPECIFIC"END_REGISTRATIONREMAP='BodyNoLead'END_REGISTRATION Indicates the end of a registration macro table. You can insert the registration macros within the BEGIN_REGISTRATION and END_REGISTRATION macros to build a registration structure. See alsoREMAP='BodyNoLead'BEGIN_REGISTRATION macroREGDATA macroMOREINFO="NONE"locale.hFORMAT="LINESPECIFIC"REGDATA(var,val)REMAP='BodyNoLead'The main registration macro, REGDATA registers information about an application or a document. The macro always takes an item name (for example, ROLE='italic'clsid) and a corresponding string value (for example, 5E4BD320-8ABC-101B-A23B-CE4E85D07ED2). The following example from STEP15.CPP on your distribution disk, passes the class ID and description to build an ROLE='italic'AppReg application registration structure:FORMAT="LINESPECIFIC"BEGIN_REGISTRATION(AppReg)
REGDATA(clsid, "{5E4BD320-8ABC-101B-A23B-CE4E85D07ED2}")
REGDATA(description,"OWL Drawing Pad Server")
END_REGISTRATIONREMAP='Body'For an automation server, the registration structure includes the following REGDATA macros:FORMAT="LINESPECIFIC"BEGIN_REGISTRATION(myappreg)
REGDATA(clsid, "{01234567-1234-5678-1122-334455667788}")
REGDATA(progid, "MySample")
REGDATA(description,"My Sample 1.0 Application")
REGDATA(cmdline, "/automation")
REGDATA(version, "1.2")
END_REGISTRATIONREMAP='Body'Each automatable object requires a program ID, a description, and a command-line argument, which is placed on the server's command line. As usual, only one class ID is defined for the application. See the ROLE='italic'ObjectWindows Programmer's Guide for detailed information about how to register an automation server.REMAP='Body'For each application registration structure, you may have one or more document registration structures. The following example uses the data from several REGDATA macros to build a ROLE='italic'DocReg registration structure. FORMAT="LINESPECIFIC"BEGIN_REGISTRATION(mydocreg)
REGDATA(description,"My Sample 1.0 Document")
REGDATA(extension, "myd") //Do not use a period before the extension.
REGDATA(directory, "C:\temp")
REGDATA(docfilter, "*.drw;*.drx")
...//Insert additional macros here.
REGDATA(debugger, "tdw -t") // Sets debugger option
REGDATA(progid, "MyDocument") //For servers only
REGDATA(menuname, "My Document") //For servers only
REGDATA(insertable,0) // For servers only
REGDATA(usage, ocrMultipleUse) // For servers only
REGDATA(verb0, "&Edit") //For servers only
REGDATA(verb1, "&Open") //For servers only
REGDATA(verb2, "&Play") //For servers only
...//Insert additional macros here.
END_REGISTRATIONSee alsoREMAP='BodyNoLead'BEGIN_REGISTRATION macro, END_REGISTRATION macroREGITEM macroMOREINFO="NONE"locale.hFORMAT="LINESPECIFIC"REGITEM(key,val)REMAP='BodyNoLead'The REGITEM macro lets you write customized entries for the system registry. The following example, from REGTEST.CPP, registers conversion formats. FORMAT="LINESPECIFIC"REGITEM("CLSID\\<clsid>\\Conversion\\Readable\\Main", "FormatX,FormatY")REMAP='Body'The first string is the registry key which has one parameter (<ROLE='italic'clsid>) When the registry information is generated, an actual value is substituted for the template parameters. See alsoREMAP='BodyNoLead'BEGIN_REGISTRATION macro, END_REGISTRATION macroREGFORMAT macroMOREINFO="NONE"locale.hFORMAT="LINESPECIFIC"REGFORMAT(i,f,a,t,d)REMAP='BodyNoLead'The REGFORMAT macro indicates the data formats the server or container can support and has the following parameters:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='20*'COLNAME='C2' COLWIDTH='349*'VALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'iCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Order of priority for the designated data format with 0 being the highest fidelity renderedCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'fCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The data format, for example, ROLE='italic'ocrText, ROLE='italic'ocrTiff, ROLE='italic'ocrDib, and so on.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'aCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The format used to present the data.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Medium to use to transfer the data, for example, ROLE='italic'ocrMfPict (METAFILEPICT structure), ROLE='italic'ocrGDI (GDI object such as a bitmap), ROLE='italic'ocrIStream (Stream object in a compound file) and so on.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Whether or not data is provided as well as received in the designated format. The accepted values are ROLE='italic'ocrGet (imports data in the specified format), ROLE='italic'ocrSet (exports data in the specified format), or ROLE='italic'ocrGetSet (both exports and imports data in the specified format).REMAP='Body'For example, STEP15DV.CPP registers the following clipboard formats:FORMAT="LINESPECIFIC"REGFORMAT(1, ocrMetafilePict, ocrcontent, ocrMfPict, ocfSet)REMAP='Body'and generates the string, "format1, 3, 1, 1056,1." Although you could enter the string of numbers, it is much easier to use the enumerated values. See the ROLE='italic'ocrxxxxROLE='italic' Clipboard constants for a description of the accepted data formats.REMAP='Body'To build a registration structure, use REGFORMAT within the BEGIN_REGISTRATION and END_REGISTRATION macros in a registration macro table. Any formats registered using REGFORMAT are also registered automatically on the Windows Clipboard. You can register your own formats by inserting a string indicating your own format. For example, FORMAT="LINESPECIFIC"REGFORMAT(2, "ANewFormat", ocrContent, ocrIStorage, ocrGetSet)REMAP='Body'To provide names for your own formats, call ROLE='italic'TOleFrame::AddUserFormatName. This function associates a clipboard data format with the description of the data format as it appears to users in the Help text of the Paste Special dialog box. See alsoREMAP='BodyNoLead'BEGIN_REGISTRATION macro, ocrxxxx Clipboard constants, ocrxxxx medium constants, TOleFrame::AddUserFormatNameREGSTATUS macroMOREINFO="NONE"locale.hFORMAT="LINESPECIFIC"REGSTATUS(a,f)REMAP='BodyNoLead'The REGSTATUS macro indicates the way in which the view (referred to as the "aspect") of an object behaves and has the following arguments:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='20*'COLNAME='C2' COLWIDTH='354*'VALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Body'ROLE='italic'aCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Body'The content of the object.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Body'ROLE='italic'fCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Body'One of the ROLE='italic'ocrxxxxROLE='italic' Object Status enum values indicating the status of the object, for example,ROLE='italic' ocrOnlyIconic, ocrActivateWhenVisible, and so on.REMAP='Body'The object can be defined as having many different aspects of behavior. For example, an object registered as ROLE='italic'ocrActivateWhenVisible is active whenever it is visible. REMAP='Body'Servers that support linked and embedded objects use this macro to register the behavior an object exhibits when it is viewed. This behavior is referred to as the aspect status or simply aspect of the object.REMAP='Body'The sample program, REGTEST.CPP, on your distribution disk includes the following REGSTATUS macros:FORMAT="LINESPECIFIC"REGSTATUS(all, ocrNoSpecialRendering)
REGSTATUS(icon, ocrOnlyIconic)REMAP='Body'The first macro registers flags for all aspects of the object while the second macro registers flags for the iconic aspect of the object. (The icon used in the REGSTATUS macro must have been defined and registered.)See alsoREMAP='BodyNoLead'BEGIN_REGISTRATION macro, REGICON macro, ocrxxxx object status constantsREGVERBOPT macroMOREINFO="NONE"locale.hFORMAT="LINESPECIFIC"REGVERBOPT(v,mf,sf)REMAP='BodyNoLead'Registers the actions a server can perform on its objects. The arguments control how the verbs appear on the container's menu. The macro has the following arguments:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='20*'COLNAME='C2' COLWIDTH='354*'VALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Body'ROLE='italic'vCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Body'The verb key, for example, ROLE='italic'verb1 or ROLE='italic'verb2.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Body'ROLE='italic'mfCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Body'A value that describes how a server's verbs appear on the container's menu. This value must be one of the ROLE='italic'ocrxxxx Verb Menu constants, for example, ROLE='italic'ocrGrayed, which makes the verb appear gray on the menu and disables the verb. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Body'ROLE='italic'sfCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Body'A value that tells the container how to use the verb. This value must be one of the ROLE='italic'ocrxxxxROLE='italic' VerbROLE='italic' Attribute constants, for example, ROLE='italic'ocrNeverDirties, which indicates that the verb never modifies the object. These options can be ORed together.REMAP='Body'The sample program, REGTEST.CPP, on your distribution disk includes the following REGVERBOPT macro:FORMAT="LINESPECIFIC"REGVERBOPT(verb1, ocrGrayed, ocrOnContainerMenu | ocrNeverDirties)REMAP='Body'These verb options are optional and are only valid if the verb is registered in the document registration table for the server application. To register the verb, useFORMAT="LINESPECIFIC"REGDATA(verb1, "&Open")See alsoREMAP='BodyNoLead'BEGIN_REGISTRATION macro, ocrxxxx verb attribute constants, ocrxxxx verb menu constantsREGICON macroMOREINFO="NONE"locale.hFORMAT="LINESPECIFIC"REGICON(i)REMAP='BodyNoLead'Registers an icon so that the object is displayed as an icon. The sample program, REGTEST.CPP, on your distribution disk, includes the following REGICON macro:FORMAT="LINESPECIFIC"REGICON(1)REMAP='Body'The macro takes one argument, the index of the default icon to use. This argument indicates which icon is to be retrieved from the resource file when the document is displayed as an icon.See alsoREMAP='BodyNoLead'BEGIN_REGISTRATION macroREGDOCFLAGS macroMOREINFO="NONE"locale.hFORMAT="LINESPECIFIC"REGDOCFLAGS(i)REMAP='BodyNoLead'Indicates options for the document and defines the characteristics of document templates. The REGDOCFLAGS arguments tell the document manager how to display and manage the documents and views. Although, for backward compatibility, you can still pass this information to the document template using the separate parameters in the constructor, newer programs should use the REGFORMAT, REGDOCFLAGS, and REGDATA macros to create a document template object. REMAP='Body'The sample program, REGTEST.CPP, on your distribution disk, includes the following REGDOCFLAGS macro declaration within the document registration structure:FORMAT="LINESPECIFIC"BEGIN_REGISTRATION(mytplreg)
REGDATA(description,"My Sample Draw View")
REGDATA(filter, "*.drw;*.drx")
REGDATA(defaultext, "dvw")
REGDATA(directory, 0)
REGDOCFLAGS(dtAutoDelete | dtUpdateDir | dtCreatePrompt)
END_REGISTRATIONREMAP='Body'The arguments to REGDOCFLAGS define the document's characteristics. In the case of ROLE='italic'dtAutoDelete, for example, the document is deleted when the last view is deleted.REMAP='Body'Certain documents must be registered with different options. For example, to register a Doc/View application used with a ROLE='italic'TOleDocument object, you must specify the ROLE='italic'dtRegisterExt and ROLE='italic'dtAutoOpen flags. If this is a Doc/View application, and if the document template is not hidden, you must register the description, filter, and extension.See alsoREMAP='Body'BEGIN_REGISTRATION macro, REGFORMAT macro, REGDATA macro, dt document template constantsREGISTRATION_FORMAT_BUFFER macroMOREINFO="NONE"locale.hFORMAT="LINESPECIFIC"REGISTRATION_FORMAT_BUFFER(n);REMAP='BodyNoLead'Allocates space in memory (ROLE='italic'n) for the expansion of the values passed in the registration macros that control the formatting of a document or application. Generally, allow 10 bytes for each value passed in the REGFORMAT macro in addition to the space required for strings passed in the REGSTATUS, REGVERBOPT, REGICON, or REGFORMAT macros. For example, the sample program, STEP15.CPP uses this macro to declare 100 bytes of space:FORMAT="LINESPECIFIC"REGISTRATION_FORMAT_BUFFER(100);See alsoREMAP='BodyNoLead'REGFORMAT macro, REGSTATUS macroTDocTemplate classMOREINFO="NONE"doctpl.hREMAP='Body'ROLE='italic'TDocTemplate is an abstract base class that contains document template functionality. This document template class defines several functions that make it easier for you to use documents and their corresponding views. ROLE='italic'TDocTemplate classes create documents and views from resources and handle document naming and browsing. The document manager maintains a list of the current template objects. Each document type requires a separate document template.Public member functionsClearFlagFORMAT="LINESPECIFIC"void ClearFlag(long flag);REMAP='BodyNoLead'Clears a document template constant.See alsoREMAP='BodyNoLead'dt document template constantsCloneFORMAT="LINESPECIFIC"virtual TDocTemplate* Clone(TModule* module, TDocTemplate*& phead=DocTemplateStaticHead)=0;REMAP='BodyNoLead'Makes a copy of a document template.ConstructDocFORMAT="LINESPECIFIC"virtual TDocument* ConstructDoc(TDocument* parent = 0) = 0;REMAP='BodyNoLead'A pure virtual function that must be defined in a derived class, ROLE='italic'ConstructDoc creates a document specified by the document template class. Use this function in place of ROLE='italic'CreateDoc.See alsoREMAP='BodyNoLead'TDocManager::CreateDocConstructViewFORMAT="LINESPECIFIC"virtual TView* ConstructView(TDocument& doc = 0) = 0;REMAP='BodyNoLead'A pure virtual function that must be defined in a derived class, ROLE='italic'ConstructView creates the view specified by the document template class. See alsoREMAP='BodyNoLead'TDocManager::CreateViewCreateDocFORMAT="LINESPECIFIC"virtual TDocument* CreateDoc(const char far* path, long flags = 0)= 0;REMAP='BodyNoLead'An obsolete pure virtual function that must be defined in a derived class, ROLE='italic'CreateDoc creates a document based on the directory path (ROLE='italic'path) and the specified template and ROLE='italic'flags value. If the ROLE='italic'path is 0 and the new flag (ROLE='italic'dtNewDoc) is not set, the dialog box is displayed. This function is obsolete: use ROLE='italic'ConstructDoc instead.See alsoREMAP='BodyNoLead'TDocManager::CreateAnyDoc, TDocTemplate::ConstructDocCreateViewFORMAT="LINESPECIFIC"virtual TView* CreateView(TDocument& doc, long flags) = 0;REMAP='BodyNoLead'A pure virtual function that must be defined in a derived class, ROLE='italic'CreateView creates the view specified by the document template class. This function is obsolete: use ROLE='italic'ConstructView instead.See alsoREMAP='BodyNoLead'TDocManager::CreateAnyView, TDocTemplate::ConstructViewGetDefaultExtFORMAT="LINESPECIFIC"const char far* GetDefaultExt( ) const;REMAP='BodyNoLead'Gets the default extension to use if the user has entered the name of a file without any extension. If there is no default extension, ROLE='italic'GetDefaultExt contains 0.GetDescriptionFORMAT="LINESPECIFIC"const char far* GetDescription( ) const;REMAP='BodyNoLead'Gets the template description to put in the file-selection list box or the File|New menu-selection list box.GetDirectoryFORMAT="LINESPECIFIC"const char far* GetDirectory( ) const;REMAP='BodyNoLead'Gets the directory path to use when searching for matching files. This will get updated if a file is selected and the ROLE='italic'dtUpdateDir flag is set.REMAP='Body'GetDocManagerFORMAT="LINESPECIFIC"TDocManager* GetDocManager( ) const;REMAP='BodyNoLead'Points to the document manager.GetFileFilterFORMAT="LINESPECIFIC"const char far* GetFileFilter( ) const;REMAP='BodyNoLead'Gets any valid document matching pattern to use when searching for files.GetFlagsFORMAT="LINESPECIFIC"long GetFlags( ) const;REMAP='BodyNoLead'Gets the document template constants, which indicate how the document is created and opened.See alsoREMAP='BodyNoLead'dt xxxx document template constantsGetModuleFORMAT="LINESPECIFIC"TModule*& GetModule( );REMAP='BodyNoLead'Returns a module pointer.GetNextTemplateFORMAT="LINESPECIFIC"TDocTemplate* GetNextTemplate( ) const;FORMAT="LINESPECIFIC"Gets the next template in the list of templates.GetRegListFORMAT="LINESPECIFIC"TRegList& GetRegList( ) const;REMAP='BodyNoLead'Gets the program's registration table, which contains the program's current program ID, class ID, executable path, as well as other attributes used to construct a ROLE='italic'TDocTemplate object. See the entry for Registration macros in this manual for information about how the registration macros generate registration information.GetViewNameFORMAT="LINESPECIFIC"virtual const char far* GetViewName( ) = 0;REMAP='BodyNoLead'A pure virtual function that must be defined in a derived class, ROLE='italic'GetViewName gets the name of the view associated with the template.InitDocFORMAT="LINESPECIFIC"TDocument* InitDoc(TDocument* doc, const char far* path, long flags);REMAP='BodyNoLead'ROLE='italic'InitDoc is called only from the subclass so that ROLE='italic'CreateDoc can continue its document processing.See alsoREMAP='BodyNoLead'TDocTemplate::CreateDocInitViewFORMAT="LINESPECIFIC"TView* InitView(TView* view);REMAP='BodyNoLead'Called only from the subclass to continue ROLE='italic'CreateView processing.See alsoREMAP='BodyNoLead'TDocTemplate::CreateViewIsFlagSetFORMAT="LINESPECIFIC"bool IsFlagSet(long flag);REMAP='BodyNoLead'Returns nonzero if the document template flag is set.See alsoREMAP='BodyNoLead'dt xxxx document template constantsIsMyKindOfDocFORMAT="LINESPECIFIC"virtual TDocument* IsMyKindOfDoc(TDocument& doc)=0;REMAP='BodyNoLead'A pure virtual function that must be defined in a derived class, ROLE='italic'IsMyKindOfDoc tests if the template belongs to the same class as the document or to a derived class.See alsoREMAP='BodyNoLead'TDocTemplateT::IsMyKindOfDocIsMyKindOfViewFORMAT="LINESPECIFIC"virtual TView* IsMyKindOfView(TView& view) = 0;REMAP='BodyNoLead'A pure virtual function that must be defined in a derived class, ROLE='italic'IsMyKindofView tests if the template belongs to the same class as the view or to a derived class.IsStaticFORMAT="LINESPECIFIC"bool IsStatic( );REMAP='BodyNoLead'Returns ROLE='bold'true if the template is statically constructed.IsVisibleFORMAT="LINESPECIFIC"bool IsVisible( );REMAP='BodyNoLead'Indicates whether the document can be displayed in the file selection dialog box. A document is visible if ROLE='italic'dtHidden isn't set and ROLE='italic'Description isn't 0.SelectSaveFORMAT="LINESPECIFIC"bool SelectSave(TDocument& doc);REMAP='BodyNoLead'Prompts the user to select a file name for the document. Filters out read-only files.SetDefaultExtFORMAT="LINESPECIFIC"void SetDefaultExt(const char far*);REMAP='BodyNoLead'Sets the default extension to use if the user has entered the name of a file without any extension. If there is no default extension, ROLE='italic'SetDefaultExt contains 0.SetDirectoryFORMAT="LINESPECIFIC"void SetDirectory(const char far*);FORMAT="LINESPECIFIC"void SetDirectory(const char far*, int len);REMAP='BodyNoLead'Sets the directory path to use when searching for matching files. This will get updated if a file is selected and the ROLE='italic'dtUpdateDir flag is set.See alsoREMAP='BodyNoLead'TDocTemplate::GetDirectorySetDocManagerFORMAT="LINESPECIFIC"void SetDocManager(TDocManager* dm);REMAP='BodyNoLead'Sets the current document manager to the argument ROLE='italic'dm.SetFileFilterFORMAT="LINESPECIFIC"void SetFileFilter(const char far*);REMAP='BodyNoLead'Sets the valid document matching pattern to use when searching for files.SetFlagFORMAT="LINESPECIFIC"void SetFlag(long flag);REMAP='BodyNoLead'Sets the document template constants, which indicate how the document is created and opened.See alsoREMAP='BodyNoLead'dtxxxx document template constantsSetModuleFORMAT="LINESPECIFIC"TModule*& SetModule( );REMAP='BodyNoLead'Sets a module pointer.Protected constructor and destructorConstructor FORMAT="LINESPECIFIC"TDocTemplate(TRegList& regList, TModule*& module, TDocTemplate*& phead):REMAP='BodyNoLead'Uses the information in the registration table (ROLE='italic'regList) to construct a ROLE='italic'TDocTemplate with the specified file description, file filter pattern, search path for viewing the directory, default file extension, and flags representing the view and creation options from the registration list. Then, adds this template to the document manager's template list. If the document manager is not yet constructed, adds the template to a static list, which the document manager will later add to its template list. REMAP='Body'The argument, ROLE='italic'module, specifies the ROLE='italic'TModule of the caller. ROLE='italic'phead specifies the template head for the caller's module. See the Registration macros entry in this manual for information about the registration macros that generate a ROLE='italic'TRegList, which contains the attributes used to create a ROLE='italic'TDocTemplate object.DestructorFORMAT="LINESPECIFIC"~TDocTemplate( );REMAP='BodyNoLead'Destroys a ROLE='italic'TDocTemplate object and frees the data members (ROLE='italic'FileFilter, ROLE='italic'Description, ROLE='italic'Directory, and ROLE='italic'DefaultExt). The Destructor is called only when no views or documents are associated with the template. Instead of calling this Destructor directly, use the ROLE='italic'Delete member function.See alsoREMAP='BodyNoLead'dt xxxx document template constantsTDocTemplateT<D,V> class MOREINFO="NONE"doctpl.hREMAP='BodyNoLead'To register the associated document and view classes, a parameterized subclass, ROLE='italic'TDocTemplateT<D,V>, is used to construct a particular document and view, where ROLE='italic'D represents the document class and ROLE='italic'V represents the view class. The parameterized template classes are created using a macro, which also generates the associated streamable support. The document and view classes are provided through the use of a parameterized subclass. The template class name is used as a ROLE='bold'typedef for the parameterized class. For example,FORMAT="LINESPECIFIC"DEFINE_DOC_TEMPLATE_CLASS(TFileDocument, TEditView, MyEditFile)REMAP='Body'You can instantiate a document template using either a static member or an explicit construction. For example,FORMAT="LINESPECIFIC"MyEditFile et1("Edit text files",
"*.txt","D:\\doc",".TXT"",dtNoAutoView);
new MyEditFile(.....)REMAP='Body'When a document template is created, the document manager (ROLE='italic'TDocManager) registers the template. When the document template's delete function is called to delete the template, it is no longer visible to the user. However, it remains in memory as long as any documents still use it.Public constructorsConstructorsFORMAT="LINESPECIFIC"TDocTemplateT(const char far* filt, const char far* desc, const char far* dir, const char far* ext, long flags = 0, TModule*& module = ::Module, TDocTemplate*& phead = DocTemplateStaticHead);REMAP='BodyNoLead'Constructs a ROLE='italic'TDocTemplateT with the specified file description (ROLE='italic'desc), file filter pattern (ROLE='italic'filt), search path for viewing the directory (ROLE='italic'dir), default file extension (ROLE='italic'ext), and flags representing the view and creation options (ROLE='italic'flags). ROLE='italic'module, which is instantiated and exported directly from every executable module, can be used to access the current instance.FORMAT="LINESPECIFIC"TDocTemplateT(TRegList& regList, TModule*& module = ::Module, TDocTemplate*& phead = DocTemplateStaticHead);REMAP='BodyNoLead'Constructs a ROLE='italic'TDocTemplateT using the registration table to determine the file filter pattern, search path for viewing the directory, default file extension, and flag values. See the entry in this manual for registration macros for more information about how the registration tables are created. ROLE='italic'module, which is instantiated and exported directly from every executable module, can be used to access the current instance.Public member functionsCloneFORMAT="LINESPECIFIC"TDocTemplateT* Clone(TModule* module, TDocTemplate*& phead = DocTemplateStaticHead;REMAP='BodyNoLead'Makes a copy of the ROLE='italic'TDocTemplateT object.CreateDocFORMAT="LINESPECIFIC"D* CreateDoc(const char far* path, long flags = 0);REMAP='BodyNoLead'ROLE='italic'CreateDoc creates a document of type ROLE='italic'D based on the directory path (ROLE='italic'path) and ROLE='italic'flags value.See alsoREMAP='BodyNoLead'TDocTemplate::CreateDocCreateViewFORMAT="LINESPECIFIC"TView* CreateView(TDocument& doc, long flags = 0);REMAP='BodyNoLead'ROLE='italic'CreateView creates the view specified by the document template class.See alsoREMAP='BodyNoLead'TDocManager::CreateAnyViewIsMyKindOfDocFORMAT="LINESPECIFIC"D* IsMyKindOfDoc(TDocument& doc);REMAP='BodyNoLead'ROLE='italic'IsMyKindOfDoc tests to see if the document (ROLE='italic'doc) is the same class as the template's document class or if the document is a derived class. If the template can't use the document, ROLE='italic'IsMyKIndOfDoc returns 0.See alsoREMAP='BodyNoLead'TDocTemplate::IsMyKindOfDocIsMyKindOfViewFORMAT="LINESPECIFIC"V* IsMyKindOfView(TView& view);REMAP='BodyNoLead'ROLE='italic'IsMyKindOfView tests to see if the view (ROLE='italic'view) is the same class as the template's view class or if the view is a derived class. If the template can't use the view, ROLE='italic'IsMyKIndOfView returns 0.GetViewNameFORMAT="LINESPECIFIC"virtual const char far* GetViewName( );REMAP='BodyNoLead'ROLE='italic'GetViewName gets the name of the view associated with the template.TDropInfo classMOREINFO="NONE"geometry.hREMAP='Body'ROLE='italic'TDropInfo is a simple class that supports file-name drag and drop operations using the WM_DROPFILES message. Each ROLE='italic'TDropInfo object has a private handle to the HDROP structure returned by the WM_DOPFILES message.Public constructorConstructorFORMAT="LINESPECIFIC"TDropInfo(HDROP handle);REMAP='BodyNoLead'Creates a ROLE='italic'TDropInfo object with ROLE='italic'Handle set to the given ROLE='italic'handle.Public member functionsDragFinishFORMAT="LINESPECIFIC"void DragFinish( );REMAP='BodyNoLead'Releases any memory allocated for the transferring of this ROLE='italic'TDropInfo object's files during drag operations.DragQueryFileFORMAT="LINESPECIFIC"uint DragQueryFile( uint index, char far* name, uint nameLen)REMAP='BodyNoLead'Retrieves the name of the file and related information for this ROLE='italic'i object. If ROLE='italic'index is set to -1 (0xFFFF), ROLE='italic'DragQueryFile returns the number of dropped files. This is equivalent to calling ROLE='italic'DragQueryFileCount.REMAP='Body'If ROLE='italic'index lies between 0 and the total number of dropped files for this object, ROLE='italic'DragQueryFile copies to the name buffer (of length ROLE='italic'nameLen bytes) the name of the dropped file that corresponds to ROLE='italic'index, and returns the number of bytes actually copied.REMAP='Body'If ROLE='italic'name is 0, ROLE='italic'DragQueryFile returns the required buffer size (in bytes) for the given ROLE='italic'index. This is equivalent to calling ROLE='italic'DragQueryFileNameLen.See alsoREMAP='BodyNoLead'TDropInfo::DragQueryPoint, TDropInfo::DragQueryFileCountDragQueryFileCountFORMAT="LINESPECIFIC"uint DragQueryFileCount( );REMAP='BodyNoLead'Returns the number of dropped files in this ROLE='italic'TDropInfo object. This call is equivalent to calling MOREINFO="NONE"DragQueryFile(-1, 0, 0).See alsoREMAP='BodyNoLead'TDropInfo::DragQueryFileDragQueryFileNameLenFORMAT="LINESPECIFIC"uint DragQueryFileNameLen(uint index)REMAP='BodyNoLead'Returns the length of the name of the file in this ROLE='italic'TDropInfo object corresponding to the given index. This call is equivalent to calling MOREINFO="NONE"DragQueryFile(index, 0, 0).See alsoREMAP='BodyNoLead'TDropInfo::DragQueryFileDragQueryPointFORMAT="LINESPECIFIC"bool DragQueryPoint(TPoint& point)REMAP='BodyNoLead'Retrieves the mouse pointer position when this object's files are dropped and copies the coordinates to the given ROLE='italic'point object. ROLE='italic'point refers to the window that received the WM_DROPFILES message. ROLE='italic'DragQueryPoint returns ROLE='bold'true if the drop occurs inside the window's client area, otherwise ROLE='bold'false.See alsoREMAP='BodyNoLead'TPoint classHDROP( )FORMAT="LINESPECIFIC"operator HDROP( );REMAP='BodyNoLead'Typecasting operator that returns ROLE='italic'Handle.TLangId typedefMOREINFO="NONE"locale.hFORMAT="LINESPECIFIC"typedef unsigned short TLangId;REMAP='BodyNoLead'Holds a language ID, a predefined number that represents a base language and dialect. For example, the number 409 represents American English. ROLE='italic'TLocaleString uses the language ID to find the correct translation for strings. See alsoREMAP='BodyNoLead'TLocaleStringTPoint classMOREINFO="NONE"geometry.hREMAP='Body'ROLE='italic'TPoint is a support class, derived from ROLE='italic'tagPOINT. Under Win32, the latter is defined asFORMAT="LINESPECIFIC"typedef struct tagPOINT {
int x;
int y;
};REMAP='Body'ROLE='italic'TPoint encapsulates the notion of a two-dimensional point that usually represents a screen position. ROLE='italic'TPoint inherits two data members, the coordinates ROLE='italic'x and ROLE='italic'y, from ROLE='italic'tagPOINT. Member functions and operators are provided for comparing, assigning, and manipulating points. Overloaded << and >> operators are declared as friends of ROLE='italic'TPoint, allowing chained insertion and extraction of ROLE='italic'TPoint objects with streams.Public constructorsConstructorsFORMAT="LINESPECIFIC"TPoint( );REMAP='BodyNoLead'The default ROLE='italic'TPoint constructor.FORMAT="LINESPECIFIC"TPoint(int _x, int _y);REMAP='BodyNoLead'Creates a ROLE='italic'TPoint object with the given coordinates.FORMAT="LINESPECIFIC"TPoint(const POINT& point);REMAP='BodyNoLead'Creates a ROLE='italic'TPoint object with ROLE='italic'x = point. x y = point.y.FORMAT="LINESPECIFIC"TPoint(const SIZE& size);REMAP='BodyNoLead'Creates a ROLE='italic'TPoint object with ROLE='italic'x = size.cx and y = size.cy.FORMAT="LINESPECIFIC"TPoint(uint32 dw);REMAP='BodyNoLead'Creates a ROLE='italic'TPoint object with ROLE='italic'x = LOWORD(dw) y = HIWORD(dw)).See alsoREMAP='BodyNoLead'TPOINT, TSIZEPublic member functionsOffsetFORMAT="LINESPECIFIC"TPoint& Offset(int dx, int dy);REMAP='BodyNoLead'Offsets this point by the given delta arguments. This point is changed to ROLE='italic'(x + dx, y + dy). Returns a reference to this point.See alsoREMAP='BodyNoLead'TPoint::OffsetBy, TPoint::operator +=OffsetByFORMAT="LINESPECIFIC"TPoint OffsetBy(int dx, int dy) const;REMAP='BodyNoLead'Calculates an offset to this point using the given displacement arguments. Returns the point (ROLE='italic'x + dx, y + dy). This point is not changed.See alsoREMAP='BodyNoLead'TPoint::operator +, TPoint::Offsetoperator +FORMAT="LINESPECIFIC"TPoint operator +(const TSize& size) const;REMAP='BodyNoLead'Calculates an offset to this point using the given size argument as the displacement. Returns the point (ROLE='italic'x + size.cx, y + size.cy). This point is not changed.See alsoREMAP='BodyNoLead'TPoint::OffsetBy, TSize classoperator -FORMAT="LINESPECIFIC"TPoint operator -(const TSize& size) const;FORMAT="LINESPECIFIC"TSize operator -(const TPoint& point) const;FORMAT="LINESPECIFIC"TPoint operator -( ) const;REMAP='BodyNoLead'The first version calculates a negative offset to this point using the given ROLE='italic'size argument as the displacement. Returns the point (ROLE='italic'x -size.cx, y - size.cy). This point is not changed.REMAP='Body'The second version calculates a distance from this point to the ROLE='italic'point argument. Returns the ROLE='italic'TSize object (ROLE='italic'x - point.x, y - point.y). This point is not changed.REMAP='Body'The third version returns the point (ROLE='italic'-x, -y). This point is not changed.See alsoREMAP='BodyNoLead'TPoint::operator +, TSize classoperator ==FORMAT="LINESPECIFIC"bool operator ==(const TPoint& other) const;REMAP='BodyNoLead'Returns true if this point is equal to the ROLE='italic'other point; otherwise returns false.See alsoREMAP='BodyNoLead'TPoint::operator !=operator +=FORMAT="LINESPECIFIC"TPoint& operator +=(const TSize& size);REMAP='BodyNoLead'Offsets this point by the given ROLE='italic'size argument. This point is changed to(ROLE='italic'x + size.cx, y + size.cy). Returns a reference to this point.See alsoREMAP='BodyNoLead'TPoint::Offset, TPoint::operator -=, TSize classoperator -=FORMAT="LINESPECIFIC"TPoint& operator -=(const TSize& size);REMAP='BodyNoLead'Negatively offsets this point by the given ROLE='italic'size argument. This point is changed to (ROLE='italic'x - size.cx, y - size.cy). Returns a reference to this point.See alsoREMAP='BodyNoLead'TPoint::Offset, TPoint::operator +=, TSize classoperator !=FORMAT="LINESPECIFIC"bool operator !=(const TPoint& other) const;REMAP='BodyNoLead'Returns ROLE='bold'false if this point is equal to the ROLE='italic'other point; otherwise returns ROLE='bold'true.See alsoREMAP='BodyNoLead'TPoint::operator ==operator >>FORMAT="LINESPECIFIC"ipstream& operator >>(ipstream& is, TPoint& p);REMAP='BodyNoLead'Extracts a ROLE='italic'TPoint object from persistent stream is, and copies it to ROLE='italic'p. Returns a reference to the resulting stream, allowing the usual chaining of << operations.FORMAT="LINESPECIFIC"istream& operator >>(istream& is, TPoint& p);REMAP='BodyNoLead'Extracts a ROLE='italic'TPoint object from stream is, and copies it to ROLE='italic'p. Returns a reference to the resulting stream, allowing the usual chaining of >> operations.See alsoREMAP='BodyNoLead'TPoint operator <<, class ipstreamoperator <<FORMAT="LINESPECIFIC"opstream& operator <<(opstream& os, const TPoint& p);REMAP='BodyNoLead'Inserts the given ROLE='italic'TPoint object ROLE='italic'p into persistent stream ROLE='italic'os. Returns a reference to the resulting stream, allowing the usual chaining of >> operations.FORMAT="LINESPECIFIC"ostream& operator <<(ostream& os, const TPoint& p);REMAP='BodyNoLead'ROLE='italic'Formats and inserts the given ROLE='italic'TPoint object ROLE='italic'p into the ROLE='italic'ostreamROLE='italic' os. The format is "(x,y)". Returns a reference to the resulting stream, allowing the usual chaining of << operations.See alsoREMAP='BodyNoLead'TPoint operator >>, ostreamTPointer<> classMOREINFO="NONE"geometry.hREMAP='Body'A small utility class that provides automatic destruction for objects constructed using ROLE='bold'new. ROLE='italic'TPointer is a parameterized class that holds a pointer to its parameterized type and overloads operators to behave like an object pointer. Assigning a pointer to a ROLE='italic'TPointer object eventually causes the object to be deleted when the function exits or when a ROLE='italic'TPointer goes out of scope or when another pointer is assigned to the same object. A ROLE='italic'TPointer object can be instantiated using one of the following equivalent methods:FORMAT="LINESPECIFIC"TPointer<SomeClass> p = new SomeClass;
TPointer<SomeClass> p(new SomeClass);
TPointer<SomeClass> p; p = new SomeClass;REMAP='Body'To remove the object, assign 0 to the pointer.Public constructorsConstructorsFORMAT="LINESPECIFIC"TPointer( ) : TPointerBase<T>( );REMAP='BodyNoLead'Default constructor in which ROLE='italic'p is initialized to 0.FORMAT="LINESPECIFIC"TPointer(T* pointer) : TPointerBase<T>(pointer);REMAP='BodyNoLead'Initialized constructor where ROLE='italic'p is initialized to ROLE='italic'pointer.Public member functionsoperator *FORMAT="LINESPECIFIC"T& operator *( );REMAP='BodyNoLead'Overloaded type conversion operator that casts its argument to a pointer to the type passed in.operator T*FORMAT="LINESPECIFIC"operator T*( );REMAP='BodyNoLead'Overloaded type conversion operator that allows the ROLE='italic'TPointer object to be passed as a function argument or assigned to a variable as if it were a pointer.operator =FORMAT="LINESPECIFIC"T* operator =(T* src);REMAP='BodyNoLead'Assignment operator ROLE='italic'T* is assigned to ROLE='italic'p.FORMAT="LINESPECIFIC"T* operator =(const TPointer<T>& src);REMAP='BodyNoLead'Assignment operator used when ROLE='italic'r is a const reference to ROLE='italic'TPointer of ROLE='italic'T. This operator saves converting if another pointer object is used.operator ->FORMAT="LINESPECIFIC"T* operator ->( );REMAP='BodyNoLead'Provides access to the pointer.TProcInstance classMOREINFO="NONE"geometry.hREMAP='Body'Designed for Win16 applications, ROLE='italic'TProcInstance handles creating and freeing an instance thunk, a piece of code created for use with exported callback functions. (A callback function is a function that exists within a program but is called from outside the program by a Windows library routine, for example, a dialog box function.)REMAP='Body'For Win32 applications, ROLE='italic'TProcInstance is non-functional. The address returned from ROLE='italic'TProcInstance can be passed as a parameter to callback functions, window subclassing functions, or Windows dialog box functions.REMAP='Body'See the Windows API online Help for more information about ROLE='italic'MakeProcInstance, which creates an instance thunk for the function and ROLE='italic'FreeProcInstance, which frees an instance thunk. For more information about exporting callback functions, see the ROLE='italic'Borland C++ Programmer's Guide.Public constructor and destructorConstructor FORMAT="LINESPECIFIC"TProcInstance(FARPROC p);REMAP='BodyNoLead'Makes a ROLE='italic'TProcInstance, passing ROLE='italic'p as the address of the procedure. Under Win16, calls ::ROLE='italic'MakeProcInstance to make an instance thunk for ROLE='italic'p. Under Win32, the constructor just saves ROLE='italic'p.DestructorFORMAT="LINESPECIFIC"~TProcInstance( )REMAP='BodyNoLead'Under WIN16 frees the instance thunk.See alsoREMAP='BodyNoLead'::MakeProcInstance (Windows API), ::FreeProcInstance (Windows API)Public member functionFARPROCFORMAT="LINESPECIFIC"operator FARPROC( );REMAP='BodyNoLead'Under WIN16, returns the instance thunk. Under Win32, returns ROLE='italic'p from the constructor.TRect classMOREINFO="NONE"geometry.hREMAP='Body'ROLE='italic'TRect is a mathematical class derived from ROLE='italic'tagRect. The ROLE='italic'tagRect struct is defined asFORMAT="LINESPECIFIC"struct tagRECT {
int left;
int top;
int right;
int bottom;
};REMAP='Body'ROLE='italic'TRect encapsulates the properties of rectangles with sides parallel to the x- and y-axes. In ObjectWindows, these rectangles define the boundaries of windows, boxes, and clipping regions. ROLE='italic'TRect inherits four data members from ROLE='italic'tagRectROLE='italic' left, ROLE='italic'top, ROLE='italic'right, and ROLE='italic'bottom. These represent the top left and bottom right (ROLE='italic'x, ROLE='italic'y) coordinates of the rectangle. Note that ROLE='italic'x increases from left to right, and ROLE='italic'y increases from top to bottom.REMAP='Body'ROLE='italic'TRect places no restrictions on the relative positions of top left and bottom right, so it is legal to have ROLE='italic'left > right and ROLE='italic'top > bottom. However, many manipulationsname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'such as determining width and height, and forming unions and intersectionsname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'are simplified by normalizing the ROLE='italic'TRect objects involved. Normalizing a rectangle means interchanging the corner point coordinate values so that ROLE='italic'left < right and ROLE='italic'top < bottom. Normalization does not alter the physical properties of a rectangle. myRect.Normalized creates normalized copy of ROLE='italic'myRect without changing myRect, while ROLE='italic'myRect.Normalize changes ROLE='italic'myRect to a normalized format. Both members return the normalized rectangle.REMAP='Body'ROLE='italic'TRect constructors are provided to create rectangles from either four ROLE='bold'ints, two ROLE='italic'TPoint objects, or one ROLE='italic'TPoint and one ROLE='italic'TSize object. In the latter case, the ROLE='italic'TPoint object specifies the top left point (also known as the rectangle's origin) and the ROLE='italic'TSize object supplies the width and height of the rectangle. Member functions perform a variety of rectangle tests and manipulations. Overloaded << and >> operators allow chained insertion and extraction of ROLE='italic'TRect objects with streams.Public constructorsConstructorsFORMAT="LINESPECIFIC"TRect( );REMAP='BodyNoLead'The default constructor.FORMAT="LINESPECIFIC"TRect(const RECT far& rect);REMAP='BodyNoLead'Copies the given ROLE='italic'rect to this object.FORMAT="LINESPECIFIC"TRect(int _left, int _top, int _right, int _bottom);REMAP='BodyNoLead'Creates a rectangle with the given values.FORMAT="LINESPECIFIC"TRect(const TPoint& upLeft, const TPoint& loRight);REMAP='BodyNoLead'Creates a rectangle with the given top left and bottom right points.FORMAT="LINESPECIFIC"TRect(const TPoint& origin, const TSize& extent);REMAP='BodyNoLead'Creates a rectangle with its origin (top left) at ROLE='italic'origin, width at ROLE='italic'extent.cx, height at ROLE='italic'extent.cy.See alsoREMAP='BodyNoLead'TPoint class, TSize classPublic member functionsAreaFORMAT="LINESPECIFIC"long Area( ) const;REMAP='BodyNoLead'Returns the area of this rectangle.See alsoREMAP='BodyNoLead'TRect::SizeBottomLeftFORMAT="LINESPECIFIC"TPoint BottomLeft( ) const;REMAP='BodyNoLead'Returns the ROLE='italic'TPoint object representing the bottom left corner of this rectangle.See alsoREMAP='BodyNoLead'TRect::TopLeft, TRect::TopRight, TRect::BottomRight, TPointBottomRightFORMAT="LINESPECIFIC"const TPoint& BottomRight( ) const;FORMAT="LINESPECIFIC"TPoint& BottomRight( );REMAP='BodyNoLead'Returns the ROLE='italic'TPoint object representing the bottom right corner of this rectangle.See alsoREMAP='BodyNoLead'TRect::TopRight, TRect::BottomLeft, TRect::TopLeft, TPoint classBottomRightFORMAT="LINESPECIFIC"const TPoint& BottomRight( ) const;FORMAT="LINESPECIFIC"TPoint& BottomRight( );REMAP='BodyNoLead'Returns the ROLE='italic'TPoint object representing the bottom right corner of this rectangle.See alsoREMAP='BodyNoLead'TRect::TopRight, TRect::BottomLeft, TRect::TopLeft, TPoint classContainsFORMAT="LINESPECIFIC"bool Contains(const TPoint& point) const;REMAP='BodyNoLead'Returns ROLE='bold'true if the given ROLE='italic'point lies within this rectangle; otherwise, it returns ROLE='bold'false. If ROLE='italic'point is on the left vertical or on the top horizontal borders of the rectangle, ROLE='italic'Contains also returns true, but if ROLE='italic'point is on the right vertical or bottom horizontal borders, ROLE='italic'Contains returns false.FORMAT="LINESPECIFIC"bool Contains(const TRect& other) const;REMAP='BodyNoLead'Returns ROLE='bold'true if the other rectangle lies on or within this rectangle; otherwise, it returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TRect::Touches, TPoint class, TRect classHeightFORMAT="LINESPECIFIC"int Height( ) const;REMAP='BodyNoLead'Returns the height of this rectangle (ROLE='italic'bottom - top).See alsoREMAP='BodyNoLead'TRect::WidthInflateFORMAT="LINESPECIFIC"TRect& Inflate(int dx, int dy);FORMAT="LINESPECIFIC"TRect& Inflate(const TSize& delta);REMAP='BodyNoLead'Inflates a rectangle inflated by the given delta arguments. In the first version, the top left corner of the returned rectangle is (ROLE='italic'left - dx, top - dy), while its bottom right corner is (ROLE='italic'right + dx, bottom + dy). In the second version the new corners are (ROLE='italic'left - size.cx, top - size.cy) and (ROLE='italic'right + size.cx, bottom + size.cy).See alsoREMAP='BodyNoLead'TRect class, TSize classInflatedByFORMAT="LINESPECIFIC"TRect InflatedBy(int dx, int dy) const;FORMAT="LINESPECIFIC"TRect InflatedBy(const TSize& size) const;REMAP='BodyNoLead'Returns a rectangle inflated by the given delta arguments. In the first version, the top left corner of the returned rectangle is (ROLE='italic'left - dx, top - dy), while its bottom right corner is (ROLE='italic'right + dx, bottom + dy). In the second version the new corners are (ROLE='italic'left - size.cx, top - size.cy) and (ROLE='italic'right + size.cx, bottom + size.cy). The calling rectangle object is unchanged.See alsoREMAP='BodyNoLead'TRect::OffsetBy, TRect class, TSize classIsEmptyFORMAT="LINESPECIFIC"bool IsEmpty( ) const;REMAP='BodyNoLead'Returns ROLE='bold'true ifROLE='italic' left >= right or ROLE='italic'top >= bottom; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TRect::SetEmpty, TRect::IsNullIsNullFORMAT="LINESPECIFIC"bool IsNull( ) const;REMAP='BodyNoLead'Returns ROLE='bold'true if left, ROLE='italic'right, top, and ROLE='italic'bottom are all 0; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TRect::IsEmpty, TRect::SetEmptyNormalizeFORMAT="LINESPECIFIC"TRect& Normalize( );REMAP='BodyNoLead'Normalizes this rectangle by switching the ROLE='italic'left and ROLE='italic'right data member values if ROLE='italic'left > ROLE='italic'right, and switching the ROLE='italic'top and ROLE='italic'bottom data member values if ROLE='italic'top > ROLE='italic'bottom. Normalize returns the normalized rectangle. A valid but nonnormal rectangle might have ROLE='italic'left > ROLE='italic'right and/or ROLE='italic'top > ROLE='italic'bottom. In such cases, many manipulations (such as determining width and height) become unnecessarily complicated. Normalizing a rectangle means interchanging the corner point values so that ROLE='italic'left < ROLE='italic'right and ROLE='italic'top < ROLE='italic'bottom. The physical properties of a rectangle are unchanged by this process.See alsoREMAP='BodyNoLead'TRect::Normalized, TRect classNormalizedFORMAT="LINESPECIFIC"TRect Normalized( ) const;REMAP='BodyNoLead'Returns a normalized rectangle with the top left corner at (Min(ROLE='italic'left, right), Min(ROLE='italic'top, bottom)) and the bottom right corner at (Max(ROLE='italic'left, right), Max(ROLE='italic'top, bottom)). The calling rectangle object is unchanged. A valid but nonnormal rectangle might have ROLE='italic'left > right and/or ROLE='italic'top > bottom. In such cases, many manipulations (such as determining width and height) become unnecessarily complicated. Normalizing a rectangle means interchanging the corner point values so thatROLE='italic' left < right andROLE='italic' top < bottom. The physical properties of a rectangle are unchanged by this process.REMAP='Body'Note that many calculations assume a normalized rectangle. Some Windows API functions behave erratically if an inside-out ROLE='italic'Rect is passed.See alsoREMAP='BodyNoLead'TRect::Normalize, TRectOffsetFORMAT="LINESPECIFIC"TRect& Offset(int dx, int dy);REMAP='BodyNoLead'Changes this rectangle so its corners are offset by the given delta values. The revised rectangle has a top left corner at (ROLE='italic'left + dx, top + dy) and a right bottom corner at (ROLE='italic'right + dx, bottom + dy). The revised rectangle is returned.See alsoREMAP='BodyNoLead'TRect::operator +, TRect::operator +=, TRect::OffsetByOffsetByFORMAT="LINESPECIFIC"TRect OffsetBy(int dx, int dy) const;REMAP='BodyNoLead'Returns a rectangle with the corners offset by the given delta values. The returned rectangle has a top left corner at (ROLE='italic'left + dx, top + dy) and a right bottom corner at (ROLE='italic'right + dx, bottom + dy).See alsoREMAP='BodyNoLead'TRect::operator +operator +FORMAT="LINESPECIFIC"TRect operator +(const TSize& size) const;REMAP='BodyNoLead'Returns a rectangle offset positively by the delta values given size. The returned rectangle has a top left corner at (ROLE='italic'left + size.x, top + size.y) and a right bottom corner at (ROLE='italic'right + size.x, bottom + size.y). The calling rectangle object is unchanged.See alsoREMAP='BodyNoLead'TRect::OffsetBy, TSize classoperator -FORMAT="LINESPECIFIC"TRect operator -(const TSize& size) const;REMAP='BodyNoLead'Returns a rectangle offset negatively by the delta values given size. The returned rectangle has a top left corner at (ROLE='italic'left - size.cx, top - size.cy) and a right bottom corner at (ROLE='italic'right - size.cx, bottom - size.cy). The calling rectangle object is unchanged.See alsoREMAP='BodyNoLead'TRect::OffsetBy, TSize classoperator &FORMAT="LINESPECIFIC"TRect operator &(const TRect& other) const;REMAP='BodyNoLead'Returns the intersection of this rectangle and the ROLE='italic'other rectangle. The calling rectangle object is unchanged. Returns a NULL rectangle if the two don't intersect.See alsoREMAP='BodyNoLead'TRect::operator |, TRect::operator&=operator |FORMAT="LINESPECIFIC"TRect operator |(const TRect& other) const;REMAP='BodyNoLead'Returns the union of this rectangle and the ROLE='italic'other rectangle. The calling rectangle object is unchanged.See alsoREMAP='BodyNoLead'TRect::operator &, TRect::operator|=operator ==FORMAT="LINESPECIFIC"bool operator ==(const TRect& other) const;REMAP='BodyNoLead'Returns ROLE='bold'true if this rectangle has identical corner coordinates to the ROLE='italic'other rectangle; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TRect::operator!=operator !=FORMAT="LINESPECIFIC"bool operator !=(const TRect& other) const;REMAP='BodyNoLead'Returns ROLE='bold'false if this rectangle has identical corner coordinates to the ROLE='italic'other rectangle; otherwise, returns ROLE='bold'true.See alsoREMAP='BodyNoLead'TRect::operator ==operator +=FORMAT="LINESPECIFIC"TRect& operator +=(const TSize& delta);REMAP='BodyNoLead'Changes this rectangle so its corners are offset by the given delta values,ROLE='italic' delta.x and ROLE='italic'delta.y. The revised rectangle has a top left corner at (ROLE='italic'left + delta.x, top + delta.y) and a right bottom corner at (ROLE='italic'right + delta.x, bottom + delta.y). The revised rectangle is returned.See alsoREMAP='BodyNoLead'TRect::operator +, TRect::OffsetBy, TRect::Offsetoperator -=FORMAT="LINESPECIFIC"TRect& operator -=(const TSize& delta);REMAP='BodyNoLead'Changes this rectangle so its corners are offset negatively by the given delta values, ROLE='italic'delta.x and ROLE='italic'delta.y. The revised rectangle has a top left corner at (ROLE='italic'left - delta.x, top - delta.y) and a right bottom corner at (ROLE='italic'right - delta.x, bottom - delta.y). The revised rectangle is returned.See alsoREMAP='BodyNoLead'TRect::operator -, TRect::operator+=, TRect::OffsetBy, TRect::Offsetoperator &=FORMAT="LINESPECIFIC"TRect& operator &=(const TRect& other);REMAP='BodyNoLead'Changes this rectangle to its intersection with the ROLE='italic'other rectangle. This rectangle object is returned. Returns a NULL rectangle if there is no intersection.See alsoREMAP='BodyNoLead'TRect::operator &, TRect::operator |=operator |=FORMAT="LINESPECIFIC"TRect& operator |=(const TRect& other);REMAP='BodyNoLead'Changes this rectangle to its union with the ROLE='italic'other rectangle. This rectangle object is returned.See alsoREMAP='BodyNoLead'TRect::operator |, TRect::operator&=operator >>FORMAT="LINESPECIFIC"ipstream& _BIDSFUNC operator >>(ipstream& is, TRect& r);REMAP='BodyNoLead'Extracts a ROLE='italic'TRect object from ROLE='italic'is, the given input stream, and copies it to ROLE='italic'r. Returns a reference to the resulting stream, allowing the usual chaining of >> operations.See alsoREMAP='BodyNoLead'TRect operator <<operator <<FORMAT="LINESPECIFIC"opstream& _BIDSFUNC operator <<(opstream& os, const TRect& r);REMAP='BodyNoLead'Inserts the given ROLE='italic'TRect object, ROLE='italic'r, into the ROLE='italic'opstream, ROLE='italic'os. Returns a reference to the resulting stream, allowing the usual chaining of << operations.FORMAT="LINESPECIFIC"ostream& _BIDSFUNC operator <<(ostream& os, const TRect& r);REMAP='BodyNoLead'Formats and inserts the given ROLE='italic'TRect object, ROLE='italic'r, into the ROLE='italic'ostream, ROLE='italic'os. The format is (ROLE='italic'r.left, ROLE='italic'r.top)(ROLE='italic'r.right, ROLE='italic'r.bottom). Returns a reference to the resulting stream and allows the usual chaining of << operations.See alsoREMAP='BodyNoLead'TRect operator >>operator TPoint*( )FORMAT="LINESPECIFIC"operator const TPoint*( ) const;FORMAT="LINESPECIFIC"operator TPoint*( )REMAP='Body'Type conversion operators converting the pointer to this rectangle to type pointer to ROLE='italic'TPoint.See alsoREMAP='BodyNoLead'TPoint classSetFORMAT="LINESPECIFIC"void Set(int _left, int _top, int _right, int _bottom);REMAP='BodyNoLead'Repositions and resizes this rectangle to the given values.SetEmptyFORMAT="LINESPECIFIC"void SetEmpty( );REMAP='BodyNoLead'Empties this rectangle by setting ROLE='italic'left, ROLE='italic'top, ROLE='italic'right, and ROLE='italic'bottom to 0.SetNullFORMAT="LINESPECIFIC"void SetNull( );REMAP='BodyNoLead'Sets the ROLE='italic'left, ROLE='italic'top, ROLE='italic'right, and ROLE='italic'bottom of the rectangle to 0.SizeFORMAT="LINESPECIFIC"TSize Size( ) const;REMAP='BodyNoLead'Returns a ROLE='italic'TSize object representing the width and height of this rectangle.See alsoREMAP='BodyNoLead'TSize classTopLeftFORMAT="LINESPECIFIC"const TPoint& TopLeft( ) const;FORMAT="LINESPECIFIC"TPoint& TopLeft( );REMAP='Body'Returns the ROLE='italic'TPoint object representing the top left corner of this rectangle.See alsoREMAP='BodyNoLead'TRect::TopRight, TRect::BottomLeft, TRect::BottomRight, TPoint classTopRightFORMAT="LINESPECIFIC"TPoint TopRight( ) const;REMAP='BodyNoLead'Returns the ROLE='italic'TPoint object representing the top right corner of this rectangle.See alsoREMAP='BodyNoLead'TRect::TopLeft, TRect::BottomLeft, TRect::BottomRightTouchesFORMAT="LINESPECIFIC"bool Touches(const TRect& other) const;REMAP='BodyNoLead'Returns ROLE='bold'true if the ROLE='italic'other rectangle shares any interior points with this rectangle; otherwise, returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TRect::ContainsWidthFORMAT="LINESPECIFIC"int Width( ) const;REMAP='BodyNoLead'Returns the width of this rectangle (ROLE='italic'right - ROLE='italic'left).See alsoREMAP='BodyNoLead'TRect::HeightTResId classMOREINFO="NONE"geometry.hREMAP='Body'A simple support class, ROLE='italic'TResId creates a resource ID object from either an integer or an actual string identifier. For example, ROLE='italic'TResId encapsulates the use of LPSTR (ROLE='bold'char_far*) as a resource identifier. This resource identifier can be passed to various Objectwindows classes. To handle these two different types of resource identifiers, ROLE='italic'TResId defines a conversion operator and provides two constructors that convert and use these native data types. One constructor accepts a 16-bit integer and the other accepts a character string.Public constructorsConstructorsFORMAT="LINESPECIFIC"TResId( );REMAP='BodyNoLead'The default ROLE='italic'TResId constructor. FORMAT="LINESPECIFIC"TResId(int resNum);REMAP='BodyNoLead'Creates a ROLE='italic'TResId object with the given ROLE='italic'resNum.FORMAT="LINESPECIFIC"TResId(const char far* resString);REMAP='BodyNoLead'Creates a ROLE='italic'TResId object with the given ROLE='italic'resString.Public member functionschar far*FORMAT="LINESPECIFIC"operator char far*( );REMAP='BodyNoLead'Typecasting operator that converts ROLE='italic'Id (a ROLE='italic'TResId private data member) to type ROLE='bold'char far* so that instances of ROLE='italic'TResId can be used in places where ROLE='bold'char far* data types are expected.IsStringFORMAT="LINESPECIFIC"bool IsString( ) const;REMAP='BodyNoLead'Returns ROLE='bold'true if this resource ID was created from a string; otherwise, returns ROLE='bold'false.Friend functionsoperator >>FORMAT="LINESPECIFIC"friend ipstream& operator >>(ipstream& is, TResId& id);REMAP='BodyNoLead'Extracts a ROLE='italic'TResId object from is (the given input stream), and copies it to ROLE='italic'id. Returns a reference to the resulting stream, allowing the usual chaining of >> operations.See alsoREMAP='BodyNoLead'TResId friend operator <<, ipstreamoperator <<FORMAT="LINESPECIFIC"friend opstream& operator <<(opstream& os, const TResId& id);REMAP='BodyNoLead'Inserts the given ROLE='italic'TResId object (ROLE='italic'id) into the opstream (ROLE='italic'os). Returns a reference to the resulting stream, allowing the usual chaining of << operations.FORMAT="LINESPECIFIC"friend ostream& operator <<(ostream& os, const TResId& id);REMAP='BodyNoLead'Formats and inserts the given ROLE='italic'TResId object (ROLE='italic'id) into the ostream (ROLE='italic'os). Returns a reference to the resulting stream, allowing the usual chaining of << operations.See alsoREMAP='BodyNoLead'TResId friend operator >>, ostream, opstreamTSize classMOREINFO="NONE"geometry.hREMAP='Body'ROLE='italic'TSize is a mathematical class derived from the structure ROLE='italic'tagSIZE. REMAP='Body'The ROLE='italic'tagSIZE struct is defined asFORMAT="LINESPECIFIC"struct tagSIZE {
int cx;
int cy;
};REMAP='Body'ROLE='italic'TSize encapsulates the notion of a two-dimensional quantity that usually represents a displacement or the height and width of a rectangle. ROLE='italic'TSize inherits the two data members cx and cy from ROLE='italic'tagSIZE. Member functions and operators are provided for comparing, assigning, and manipulating sizes. Overloaded << and >> operators allow chained insertion and extraction of ROLE='italic'TSize objects with streams.Public constructorsConstructorsFORMAT="LINESPECIFIC"TSize( );REMAP='BodyNoLead'The default ROLE='italic'TSize constructor.FORMAT="LINESPECIFIC"TSize(int dx, int dy);REMAP='BodyNoLead'Creates a ROLE='italic'TSize object with ROLE='italic'cx = ROLE='italic'dx and ROLE='italic'cy = ROLE='italic'dy.FORMAT="LINESPECIFIC"TSize(const POINT& point);REMAP='BodyNoLead'Creates a ROLE='italic'TSize object withROLE='italic' cx = point.x and ROLE='italic'cy = point.y.FORMAT="LINESPECIFIC"TSize(const SIZE& size);REMAP='BodyNoLead'Creates a ROLE='italic'TSize object with ROLE='italic'cx = ROLE='italic'size.ROLE='italic'cx and ROLE='italic'cy = ROLE='italic'size.ROLE='italic'cy.FORMAT="LINESPECIFIC"TSize(uint32 dw);REMAP='BodyNoLead'Creates a ROLE='italic'TSize object with ROLE='italic'cx = ROLE='italic'LOWORD(ROLE='italic'dw) and ROLE='italic'cy = ROLE='italic'HIWORD(ROLE='italic'dw)).See alsoREMAP='BodyNoLead'TPoint class, Size structPublic member functionsMagnitudeFORMAT="LINESPECIFIC"int Magnitude( ) const;REMAP='BodyNoLead'Returns the length of the diagonal of the rectangle represented by this object. The value returned is an ROLE='bold'int approximation to the square root of (ROLE='italic'cx + cy).operator +FORMAT="LINESPECIFIC"TSize operator +(const TSize& size) const;REMAP='BodyNoLead'Calculates an offset to this ROLE='italic'TSize object using the given ROLE='italic'size argument as the displacement. Returns the object (ROLE='italic'cx + size.cx, cy + size.cy). This ROLE='italic'TSize object is not changed.See alsoREMAP='BodyNoLead'TSize::operator -operator -FORMAT="LINESPECIFIC"TSize operator -(const TSize& size) const;REMAP='BodyNoLead'The first version calculates a negative offset to this ROLE='italic'TSize object using the given ROLE='italic'size argument as the displacement. Returns the point (ROLE='italic'cx - size.cx, cy - size.cy). This object is not changed.FORMAT="LINESPECIFIC"TSize operator -( ) const;REMAP='BodyNoLead'The second version returns the ROLE='italic'TSize object (ROLE='italic'-cx, -cy). This object is not changed.See alsoREMAP='BodyNoLead'TSize::operator +operator ==FORMAT="LINESPECIFIC"bool operator ==(const TSize& other) const;REMAP='BodyNoLead'Returns ROLE='bold'true if this size object is equal to the ROLE='italic'otherROLE='italic' TSize object; otherwise returns ROLE='bold'false.See alsoREMAP='BodyNoLead'TSize::operator !=operator !=FORMAT="LINESPECIFIC"bool operator !=(const TSize& other) const;REMAP='BodyNoLead'Returns ROLE='bold'false if this size object is equal to the ROLE='italic'other TSize object; otherwise returns ROLE='bold'true.See alsoREMAP='BodyNoLead'TSize::operator ==operator +=FORMAT="LINESPECIFIC"TSize& operator +=(const TSize& size);REMAP='BodyNoLead'Offsets this ROLE='italic'TSize object by the given ROLE='italic'size argument. This ROLE='italic'TSize object is changed to (ROLE='italic'cx + size.cx, cy + size.cy). Returns a reference to this object.See alsoREMAP='BodyNoLead'TSize::operator -=operator -=FORMAT="LINESPECIFIC"TSize& operator -=(const TSize& size);REMAP='BodyNoLead'Negatively offsets this ROLE='italic'TSize object by the given ROLE='italic'size argument. This object is changed to (ROLE='italic'cx - size.cx, cy - size.cy). Returns a reference to this object.See alsoREMAP='BodyNoLead'TSize::operator +=operator >>FORMAT="LINESPECIFIC"ipstream& operator >>(ipstream& is, TSize& s);REMAP='BodyNoLead'Extracts a ROLE='italic'TSize object from ROLE='italic'is, the given input stream, and copies it to ROLE='italic's. Returns a reference to the resulting stream, allowing the usual chaining of >> operations.See alsoREMAP='BodyNoLead'TSize operator <<, ipstreamoperator <<FORMAT="LINESPECIFIC"opstream& operator <<(opstream& os, const TSize& s);REMAP='BodyNoLead'Inserts the given ROLE='italic'TSize object (ROLE='italic's) into the opstream (ROLE='italic'os). Returns a reference to the resulting stream, allowing the usual chaining of << operations.FORMAT="LINESPECIFIC"ostream& operator <<(ostream& os, const TSize& s);REMAP='BodyNoLead'Formats and inserts the given ROLE='italic'TSize object (ROLE='italic's) into the ostream (ROLE='italic'os). The format is "(cx x cy)". Returns a reference to the resulting stream, allowing the usual chaining of << operations.See alsoREMAP='BodyNoLead'TSize operator >>, opstream, ostreamTXBase classMOREINFO="NONE"except.hREMAP='Body'Derived from ROLE='italic'xmsg, ROLE='italic'TXBase is the base class for ObjectWindows and ObjectComponents exception-handling classes. The ObjectWindows classes that handle specific kinds of exceptions, for example out-of-memory or invalid window exceptions are derived from ROLE='italic'TXOwl, which is in turn derived from ROLE='italic'TXBase. The ObjectComponents classes, ROLE='italic'TXOle and ROLE='italic'TXAuto, are derived directly from ROLE='italic'TXBase. REMAP='Body'ROLE='italic'TXBase contains the functions, ROLE='italic'Clone and ROLE='italic'Throw, which are overridden in all derived classes, as well as two constructors. The constructors increment,ROLE='italic' InstanceCount, TXBase's public data member, and the destructor decrements ROLE='italic'InstanceCount. REMAP='Body'See theROLE='italic' Borland C++ Library Reference for a description of ROLE='italic'xmsg, TXBase's parent class. See the ROLE='italic'ObjectWindows Programmer's Guide for information about how to use ROLE='italic'TXBase in your applications.See also REMAP='BodyNoLead'TXOwlPublic constructors and destructorConstructorsFORMAT="LINESPECIFIC"TXBase(const string& msg);REMAP='BodyNoLead'Calls the ROLE='italic'xmsg class's constructor that takes a string parameter and initializes ROLE='italic'xmsg with the value of the string parameter. FORMAT="LINESPECIFIC"TXBase(const TXBase& src);REMAP='BodyNoLead'Creates a copy of the ROLE='italic'TXBase object passed in the ROLE='italic'TXBase parameter.DestructorFORMAT="LINESPECIFIC"virtual ~TXBase;REMAP='BodyNoLead'Destroys the ROLE='italic'TXBase object and decrements the ROLE='italic'InstanceCount data memberSee alsoREMAP='Body'TXOwl public constructors and destructorPublic data memberInstanceCountFORMAT="LINESPECIFIC"static int InstanceCount;REMAP='BodyNoLead'Counts the number of ROLE='italic'TXBase and ROLE='italic'TXBase-derived objects existing in a single application.Public member functionsCloneFORMAT="LINESPECIFIC"virtual TXBase* Clone( );REMAP='BodyNoLead'Makes a copy of the exception object.ThrowFORMAT="LINESPECIFIC"virtual void Throw( );FORMAT="LINESPECIFIC"Throws the exception object. REMAP='NumAppendix'ID='X-32835' Windows API encapsulated functionsREMAP='Body'This appendix includes several tables listing encapsulated Windows API functions that take an HWND as the first argument. The tables are organized in the following manner:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='32*'COLNAME='C2' COLWIDTH='130*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ROLE='BOLD'TableCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LINKEND='X-41591' TYPE='XREF-TEXTCOPY'A.1COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Inline HWND functionsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LINKEND='X-16521' TYPE='XREF-TEXTCOPY'A.2COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Windows messagesCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LINKEND='X-30669' TYPE='XREF-TEXTCOPY'A.3COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Window dimensionsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LINKEND='X-39181' TYPE='XREF-TEXTCOPY'A.4COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Window propertiesCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LINKEND='X-19004' TYPE='XREF-TEXTCOPY'A.5COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Window placementCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LINKEND='X-38828' TYPE='XREF-TEXTCOPY'A.6COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Child window placementCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LINKEND='X-42369' TYPE='XREF-TEXTCOPY'A.7COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Window paintingCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LINKEND='X-38246' TYPE='XREF-TEXTCOPY'A.8COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Using scrolling and scroll barsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LINKEND='X-29822' TYPE='XREF-TEXTCOPY'A.9COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Parent and child windows with IDsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LINKEND='X-17821' TYPE='XREF-TEXTCOPY'A.10COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Menus and menu barsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LINKEND='X-31673' TYPE='XREF-TEXTCOPY'A.11COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Clipboard placementCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LINKEND='X-30875' TYPE='XREF-TEXTCOPY'A.12COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Timer operationsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LINKEND='X-25562' TYPE='XREF-TEXTCOPY'A.13COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Caret and cursor functionsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LINKEND='X-28170' TYPE='XREF-TEXTCOPY'A.14COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Registering hot keysCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LINKEND='X-40299' TYPE='XREF-TEXTCOPY'A.15COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Miscellaneous functionsREMAP='Body'Most of the encapsulated functions are implemented as inline functions that pass the HWindow member variable as the HWND argument. The remaining arguments are passed without changing their prototype.REMAP='Body'The other functions are static functions that return information regarding windows. These functions don't actually use HWindow as the argument because the HWND is either implied or the function returns the HWND. An HWND that serves as a handle to an window can be converted to a TWindow* by using ROLE='italic'GetWindowPtr( ).REMAP='Body'Note that in the scope of ROLE='italic'TWindow or derived class, all direct calls to the corresponding Windows versions of these functions must be globally scoped, as in ROLE='italic'::SendMessage( ).REMAP='Body'The functions in LINKEND='X-41591' TYPE='XREF-TEXTCOPY'Table A.1 allow a ROLE='italic'TWindow to be used as a HWND in Windows API calls.TOCENTRY="1"REMAP='TblCapApp'ID='X-41591'Encapsulated inline HWND functionsCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='55*'COLNAME='C2' COLWIDTH='106*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'NameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HWNDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'operator HWND ( ) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IsWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL IsWindow ( ) constREMAP='Body'The functions in LINKEND='X-16521' TYPE='XREF-TEXTCOPY'Table A.2 handle Window messages.TOCENTRY="1"REMAP='TblCapApp'ID='X-16521'Encapsulated Window messagesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='87*'COLNAME='C2' COLWIDTH='287*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'NameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EnableWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL EnableWindow (BOOL enable)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetCaptureCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'static HWND GetCapture ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetFocusCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'static HWND GetFocus ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IsWindowEnabledCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL IsWindowEnabled ( ) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'PostMessageCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL PostMessage (UINT msg, WPARAM wParam = 0, LPARAM lParam = 0) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ReleaseCaptureCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'static void ReleaseCapture ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SendDlgItemMessageCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'LRESULT SendDlgItemMessage (int childId, UINT msg, WPARAM wParam = 0, LPARAM lParam = 0) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SendMessageCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'LRESULT SendMessage (UINT msg, WPARAM wParam = 0, LPARAM lParam = 0) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetCaptureCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HWND SetCapture ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetFocusCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HWND SetFocus ( )REMAP='Body'LINKEND='X-30669' TYPE='XREF-TEXTCOPY'Table A.3 lists functions that adjust window coordinates and sizes.TOCENTRY="1"REMAP='TblCapApp'ID='X-30669'Window coordinates and dimensionsCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='103*'COLNAME='C2' COLWIDTH='271*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'NameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AdjustWindowRectCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'static void AdjustWindowRect (TRect& rect, DWORD style, BOOL menu)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'AdjustWindowRectExCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'static void AdjustWindowRectEx (TRect& rect, DWORD style, BOOL menu, DWORD exStyle)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ChildWindowFromPointCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HWND ChildWindowFromPoint (const TPoint& point)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ClientToScreenCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void ClientToScreen (TPoint& point) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetClientRectCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TRect GetClientRect ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetClientRectCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void GetClientRect (TRect& rect)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetWindowRectCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void GetWindowRect (TRect& rect)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MapWindowPointsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void MapWindowPoints (HWND hWndTo, TPoint *points, int count) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ScreenToClientCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void ScreenToClient (TPoint& point) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WindowFromPointCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'static HWND WindowFromPoint (const TPoint& point)REMAP='Body'LINKEND='X-39181' TYPE='XREF-TEXTCOPY'Table A.4 lists functions that encapsulate window properties and style attributes.TOCENTRY="1"REMAP='TblCapApp'ID='X-39181'Window propertiesCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='76*'COLNAME='C2' COLWIDTH='230*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'NameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'EnumPropsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int EnumProps (PROPENUMPROC proc)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetClassLongCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'long GetClassLong (int index) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetClassNameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'long GetClassName (char far* className, int maxCount) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetClassWordCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'WORD GetClassWord (int index) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetPropCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HANDLE GetProp (const char far* str) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetPropCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HANDLE GetProp (WORD atom) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetWindowLongCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'long GetWindowLong (int index) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetWindowWordCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'WORD GetWindowWord (int index) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RemovePropCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HANDLE RemoveProp (const char far* str) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RemovePropCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HANDLE RemoveProp (WORD atom) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetClassLongCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'long SetClassLong (int index, long newLong)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetClassWordCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'WORD SetClassWord (int index, WORD newWord)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetPropCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL SetProp (const char far* str, HANDLE data) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetPropCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL SetProp (WORD atom, HANDLE data) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetWindowLongCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'long SetWindowLong (int index, long newLong)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetWindowWordCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'WORD SetWindowWord (int index, WORD newWord)REMAP='Body'LINKEND='X-19004' TYPE='XREF-TEXTCOPY'Table A.5 lists functions that encapsulate window placement and display properties.TOCENTRY="1"REMAP='TblCapApp'ID='X-19004'Window placementCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='94*'COLNAME='C2' COLWIDTH='250*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'NameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetWindowPlacementCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL GetWindowPlacement (WINDOWPLACEMENT *place) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetWindowTextCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int GetWindowText (char far* str, int maxCount) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetWindowTextLengthCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int GetWindowTextLength ( ) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IsIconicCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL IsIconic ( ) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IsWindowVisibleCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL IsWindowVisible ( ) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IsZoomedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL IsZoomed ( ) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MoveWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void MoveWindow (const TRect& rect, BOOL repaint = FALSE)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MoveWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void MoveWindow (int x, int y, int w, int h, BOOL repaint = FALSE)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetWindowPlacementCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL SetWindowPlacement (const WINDOWPLACEMENT *place)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetWindowTextCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void SetWindowText (const char far* str)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ShowOwnedPopupsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void ShowOwnedPopups (BOOL show)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ShowWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL ShowWindow (int cmdShow)REMAP='Body'The functions in LINKEND='X-38828' TYPE='XREF-TEXTCOPY'Table A.6 control window positions and sibling relationships.TOCENTRY="1"REMAP='TblCapApp'ID='X-38828'Window relationships COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='91*'COLNAME='C2' COLWIDTH='283*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'NameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'BringWindowToTopCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void BringWindowToTop ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetActiveWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'static HWND GetActiveWindow ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetDesktopWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'static HWND GetDesktopWindow ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetLastActivePopupCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HWND GetLastActivePopup ( ) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetNextWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HWND GetNextWindow (UINT dirFlag) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetSysModalWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'static HWND GetSysModalWindow ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetTopWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HWND GetTopWindow ( ) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetActiveWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HWND SetActiveWindow ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetSysModalWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HWND SetSysModalWindow ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetWindowPosCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void SetWindowPos (HWND hWndInsertAfter, const TRect& rect, UINT flags)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetWindowPosCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void SetWindowPos (HWND hWndInsertAfter, int x, int y, int w, int h, UINT flags)REMAP='Body'The encapsulated functions in LINKEND='X-42369' TYPE='XREF-TEXTCOPY'Table A.7 control window painting, invalidating, validating, and updating.TOCENTRY="1"REMAP='TblCapApp'ID='X-42369'Window painting functionsCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='88*'COLNAME='C2' COLWIDTH='287*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'NameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FlashWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL FlashWindow (BOOL invert)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetUpdateRectCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL GetUpdateRect (TRect& rect, BOOL erase = TRUE) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'InvalidateCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void Invalidate (BOOL erase = TRUE)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'InvalidateRectCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void InvalidateRect (const TRect& rect, BOOL erase = TRUE)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'InvalidateRgnCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void InvalidateRgn (HRGN hRgn, BOOL erase = TRUE)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'LockWindowUpdateCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL LockWindowUpdate ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RedrawWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL RedrawWindow (TRect *update, HRGN hUpdateRgnh, UINT redrawFlags = RDW_INVALIDATE|RDW_UPDATENOW|RDW_ERASE)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'UpdateWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void UpdateWindow ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ValidateCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void Validate ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ValidateRectCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void ValidateRect (const TRect& rect)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ValidateRgnCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void ValidateRgn (HRGN hRgn)REMAP='Body'The functions in LINKEND='X-38246' TYPE='XREF-TEXTCOPY'Table A.8 control window scrolling and scroll bars.TOCENTRY="1"REMAP='TblCapApp'ID='X-38246'Window scrolling functions COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='72*'COLNAME='C2' COLWIDTH='303*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'NameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetScrollPosCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int GetScrollPos (int bar)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetScrollRangeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void GetScrollRange (int bar, int &minPos, int &maxPos) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ScrollWindowCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void ScrollWindow (int dx, int dy, const TRect *scroll = 0, const TRect *clip = 0)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ScrollWindowExCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void ScrollWindowEx (int dx, int dy, const TRect *scroll = 0, const TRect *clip = 0, HRGN hUpdateRgn = 0, TRect *update = 0, UINT flags = 0)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetScrollPosCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int SetScrollPos (int bar, int pos, BOOL redraw = TRUE)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetScrollRangeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void SetScrollRange (int bar, in minPos, int maxPos, BOOL redraw = TRUE)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ShowScrollBarCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void ShowScrollBar (int bar, BOOL show = TRUE)REMAP='Body'The functions in LINKEND='X-29822' TYPE='XREF-TEXTCOPY'Table A.9 control parent and child windows using command IDs.TOCENTRY="1"REMAP='TblCapApp'ID='X-29822'Child window ID functionsCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='92*'COLNAME='C2' COLWIDTH='283*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'NameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CheckDlgButtonCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void CheckDlgButton (int buttonId, UINT check)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CheckRadioButtonCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void CheckRadioButton (int firstButtonId, int lastButtonId, int checkButtonId)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetDlgCtrlDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int GetDlgCtrlID ( ) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetDlgItemCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HWND GetDlgItem (int childId) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetDlgItemIntCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'UINT GetDlgItemInt (int childId, BOOL * translated, BOOL isSigned) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetDlgItemTextCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int GetDlgItemText (int childId, char far* text, int max) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetNextDlgGroupItemCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HWND GetNextDlgGroupItem (HWND hWndCtrl, BOOL previous = FALSE) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetNextDlgTabItemCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HWND GetNextDlgTabItem (HWND hWndCtrl, BOOL previous = FALSE) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetParentCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HWND GetParent ( ) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IsChildCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL IsChild (HWND) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'IsDlgButtonCheckedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'UINT IsDlgButtonChecked (int buttonId) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetDlgItemIntCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void SetDlgItemInt (int childId, UINT value, BOOL is Signed = TRUE) constCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetDlgItemTextCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void SetDlgItemText (int childId, const char far* text) constREMAP='Body'The functions in LINKEND='X-17821' TYPE='XREF-TEXTCOPY'Table A.10 control menus and menu bar operations.TOCENTRY="1"REMAP='TblCapApp'ID='X-17821'Menu and menu bar functionsCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='75*'COLNAME='C2' COLWIDTH='221*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'NameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DrawMenuBarCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void DrawMenuBar ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetMenuCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HMENU GetMenu ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetSystemMenuCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HMENU GetSystemMenu (BOOL revert = FALSE)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HiliteMenuItemCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL HiliteMenuItem (HMENU, UINT idItem, UINT hilite)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetMenuCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL SetMenu (HMENU)REMAP='Body'The functions in LINKEND='X-31673' TYPE='XREF-TEXTCOPY'Table A.11 controls Clipboard operations.TOCENTRY="1"REMAP='TblCapApp'ID='X-31673'Clipboard functionsCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='90*'COLNAME='C2' COLWIDTH='123*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'NameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'&OpenClipboardCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TClipBoard &OpenClipboard ( )REMAP='Body'The functions in LINKEND='X-30875' TYPE='XREF-TEXTCOPY'Table A.12 control timer operations.TOCENTRY="1"REMAP='TblCapApp'ID='X-30875'Timer functionsCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='53*'COLNAME='C2' COLWIDTH='252*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'NameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'KillTimerCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL KillTimer (UINT timerId)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetTimerCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL SetTimer (UINT timerId, UINT timeout, TIMERPROC proc = 0)REMAP='Body'The functions in LINKEND='X-25562' TYPE='XREF-TEXTCOPY'Table A.13 control caret and cursor operations.TOCENTRY="1"REMAP='TblCapApp'ID='X-25562'Caret and cursor functionsCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='80*'COLNAME='C2' COLWIDTH='185*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'NameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CreateCaretCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void CreateCaret (HBITMAP)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CreateCaretCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void CreateCaret (int shade, int width, int height)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DestroyCaretCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'static void DestroyCaret ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetCaretBlinkTimeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'static UINT GetCaretBlinkTime ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetCaretPosCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'static void GetCaretPos (TPoint& pos)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetCursorPosCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'static void GetCursorPos (TPoint& pos)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'HideCaretCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void HideCaret ( )COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetCaretBlinkTimeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'static void SetCaretBlinkTime (WORD milliSecs)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetCaretPosCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'static void SetCaretPos (const TPoint& pos)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'SetCaretPosCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'static void SetCaretPos (int x, int y)REMAP='Body'The functions in LINKEND='X-28170' TYPE='XREF-TEXTCOPY'Table A.14 control the operations of hot keys.TOCENTRY="1"REMAP='TblCapApp'ID='X-28170'Hot key functionsCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='75*'COLNAME='C2' COLWIDTH='252*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'NameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'RegisterHotKeyCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL RegisterHotKey (int idHotKey, UINT modifiers, UINT virtKey)ID='X-2'REMAP='Tbl.Footnote'ID='X-15151'WIN32 API onlyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'UnregisterHotKeyCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL UnregisterHotKey (int idHotKey)LINKEND='X-15151' TYPE='XREF-TEXTCOPY'1REMAP='Body'The functions in LINKEND='X-40299' TYPE='XREF-TEXTCOPY'Table A.15 control, miscellaneous operations such as accessing WinHelp.TOCENTRY="1"REMAP='TblCapApp'ID='X-40299'Help and task functionsCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='71*'COLNAME='C2' COLWIDTH='303*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'NameCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'Function declarationVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'DragAcceptFilesCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'void DragAcceptFiles (BOOL accept)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetWindowTaskCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HANDLE GetWindowTask ( ) constID='X-3'REMAP='Tbl.Footnote'WIN32 API onlyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'GetWindowTaskCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HTASK GetWindowTask ( ) constID='X-4'REMAP='Tbl.Footnote'WIN16 API onlyCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'MessageBoxCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'int MessageBox (const char far* text, const char far* caption = 0, UINT type = MB_OK)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'WinHelpCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BOOL WinHelp (const char far* helpFile, UINT command, DWORD data)REMAP='NumAppendix'ID='X-37819' Windows API structsREMAP='Body'This appendix lists several Windows API structs that ObjectWindows uses.ABC structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct _ABC {FORMAT="LINESPECIFIC" int abcA;FORMAT="LINESPECIFIC" UINT abcB;FORMAT="LINESPECIFIC" int abcC;FORMAT="LINESPECIFIC"} ABC;REMAP='BodyNoLead'The ABC structure contains the width of a character in a TrueType fontCOLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='45*'COLNAME='C2' COLWIDTH='329*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ROLE='BOLD'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'abcACOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'"A" character spacing. "A" spacing is the distance to add to the current position before drawing the character glyph.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'abcBCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'"B" character spacing. "B" spacing is the width of the drawn portion of the character glyph.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'abcCCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'"C" character spacing. "C" spacing is the distance to add to the current position to provide white space to the right of the character glyph.REMAP='Body'The total width of a character is the sum of ROLE='italic'abcA, ROLE='italic'abcB, and ROLE='italic'abcC. Either the ROLE='italic'abcA or ROLE='italic'abcC can be negative to indicate underhangs or overhangs.BITMAP structMOREINFO="NONE"windows.hREMAP='BodyNoLead'16-bit version:FORMAT="LINESPECIFIC"typedef struct tagBITMAP {FORMAT="LINESPECIFIC" int bmType;FORMAT="LINESPECIFIC" int bmWidth;FORMAT="LINESPECIFIC" int bmHeight;FORMAT="LINESPECIFIC" int bmWidthBytes;FORMAT="LINESPECIFIC" BYTE bmPlanes;FORMAT="LINESPECIFIC" BYTE bmBitsPixel;FORMAT="LINESPECIFIC" void FAR* bmBits;FORMAT="LINESPECIFIC"} BITMAP;REMAP='Body'32-bit version:FORMAT="LINESPECIFIC"typedef struct tagBITMAP {FORMAT="LINESPECIFIC" LONG bmType;FORMAT="LINESPECIFIC" LONG bmWidth;FORMAT="LINESPECIFIC" LONG bmHeight;FORMAT="LINESPECIFIC" LONG bmWidthBytes;FORMAT="LINESPECIFIC" WORD bmPlanes;FORMAT="LINESPECIFIC" WORD bmBitsPixel;FORMAT="LINESPECIFIC" LPVOID bmBits;FORMAT="LINESPECIFIC"} BITMAP;REMAP='BodyNoLead'ROLE='italic'BITMAP defines the height, width, color format, and bit values of a logical bitmap.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='64*'COLNAME='C2' COLWIDTH='310*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bmTypeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Bitmap type. For logical bitmaps, this member must be zero.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bmWidthCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Bitmap width in pixels. Must be greater than zero.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bmHeightCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Bitmap height in raster lines. Must be greater than zero. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bmWidthBytesCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Number of bytes per raster line. Must be an even number because the graphics device interface (GDI) assumes that the bit values of a bitmap form an array of integer (two-byte) values.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bmPlanesCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Number of bitmap color planes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bmBitsPixelCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Number of adjacent color bits on each plane needed to define a pixel.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bmBitsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Points to the location of the bitmap bit values. Must be a long pointer to an array of one-byte values. REMAP='Body'Currently used bitmap formats are monochrome and color. Monochrome bitmaps use a one-bit, one-plane format. Each scan is a multiple of 16 bits or 32 bits. A monochrome bitmap of height ROLE='italic'n is organized as follows:FORMAT="LINESPECIFIC"Scan 0
Scan 1
...
Scan n-2
Scan n-1REMAP='Body'Monochrome device pixels are black or white. If a bitmap bit is 1, the corresponding pixel is turned on (white). If a bitmap is 0, the corresponding pixel is turned off (black).BITMAPCOREHEADER structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagBITMAPCOREHEADER {FORMAT="LINESPECIFIC" DWORD bcSize;FORMAT="LINESPECIFIC" WORD bcWidth;FORMAT="LINESPECIFIC" WORD bcHeight;FORMAT="LINESPECIFIC" WORD bcPlanes;FORMAT="LINESPECIFIC" WORD bcBitCount;FORMAT="LINESPECIFIC"} BITMAPCOREHEADER;REMAP='BodyNoLead'Contains device-independent bitmap (DIB) dimension and color-format information.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='48*'COLNAME='C2' COLWIDTH='184*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bcSizeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Number of bytes required by the structure.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bcWidthCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Width of the bitmap, in pixels.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bcHeightCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Height of the bitmap, in pixels. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bcPlanesCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Number of planes for the target device. Must be 1.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bcBitCountCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Number of bits per pixel. Must be 1, 4, 8, or 24.REMAP='Body'This structure is combined with a color table in the ROLE='italic'BITMAPCOREINFO structure to provide a complete definition of the dimensions and colors of a DIB.See alsoREMAP='BodyNoLead'ITMAPCOREINFO struct, RGBTRIPLE structBITMAPCOREINFO structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct _BITMAPCOREINFO {FORMAT="LINESPECIFIC" BITMAPCOREHEADER bmciHeader;FORMAT="LINESPECIFIC" RGBTRIPLE bmciColors[1];FORMAT="LINESPECIFIC"} BITMAPCOREINFO;REMAP='BodyNoLead'Defines the dimensions and color information for a device-independent bitmap (DIB).COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='54*'COLNAME='C2' COLWIDTH='211*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bmciHeaderCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Structure containing DIB color and dimension information.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bmciColorsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Structure defining bitmap colors.REMAP='Body'A DIB consists of two parts: aROLE='italic' BITMAPCOREINFO structure describing the dimensions and colors of the bitmap, and an array of bytes defining the pixels of the bitmap. The bits in the array are packed together, but each scan line must be padded with zeroes to end on a LONG boundary. The origin of the bitmap is the lower left corner.REMAP='Body'The ROLE='italic'bcBitCount member of the ROLE='italic'BITMAPCOREHEADER structure determines the number of bits that define each pixel and the maximum number of colors in the bitmap. This member can be one of the following values: COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='37*'COLNAME='C2' COLWIDTH='337*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'1COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The bitmap is monochrome, and the ROLE='italic'bmciColors member contains two entries. Each bit in the bitmap array represents a pixel. If the bit is clear, the pixel is displayed with the color of the first entry in the ROLE='italic'bmciColors table; if the bit is set, the pixel has the color of the second entry in the table. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'4COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The bitmap has a maximum of 16 colors, and the ROLE='italic'bmciColors member contains up to 16 entries. Each pixel in the bitmap is represented by a 4-bit index into the color table. For example, if the first byte in the bitmap is 0x1F, the byte represents two pixels. The first pixel contains the color in the second table entry, and the second pixel contains the color in the sixteenth table entry. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'8COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The bitmap has a maximum of 256 colors, and the ROLE='italic'bmciColors member contains up to 256 entries. In this case, each byte in the array represents a single pixel. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'24COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The bitmap has a maximum of 2 colors, and the ROLE='italic'bmciColors member is NULL. Each 3-byte triplet in the bitmap array represents the relative intensities of red, green, and blue, respectively, for a pixel. REMAP='Body'The colors in the ROLE='italic'bmciColors table should appear in order of importance. REMAP='Body'Alternatively, for functions that use DIBs, the ROLE='italic'bmciColors member can be an array of 16-bit unsigned integers that specify indexes into the currently realized logical palette, instead of explicit RGB values. In this case, an application using the bitmap must call the DIB functions (ROLE='italic'CreateDIBitmap, CreateDIBPatternBrush, and ROLE='italic'CreateDIBSection) with the iUsage parameter set to DIB_PAL_COLORS.REMAP='.ScanBold'ROLE='bold'NoteREMAP='Body'The ROLE='italic'bmciColors member should not contain palette indexes if the bitmap is to be stored in a file or transferred to another application. Unless the application has exclusive use and control of the bitmap, the bitmap color table should contain explicit RGB values. BITMAPINFO structMOREINFO="NONE"windows.hREMAP='BodyNoLead'16-bit version:FORMAT="LINESPECIFIC"typedef struct tagBITMAPINFO {FORMAT="LINESPECIFIC" BITMAPINFOHEADER bmiHeader;FORMAT="LINESPECIFIC" RGBQUAD bmiColors[1];FORMAT="LINESPECIFIC"} BITMAPINFO;REMAP='BodyNoLead'Defines the dimensions and color information for a device-independent bitmap (DIB).COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='51*'COLNAME='C2' COLWIDTH='240*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bmiHeaderCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Structure containing DIB dimension and color-format information.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'bmiColorsCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Structures that defines bitmap colors.REMAP='Body'A DIB consists of a ROLE='italic'BITMAPINFO structure, which describes the dimensions and colors of the bitmap, and an array of bytes defining the bitmap pixels. The array bits are packed together, but each scan line must be zero-padded to end on a LONG boundary. Segment boundaries can appear anywhere in the bitmap. The bitmap origin is the lower-left corner.REMAP='Body'The ROLE='italic'biBitCount member of the ROLE='italic'BITMAPINFOHEADER structure determines the number of bits which define each pixel and the maximum number of colors in the bitmap. This member may be set to any of the following values:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='34*'COLNAME='C2' COLWIDTH='340*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'ValueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'1COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The bitmap is monochrome, and the ROLE='italic'bmciColors member must contain two entries. Each bit in the bitmap array represents a pixel. If the bit is clear, the pixel is displayed with the color of the first entry in the ROLE='italic'bmciColors table. If the bit is set, the pixel has the color of the second entry in the table. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'4COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The bitmap has a maximum of 16 colors, and the ROLE='italic'bmciColors member contains 16 entries. Each pixel in the bitmap is represented by a four-bit index into the color table. For example, if the first byte in the bitmap is 0x1F, the byte represents two pixels. The first pixel contains the color in the second table entry, and the second pixel contains the color in the sixteenth table entry. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'8COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The bitmap has a maximum of 256 colors, and the ROLE='italic'bmciColors member contains 256 entries. In this case, each byte in the array represents a single pixel. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'16COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The bitmap has a maximum of 2^16 colors. The ROLE='italic'biCompression member of the ROLE='italic'BITMAPINFOHEADER must be BI_BITFIELDS. The ROLE='italic'bmiColors member contains 3 DWORD color masks which specify the red, green, and blue components, respectively, of each pixel. Bits set in the DWORD mask must be contiguous and should not overlap the bits of another mask. All the bits in the pixel do not have to be used. Each WORD in the array represents a single pixel.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'24COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The bitmap has a maximum of 2 colors. The ROLE='italic'bmciColors member is NULL, and each 3-byte sequence in the bitmap array represents the relative intensities of red, green, and blue, respectively, of a pixel.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'32COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The bitmap has a maximum of 2 colors. The ROLE='italic'biCompression member of the ROLE='italic'BITMAPINFOHEADER must be BI_BITFIELDS. The bmiColors member contains 3 DWORD color masks which specify the red, green, and blue components, respectively, of each pixel. Bits set in the DWORD mask must be contiguous and should not overlap the bits of another mask. All the bits in the pixel do not have to be used. Each DWORD in the array represents a single pixel. REMAP='Body'The ROLE='italic'biClrUsed member of the ROLE='italic'BITMAPINFOHEADER structure specifies the number of color indexes in the color table actually used by the bitmap. If the ROLE='italic'biClrUsed member is set to zero, the bitmap uses the maximum number of colors corresponding to the value of the ROLE='italic'biBitCount member. The colors in the ROLE='italic'bmiColors table should appear in order of importance.REMAP='Body'Alternatively, for functions that use DIBs, the ROLE='italic'bmiColors member can be an array of 16-bit unsigned integers that specify an index into the currently realized logical palette instead of explicit RGB values. In this case, an application using the bitmap must call DIB functions (ROLE='italic'CreateDIBitmap, CreateDIBPatternBrush, and ROLE='italic'CreateDIBSection) with the ROLE='italic'wUsage parameter set to DIB_PAL_COLORS.REMAP='.ScanBold'ROLE='bold'NoteREMAP='BodyNoLead'The ROLE='italic'bmiColors member should not contain palette indexes if the bitmap is to be stored in a file or transferred to another application. Unless the application uses the bitmap exclusively and under its complete control, the bitmap color table should contain explicit RGB values.BITMAPINFOHEADER structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagBITMAPINFOHEADER {FORMAT="LINESPECIFIC" DWORD biSize;FORMAT="LINESPECIFIC" LONG biWidth;FORMAT="LINESPECIFIC" LONG biHeight;FORMAT="LINESPECIFIC" WORD biPlanes;FORMAT="LINESPECIFIC" WORD biBitCount;FORMAT="LINESPECIFIC" DWORD biCompression;FORMAT="LINESPECIFIC" DWORD biSizeImage;FORMAT="LINESPECIFIC" LONG biXPelsPerMeter;FORMAT="LINESPECIFIC" LONG biYPelsPerMeter;FORMAT="LINESPECIFIC" DWORD biClrUsed;FORMAT="LINESPECIFIC" DWORD biClrImportant;FORMAT="LINESPECIFIC"} BITMAPINFOHEADER;REMAP='BodyNoLead'Contains dimension and color-format information for device-independent bitmaps (DIB). COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='72*'COLNAME='C2' COLWIDTH='64*'COLNAME='C3' COLWIDTH='238*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'biSizeCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Number of bytes required by this structure.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'biWidthCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Width of the bitmap, in pixels.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'biHeightCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Height of the bitmap, in pixels. If ROLE='italic'biHeight is negative, the bitmap origin is the upper-left corner and the height is the absolute value of ROLE='italic'biHeight.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'biPlanesCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the number of planes for the target device. This member must be set to 1. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'biBitCountCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the number of bits per pixel. This value must be 1, 4, 8, 16 (16-bit only), 24, or 32 (32-bit only).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'biCompressionCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the type of compression for a compressed bitmap. It can be one of the following values: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Subhead'ValueCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Subhead'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BI_RGBCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Uncompressed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BI_RLE8COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Specifies a run-length encoded format for bitmaps with 8 bits per pixel.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BI_RLE4COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Specifies a run-length encoded format for bitmaps with 4 bits per pixel.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BI_BITFIELDSCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Specifies the bitmap is not compressed and the color table consists of 3 DWORD color masks which specify the red, green, and blue components, respectively, of each pixel. This is valid when used with 16 and 32 bits per pixel bitmaps.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'biSizeImageCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Size of the image, in bytes. Can be 0 if the bitmap is in the BI_RGB format.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'biXPelsPerMeterCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the horizontal resolution, in pixels per meter, of the target device for the bitmap. Use this value to select a bitmap from a resource group that best matches the characteristics of the current device.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'biYPelsPerMeterCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the vertical resolution, in pixels per meter, of the target device.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'biClrUsedCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Size of the image, in bytes. Can be 0 if the bitmap is in the BI_RGB format. REMAP='Tbl.Body'Specifies the horizontal resolution, in pixels per meter, of the target device for the bitmap. Use this value to select a bitmap from a resource group that best matches the characteristics of the current device.REMAP='Tbl.Body'Specifies the vertical resolution, in pixels per meter, of the target device.REMAP='Tbl.Body'Specifies the number of color indexes in the color table actually used by the bitmap. If this value is 0, the bitmap uses the maximum number of colors corresponding to the value of the biBitCount member.REMAP='Tbl.Body'For 16-bit applications, if ROLE='italic'biClrUsed is nozero, it specifies the actual number of colors that the graphics engine or device driver will access if the ROLE='italic'biBitCount member is less than 24. If ROLE='italic'biBitCount is set to 24, ROLE='italic'biClrUsed specifies the size of the reference color table used to optimize performance of color palettes.REMAP='Tbl.Body'For 32-bit applications, if ROLE='italic'biClrUsed is nonzero and the ROLE='italic'biBitCount member is less than 16, the ROLE='italic'biClrUsed member specifies the actual number of colors the graphics engine or device driver accesses. If ROLE='italic'biBitCount is 16 or greater, then ROLE='italic'biClrUsed member specifies the size of the color table used to optimize performance of Windows color palettes. For ROLE='italic'biBitCount equal to 16 or 32 the optimal color palette starts immediately following the 3 DWORD masks. REMAP='Tbl.Body'If the bitmap is a packed bitmap (that is, a bitmap in which the bitmap array immediately follows the ROLE='italic'BITMAPINFO header and which is referenced by a single pointer), the ROLE='italic'biClrUsed member must be set to zero or to the actual size of the color table. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'biClrImportantCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the number of color indexes that are considered important for displaying the bitmap. If this value is zero, all colors are important.COLORREF typedefMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef DWORD COLORREF;REMAP='BodyNoLead'A 32-bit value used to specify an RGB color. The ROLE='italic'COLORREF value has the following hexadecimal form: FORMAT="LINESPECIFIC"0x00bbggrrREMAP='Body'The low-order byte (ROLE='italic'rrcontains a value for the relative intensity of red; the second byte (ggcontains a value for green; and the third byte (ROLE='italic'bbcontains a value for blue. The fourth byte byte must be zero. The RGB macro can be used to set these values:REMAP='.Indent1' ROLE='indent1'RGB(red, green, blue)REMAP='Body'Each color parameter can range from 0x0 to 0xFF.COMPAREITEMSTRUCT structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagCOMPAREITEMSTRUCT {FORMAT="LINESPECIFIC" UINT CtlType;FORMAT="LINESPECIFIC" UINT CtlID;FORMAT="LINESPECIFIC" HWND hwndItem;FORMAT="LINESPECIFIC" UINT itemID1;FORMAT="LINESPECIFIC" DWORD itemData1;FORMAT="LINESPECIFIC" UINT itemID2;FORMAT="LINESPECIFIC" DWORD itemData2;FORMAT="LINESPECIFIC"} COMPAREITEMSTRUCT;REMAP='BodyNoLead'Supplies the identifiers and application-supplied data for two items in a sorted owner-drawn list box or combo box. The table below describes the members.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='48*'COLNAME='C2' COLWIDTH='327*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CtlTypeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Either ODT_LISTBOX for an owner-drawn list box, or ODT_COMBOBOX for an owner-drawn combo box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CtlIDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'List box or combo box identifier.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hwndItemCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Control identifier.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'itemID1COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Index of the first item in the list box or combo box being compared.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'itemData1COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Application-supplied data for the first item being compared.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'itemID2COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Index of the second item in the list box or combo box being compared. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'itemData2COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Application-supplied data for the second item being compared.DELETEITEMSTRUCT structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagDELETEITEMSTRUCT {FORMAT="LINESPECIFIC" UINT CtlType;FORMAT="LINESPECIFIC" UINT CtlID;FORMAT="LINESPECIFIC" UINT itemID;FORMAT="LINESPECIFIC" HWND hwndItem;FORMAT="LINESPECIFIC" UINT itemData;FORMAT="LINESPECIFIC"} DELETEITEMSTRUCT;REMAP='BodyNoLead'Describes a deleted owner-drawn list-box or combo-box item. The table below describes the members.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='48*'COLNAME='C2' COLWIDTH='327*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CtlTypeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Either ODT_LISTBOX for an owner-drawn list box, or ODT_COMBOBOX for an owner-drawn combo box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CtlIDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'List box or combo box identifier.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'itemIDCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Index of the item in the list box or combo box being removed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hwndItemCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Control indentifier.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'itemDataCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Application-defined item data.DEVMODE structMOREINFO="NONE"windows.hREMAP='BodyNoLead'16-bit version:FORMAT="LINESPECIFIC"typedef struct tagDEVMODE {FORMAT="LINESPECIFIC" char dmDeviceName[CCHDEVICENAME];FORMAT="LINESPECIFIC" UINT dmSpecVersion;FORMAT="LINESPECIFIC" UINT dmDriverVersion;FORMAT="LINESPECIFIC" UINT dmSize;FORMAT="LINESPECIFIC" UINT dmDriverExtra;FORMAT="LINESPECIFIC" DWORD dmFields;FORMAT="LINESPECIFIC" int dmOrientation;FORMAT="LINESPECIFIC" int dmPaperSize;FORMAT="LINESPECIFIC" int dmPaperLength;FORMAT="LINESPECIFIC" int dmPaperWidth;FORMAT="LINESPECIFIC" int dmScale;FORMAT="LINESPECIFIC" int dmCopies;FORMAT="LINESPECIFIC" int dmDefaultSource;FORMAT="LINESPECIFIC" int dmPrintQuality;FORMAT="LINESPECIFIC" int dmColor;FORMAT="LINESPECIFIC" int dmDuplex;FORMAT="LINESPECIFIC" int dmYResolution;FORMAT="LINESPECIFIC" int dmTTOption;FORMAT="LINESPECIFIC"} DEVMODE;REMAP='Body'32-bit version:FORMAT="LINESPECIFIC"typedef struct _devicemode {FORMAT="LINESPECIFIC" TCHAR dmDeviceName[32];FORMAT="LINESPECIFIC" WORD dmSpecVersion;FORMAT="LINESPECIFIC" WORD dmDriverVersion;FORMAT="LINESPECIFIC" WORD dmSize;FORMAT="LINESPECIFIC" WORD dmDriverExtra;FORMAT="LINESPECIFIC" DWORD dmFields;FORMAT="LINESPECIFIC" short dmOrientation;FORMAT="LINESPECIFIC" short dmPaperSize;FORMAT="LINESPECIFIC" short dmPaperLength;FORMAT="LINESPECIFIC" short dmPaperWidth;FORMAT="LINESPECIFIC" short dmScale;FORMAT="LINESPECIFIC" short dmCopies;FORMAT="LINESPECIFIC" short dmDefaultSource;FORMAT="LINESPECIFIC" short dmPrintQuality;FORMAT="LINESPECIFIC" short dmColor;FORMAT="LINESPECIFIC" short dmDuplex;FORMAT="LINESPECIFIC" short dmYResolution;FORMAT="LINESPECIFIC" short dmTTOption;FORMAT="LINESPECIFIC" short dmCollate;FORMAT="LINESPECIFIC" TCHAR dmFormName[32];FORMAT="LINESPECIFIC" WORD dmUnusedPadding;FORMAT="LINESPECIFIC" USHORT dmBitsPerPel;FORMAT="LINESPECIFIC" DWORD dmPelsWidth;FORMAT="LINESPECIFIC" DWORD dmPelsHeight;FORMAT="LINESPECIFIC" DWORD dmDisplayFlags;FORMAT="LINESPECIFIC" DWORD dmDisplayFrequency;FORMAT="LINESPECIFIC"} DEVMODE;REMAP='BodyNoLead'Contains printer-driver initialization and environment data. The following table describes each member.COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='86*'COLNAME='C2' COLWIDTH='118*'COLNAME='C3' COLWIDTH='169*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmDeviceNameCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Name of the device the driver supportsname='mdash' font=symbol charset=fontspecific code=190
descr='[mdash]'for example, PCL/Laserjet: in the case of the Hewlett-Packard Laserjet.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmSpecVersionCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Version number of this structure.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmDriverVersionCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Printer driver version number.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmSizeCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Size of this structure, in bytes,excluding ROLE='italic'dmDriverData. Use to find the length of the structure without having to account for different versions. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmDriverExtraCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Size of the optional ROLE='italic'dmDriverData member, in bytes. If an application does not use device-specific information, it should set this member to zero. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmFieldsCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Contains flags that indicate which of the remaining members in this structure have been initialized. It can be any combination of the following values: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DM_ORIENTATIONCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'DM_DEFAULTSOURCECOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DM_PAPERSIZECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'DM_PRINTQUALITYCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DM_PAPERLENGTHCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'DM_COLORCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DM_PAPERWIDTHCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'DM_DUPLEXCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DM_SCALECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'DM_YRESOLUTIONCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DM_COPIESCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'DM_TTOPTIONCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmOrientationCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Paper orientation. Can be DMORIENT_PORTRAIT or DMORIENT_LANDSCAPE.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmPaperSizeCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Paper size. Can be set to zero if the length and width of the paper are specified by ROLE='italic'dmPaperLength and ROLE='italic'dmPaperWidth. Otherwise, set to one of the following values:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Subhead'ValueCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Subhead'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_FIRSTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'DMPAPER_LETTERCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_LETTERCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Letter, 8 1/2 x 11 in.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_LETTERSMALLCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Letter Small, 8 1/2 x 11 in.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_TABLOIDCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Tabloid, 11 x 17 in.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_LEDGERCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Ledger, 17 x 11 in.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_LEGALCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Legal, 8 1/2 x 14 in.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_STATEMENTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Statement, 5 1/2 x 8 1/2 in.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_EXECUTIVECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Executive, 7 1/2 x 10 1/2 in. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_A3COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'A3, 297 x 420 mmCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_A4COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'A4, 210 x 297 mmCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_A4SMALLCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'A4 Small, 210 x 297 mmCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_A5COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'A5, 148 x 210 mmCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_B4COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'B4, 250 x 354 mmCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_B5COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'B5, 182 x 257 mmCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_FOLIOCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Folio, 8 1/2 x 13 in.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_QUARTOCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Quarto, 215 x 275 mmCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_10X14COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'10 x 14 in. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_11X17COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'11 x 17 in. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_NOTECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Note, 8 1/2 x 11 in.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ENV_9COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Envelope #9, 3 7/8 x 8 7/8 in.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ENV_10COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Envelope #10, 4 1/8 x 9 1/2 in.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ENV_11COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Envelope #11, 4 1/2 x 10 3/8 in.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ENV_12COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Envelope #12, 4 1/2 x 11 in. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ENV_14COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Envelope #14, 5 x 11 1/2 in.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_CSHEETCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'C size sheetCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_DSHEETCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'D size sheetCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ESHEETCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'E size sheetCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ENV_DLCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Envelope DL, 110 x 220 mmCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ENV_C3COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Envelope C3, 324 x 458 mmCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ENV_C4COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Envelope C4, 229 x 324 mmCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ENV_C5COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Envelope C5, 162 x 229 mmCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ENV_C6COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Envelope C6, 114 x 162 mmCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ENV_C65COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Envelope C65, 114 x 229 mmCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ENV_B4COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Envelope B4, 250 x 353 mmCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ENV_B5COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Envelope B5, 176 x 250 mmCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ENV_B6COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Envelope B6, 176 x 125 mmCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ENV_ITALYCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Envelope, 110 x 230 mmCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ENV_MONARCHCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Envelope Monarch, 3 7/8 x 7 1/2 in. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_ENV_PERSONALCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Envelope, 3 5/8 x 6 1/2 in.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_FANFOLD_USCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'U.S. Standard Fanfold, 14 7/8 x 11 in.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_FANFOLD_STD_GERMANCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'German Standard Fanfold, 8 1/2 x 12 in.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_FANFOLD_LGL_GERMANCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'German Legal Fanfold, 8 1/2 x 13 in.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_LASTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'German Legal Fanfold, 8 1/2 x 13 in.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMPAPER_USERCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'User-definedCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmPaperLengthCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Paper length, in tenths of a millimeter. Overrides ROLE='italic'dmPaperSize.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmPaperWidthCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Paper width, in tenths of a millimeter. Overrides ROLE='italic'dmPaperSize.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmScaleCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Print output scale factor. Apparent page size is scaled from the physical page size by dmScale/100.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmCopiesCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the number of copies printed if the device supports multiple-page copies. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmDefaultSourceCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Default paper feed bin. This member can be one of the following values: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMBIN_AUTOCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'DMBIN_LOWER COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMBIN_CASSETTECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'DMBIN_MANUAL COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMBIN_ENVELOPECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'DMBIN_MIDDLE COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMBIN_ENVMANUALCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'DMBIN_ONLYONE COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMBIN_FIRSTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'DMBIN_SMALLFMT COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMBIN_LARGECAPACITYCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'DMBIN_TRACTOR COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMBIN_LARGEFMTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'DMBIN_UPPER COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMBIN_LASTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'mPrintQualityCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Printer resolution. Can be one of the following values:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMRES_HIGHCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMRES_MEDIUMCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMRES_LOWCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMRES_DRAFTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'If another (positive) value is given, it specifies dots per inch (DPI) and is device-dependent. If the printer initializes ROLE='italic'dmYResolution, then ROLE='italic'dmPrintQuality specifies the x-resolution of the printer in DPI.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmColorCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Color or monochrome output. Can be DMCOLOR_COLOR, or DMCOLOR_MONOCHROME.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmDuplexCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Duplex (double-sided) printing for printers capable of duplex printing. This member can be one of the following values: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMDUP_SIMPLEXCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMDUP_HORIZONTALCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMDUP_VERTICALCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmYResolutionCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Y-resolution of the printer in DPI. If the printer initializes ROLE='italic'dmYResolution, ROLE='italic'dmPrintQuality specifies the x-resolution of the printer, in DPI.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmTTOptionCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TrueType-font printing. Can be one of the following values:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMTT_BITMAPCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Print TrueType fonts as graphics. The default for dot-matrix printers. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMTT_DOWNLOADCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Download TrueType fonts as soft fonts. Default for Hewlett-Packard printers that use Printer Control Language (PCL).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMTT_SUBDEVCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Substitute device fonts for TrueType fonts. Default for PostScript printers.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmUnusedPaddingCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(32-bit only) Used to align the structure on a DWORD boundary.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmCollateCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Collation when printing multiple copies. Can be be one of the following values:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMCOLLATE_TRUECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Collate when printing multiple copies. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DMCOLLATE_FALSECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Do NOT collate when printing multiple copies. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmFormNameCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(32-bit only) Specifies the name of the form to use; for example, "Letter" or "Legal".COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmBitsPerPelCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(32-bit only) Color resolution of the display device, in bits per pixel.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmPelsWidthCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(32-bit only) Width of the visible device surface, in pixels.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmPelsHeightCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(32-bit only) Height of the visible device surface, in pixels.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmDisplayFlagsCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(32-bit only) Device display mode. Can be one of the following values:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Subhead'ValueCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Subhead'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DM_GRAYSCALECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Non-color display. If this flag is not set, color is assumed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DM_INTERLACEDCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Interlaced display mode. If the flag is not set, non-interlaced is assumed. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'dmDisplayFrequencyCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(32-bit only) Specifies the display device frequency, in hertz.DRAWITEMSTRUCT structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagDRAWITEMSTRUCT {FORMAT="LINESPECIFIC" UINT CtlType;FORMAT="LINESPECIFIC" UINT CtlID;FORMAT="LINESPECIFIC" UINT itemID;FORMAT="LINESPECIFIC" UINT itemAction;FORMAT="LINESPECIFIC" UINT itemState;FORMAT="LINESPECIFIC" HWND hwndItem;FORMAT="LINESPECIFIC" HDC hDC;FORMAT="LINESPECIFIC" RECT rcItem;FORMAT="LINESPECIFIC" DWORD itemData;FORMAT="LINESPECIFIC"} DRAWITEMSTRUCT;REMAP='BodyNoLead'Provides information the owner window must have to determine how to paint an owner-drawn control or menu item. The owner window of the owner-drawn control or menu item receives a pointer to this structure as the ROLE='italic'lParam parameter of the WM_DRAWITEM message.COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='50*'COLNAME='C2' COLWIDTH='93*'COLNAME='C3' COLWIDTH='230*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CtlTypeCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the control type. This member can be one of the following values: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ODT_BUTTONCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Owner-drawn button COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ODT_COMBOBOXCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Owner-drawn combo box COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ODT_LISTBOXCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Owner-drawn list box COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ODT_MENUCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Owner-drawn menu item COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CtlIDCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the identifier of the combo box, list box, or button. This member is not used for a menu item. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'itemIDCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the menu item identifier for a menu item or the index of the item in a list box or combo box. For an empty list box or combo box, this member can be -1. This allows the application to draw only the focus rectangle at the coordinates specified by the ROLE='italic'rcItem member even though there are no items in the control. This indicates to the user whether the list box or combo box has the focus. How the bits are set in the ROLE='italic'itemAction member determines whether the rectangle is to be drawn as though the list box or combo box has the focus. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'itemActionCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the drawing action required. This member can be one or more of the following values: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ODA_DRAWENTIRECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'The entire control needs to be drawn.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ODA_FOCUSCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'The control has lost or gained the keyboard focus. The ROLE='italic'itemState member should be checked to determine whether the control has the focus. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ODA_SELECTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'The selection status has changed. The ROLE='italic'itemState member should be checked to determine the new selection state. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'itemStateCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the visual state of the item ROLE='italic'after the current drawing action takes place. This member can be a combination of the following values: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ODS_CHECKEDCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'The menu item is to be checked. This bit is used only in a menu. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ODS_DISABLEDCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'The item is to be drawn as disabled. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ODS_FOCUSCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'The item has the keyboard focus. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ODS_GRAYEDCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'The item is to be grayed. This bit is used only in a menu. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ODS_SELECTEDCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'The menu item's status is selected. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hwndItemCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Identifies the control for combo boxes, list boxes, and buttons. For menus, this member identifies the menu containing the item. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hDCCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Identifies a device context (DC); this DC must be used when performing drawing operations on the control. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'rcItemCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies a rectangle that defines the boundaries of the control to be drawn. This rectangle is in the DC specified by the ROLE='italic'hDC member. Anything the owner window draws in the DC for combo boxes, list boxes, and buttons is automatically clipped, except for menu items. When drawing menu items, the owner window must not draw outside the boundaries of the rectangle defined by the ROLE='italic'rcItem member. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'itemDataCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the application-defined 32-bit value associated with the menu item. For a control, this parameter specifies the value last assigned to the list box or combo box by the LB_SETITEMDATA or CB_SETITEMDATA message. If the list box or combo box has the LBS_HASSTRINGS or CBS_HASSTRINGS style, this value is initially zero. Otherwise, this value is initially the value that was passed to the list box or combo box in the ROLE='italic'lParam parameter of one of these messages: CB_ADDSTRING, CB_INSERTSTRING, LB_ADDSTRING, LB_INSERTSTRING.FINDREPLACE structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct {FORMAT="LINESPECIFIC" DWORD lStructSize;FORMAT="LINESPECIFIC" HWND hwndOwner;FORMAT="LINESPECIFIC" HINSTANCE hInstance;FORMAT="LINESPECIFIC" DWORD Flags;FORMAT="LINESPECIFIC" LPSTR lpstrFindWhat;FORMAT="LINESPECIFIC" LPSTR lpstrReplaceWith;FORMAT="LINESPECIFIC" WORD wFindWhatLen;FORMAT="LINESPECIFIC" WORD wReplaceWithLen;FORMAT="LINESPECIFIC" DWORD lCustData;FORMAT="LINESPECIFIC" LPFRHOOKPROC lpfnHook;FORMAT="LINESPECIFIC" LPCSTR lpTemplateName;FORMAT="LINESPECIFIC"} FINDREPLACE;REMAP='BodyNoLead'Contains initialization information to initialize the system-defined find-and-replace dialog boxes. The table below describes the members.COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='80*'COLNAME='C2' COLWIDTH='133*'COLNAME='C3' COLWIDTH='160*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lStructSizeCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Length, in bytes, of the structure.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hwndOwnerCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Window that owns the dialog box. Can be any valid window handle, but must not be NULL. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hInstanceCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Data block that contains a dialog box template specified by ROLE='italic'lpstrTemplateName. Used only if the ROLE='italic'Flags member is set to FR_ENABLETEMPLATE; otherwise ignored.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'FlagsCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Dialog box initialization flags. Can be a combination of the following values:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Subhead'ValueCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Subhead'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FR_DIALOGTERMCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Indicates that the dialog box is closing.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FR_DOWNCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'If this flag is set, the search direction is down; if the flag is clear, the search direction is up.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FR_ENABLEHOOKCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Enables the hook function specified in the ROLE='italic'lpfnHook member of this structure. Used to initialize the dialog box only.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FR_ENABLETEMPLATECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Create the dialog box by using the dialog box template identified by the ROLE='italic'hInstance and ROLE='italic'lpTemplateName members. This flag is used to initialize the dialog box only.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FR_ENABLETEMPLATEHANDLECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Indicates that the ROLE='italic'hInstance member identifies a data block that contains a preloaded dialog box template. The ROLE='italic'lpTemplateName member is ignored if this flag is specified.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FR_FINDNEXTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'The application should search for the next occurrence of the string specified by the ROLE='italic'lpstrFindWhat member.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FR_HIDEUPDOWNCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Hides the Direction check box and the Up and Down controls.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FR_HIDEMATCHCASECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Hides the Match Case check box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FR_HIDEWHOLEWORDCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Hides the Match Whole Word Only check box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FR_MATCHCASECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Case-sensitive searches.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FR_NOMATCHCASECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Disables the Match Case check box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FR_NOUPDOWNCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Disables the direction radio buttons.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FR_NOWHOLEWORDCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Disables the Whole Word check box.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FR_REPLACECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Replace the current occurrence of the string specified by lpstrFindWhat with the string specified by lpstrReplaceWith.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FR_REPLACEALLCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Replace all occurrences of the string specified by ROLE='italic'lpstrFindWhat member with the string specified by ROLE='italic'lpstrReplaceWith.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FR_SHOWHELPCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Show the Help button. The ROLE='italic'hwndOwner member must not be NULL if this option is specified.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FR_WHOLEWORDCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Checks the Whole Word check box. Only whole words matching the search string will be considered.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lpstrFindWhatCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'String to search for. If there is a string specified when the dialog box starts, the dialog box initializes the Find What: text control with this string. If the FR_FINDNEXT flag is set when the dialog box is opened, the application should search for an occurrence of this string by using the FR_DOWN, FR_WHOLEWORD, and FR_MATCHCASE flags to further define the direction and type of search. The application must allocate a buffer for the string, which should be at least 80 characters long. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lpstrReplaceWithCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Replacement string for replace operations.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'wFindWhatLenCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Length, in bytes, of the buffer pointed to by ROLE='italic'lpstrFindWhat.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'wReplaceWithLenCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Length, in bytes, of the buffer pointed to by lpstrReplaceWith.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lCustDataCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Application-defined data the passed to the hook function identified ROLE='italic'lpfnHook.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lpfnHookCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Points to a hook function that processes messages intended for the dialog box. An application must specify the FR_ENABLEHOOK flag in the ROLE='italic'Flags member to enable the function; otherwise, the system ignores this structure member. Should return FALSE to pass a message on to the standard dialog procedure, or TRUE to discard the message.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lpstrTemplateNameCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Points to a null-terminated string that names the dialog box template resource to be substituted for the standard dialog box template.GLYPHMETRICS structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct _GLYPHMETRICS {FORMAT="LINESPECIFIC" UINT gmBlackBoxX;FORMAT="LINESPECIFIC" UINT gmBlackBoxY;FORMAT="LINESPECIFIC" POINT gmptGlyphOrigin;FORMAT="LINESPECIFIC" short gmCellIncX;FORMAT="LINESPECIFIC" short gmCellIncY;FORMAT="LINESPECIFIC"} GLYPHMETRICS;REMAP='BodyNoLead'Contains information about the placement and orientation of a glyph in a character cell, specified in logical units.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='75*'COLNAME='C2' COLWIDTH='299*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'gmBlackBoxXCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Width of the smallest rectangle that completely encloses the glyph.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'gmBlackBoxYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Height of the smallest rectangle that completely encloses the glyph.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'gmptGlyphOriginCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The x- and y-coordinates of the upper left corner of the smallest rectangle that completely encloses the glyph.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'gmCellIncXCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The horizontal distance from the origin of the current character cell to the origin of the next character cell.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'gmCellIncYCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The vertical distance from the origin of the current character cell to the origin of the next character cell. HANDLETABLE structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagHANDLETABLE {FORMAT="LINESPECIFIC" HGDIOBJ objectHandle[1];FORMAT="LINESPECIFIC"} HANDLETABLE;REMAP='BodyNoLead'An array of handles that identify a graphics device interface (GDI) object.ICONINFO structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct _ICONINFO {FORMAT="LINESPECIFIC" BOOL fIcon;FORMAT="LINESPECIFIC" DWORD xHotspot;FORMAT="LINESPECIFIC" DWORD yHotspot;FORMAT="LINESPECIFIC" HBITMAP hbmMask;FORMAT="LINESPECIFIC" HBITMAP hbmColor;FORMAT="LINESPECIFIC"} ICONINFO;REMAP='BodyNoLead'The ROLE='italic'ICONINFO structure contains information about an icon or a cursor. The following table describes the members.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='49*'COLNAME='C2' COLWIDTH='325*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'fIconCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Set to TRUE if this specifies an icon; FALSE if it specifies a cursor.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xHotspotCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the x-coordinate of a cursor's hot spot. For icons the hot spot is always in the center, so this member is ignored.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'yHotspotCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the y-coordinate of the cursor's hot spot. For icons the hot spot is always in the center, so this member is ignored.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hbmMaskCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the icon bitmask bitmap. For black and white icons the upper half of ROLE='italic'hbmMask is the icon AND bitmask, the lower half is the icon XOR bitmask, and the height should be an even multiple of two. For color icons this mask defines the AND bitmask of the icon only.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hbmColorCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Identifies the icon color bitmap. This member can be optional if this structure defines a black and white icon. After the AND bitmask of ROLE='italic'hbmMask is applied to the destination, the color bitmap is applied (using XOR) to the destination.ERNINGPAIR structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagKERNINGPAIR {FORMAT="LINESPECIFIC" WORD wFirst;FORMAT="LINESPECIFIC" WORD wSecond;FORMAT="LINESPECIFIC" int iKernAmount;FORMAT="LINESPECIFIC"} KERNINGPAIR;REMAP='BodyNoLead'Defines a kerning pair. The following table describes the members.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='61*'COLNAME='C2' COLWIDTH='313*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'wFirstCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Character code for the first character in the kerning pair.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'wSecondCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Character code for the second character in the kerning pair.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'iKernAmountCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Amount this pair will be kerned if they appear side by side in the same font and size. This value is usually negative, and is given in logical units (depending on mapping mode).LOGBRUSH structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagLOGBRUSH {FORMAT="LINESPECIFIC" UINT lbStyle;FORMAT="LINESPECIFIC" COLORREF lbColor;FORMAT="LINESPECIFIC" int lbHatch;FORMAT="LINESPECIFIC"} LOGBRUSH;REMAP='BodyNoLead'Defines the style, color, and pattern of a physical brush. The following table describes the members:COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='45*'COLNAME='C2' COLWIDTH='84*'COLNAME='C3' COLWIDTH='245*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lbStyleCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the brush style. This member can be one of the following values: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BS_DIBPATTERNCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Pattern brush defined by a device-independent bitmap (DIB) specification.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BS_DIBPATTERNPTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'A pattern brush defined by a device-independent bitmap (DIB) specification (32-bit only).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BS_HATCHEDCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Hatched brush.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BS_HOLLOWCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Hollow brush.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BS_PATTERNCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Pattern brush defined by a memory bitmap.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BS_NULLCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Equivalent to BS_HOLLOW.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'BS_SOLIDCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Solid brush.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lbColorCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the color to draw the brush. If the ROLE='italic'lbStyle member is the BS_HOLLOW or BS_PATTERN value, ROLE='italic'lbColor is ignored. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'If ROLE='italic'lpStyle is the BS_DIBPATTERN or BS_DIBPATTERNPT value, the low-order word of ROLE='italic'lbColor specifies whether the ROLE='italic'bmiColors members of the ROLE='italic'BITMAPINFO structure contain explicit RGB values or indexes into the currently realized logical palette. The ROLE='italic'lbColor member must be one of the following values:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DIB_PAL_COLORSCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Color table consists of an array of 16-bit indexes into the currently realized logical palette.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DIB_RGB_COLORSCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Color table contains literal RGB values. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lbHatchCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies a hatch style. The meaning depends on the brush style. If the ROLE='italic'lbStyle member is the BS_DIBPATTERN style, the ROLE='italic'lbHatch member contains a handle to a packed DIB. If the ROLE='italic'lbStyle member is the BS_DIBPATTERNPT style, the lbHatch member contains a pointer to a packed DIB.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'If the ROLE='italic'lbStyle member is the BS_HATCHED style, the ROLE='italic'lbHatch member specifies the orientation of the lines used to create the hatch. This member can be one of the following values: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HS_BDIAGONALCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'45-degree upward hatch (left to right) COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HS_CROSSCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Horizontal and vertical cross-hatch COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HS_DIAGCROSSCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'45-degree cross-hatch COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HS_FDIAGONALCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'45-degree downward hatch (left to right) COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HS_HORIZONTALCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Horizontal hatch COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'HS_VERTICALCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Vertical hatch COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'If the ROLE='italic'lbStylemember is the BS_PATTERN style, ROLE='italic'lbHatch must be a handle to the bitmap that defines the pattern. If the ROLE='italic'lbStyle member is the BS_SOLID or the BS_HOLLOW style, ROLE='italic'lbHatch is ignored.See alsoREMAP='BodyNoLead'BITMAPINFO structLOGFONT structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagLOGFONT {FORMAT="LINESPECIFIC" int lfHeight;FORMAT="LINESPECIFIC" int lfWidth;FORMAT="LINESPECIFIC" int lfEscapement;FORMAT="LINESPECIFIC" int lfOrientation;FORMAT="LINESPECIFIC" int lfWeight;FORMAT="LINESPECIFIC" BYTE lfItalic;FORMAT="LINESPECIFIC" BYTE lfUnderline;FORMAT="LINESPECIFIC" BYTE lfStrikeOut;FORMAT="LINESPECIFIC" BYTE lfCharSet;FORMAT="LINESPECIFIC" BYTE lfOutPrecision;FORMAT="LINESPECIFIC" BYTE lfClipPrecision;FORMAT="LINESPECIFIC" BYTE lfQuality;FORMAT="LINESPECIFIC" BYTE lfPitchAndFamily;FORMAT="LINESPECIFIC" BYTE lfFaceName[LF_FACESIZE];FORMAT="LINESPECIFIC"} LOGFONT;REMAP='Body'32 bit version:FORMAT="LINESPECIFIC"typedef struct tagLOGFONT { /* lf */FORMAT="LINESPECIFIC" LONG lfHeight;FORMAT="LINESPECIFIC" LONG lfWidth;FORMAT="LINESPECIFIC" LONG lfEscapement;FORMAT="LINESPECIFIC" LONG lfOrientation;FORMAT="LINESPECIFIC" LONG lfWeight;FORMAT="LINESPECIFIC" BYTE lfItalic;FORMAT="LINESPECIFIC" BYTE lfUnderline;FORMAT="LINESPECIFIC" BYTE lfStrikeOut;FORMAT="LINESPECIFIC" BYTE lfCharSet;FORMAT="LINESPECIFIC" BYTE lfOutPrecision;FORMAT="LINESPECIFIC" BYTE lfClipPrecision;FORMAT="LINESPECIFIC" BYTE lfQuality;FORMAT="LINESPECIFIC" BYTE lfPitchAndFamily;FORMAT="LINESPECIFIC" CHAR lfFaceName[LF_FACESIZE];FORMAT="LINESPECIFIC"} LOGFONT;REMAP='BodyNoLead'Defines font attributes. When creating a logical font, applications can use the default settings for most of the members. Unless ROLE='italic'lfHeight and ROLE='italic'lfFaceName are given specific values, the created logical font will be device dependent. The following table describes the members.COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='71*'COLNAME='C2' COLWIDTH='117*'COLNAME='C3' COLWIDTH='185*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lfHeightCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(16-bit applications) Font height, in logical units. If greater than zero, it specifies the font cell height. If less than zero, it specifies the character height of the font (applications that specify font height in points typically use a negative number for this member). If 0, the font mapper uses a default height. The font mapper chooses the largest physical font not exceeding the requested size,or the smallest font if the fonts exceed the requested size. The absolute value of the ROLE='italic'lfHeight member must not exceed 16,384 after it is converted to device units.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'(32-bit applictions) Font height, in logical units. The font height can be specified in one of three ways. If ROLE='italic'lfHeight is greater than zero, it is transformed into device units and matched against the cell height of the available fonts. If it is zero, a reasonable default size is used. If it is less than zero, it is transformed into device units and the absolute value is matched against the character height of the available fonts. For all height comparisons, the font mapper looks for the largest font that does not exceed the requested size; if there is no such font, it looks for the smallest font available. This mapping occurs when the font is used for the first time. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lfWidthCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Average font character width, in logical units, of font characters in logical units. If 0, the font mapper chooses a default width.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lfEscapementCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Angle between the base line of a character and the x-axis, in tenths of degrees.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lfOrientationCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Angle of character base line, tenths of degrees and relative to the bottom of the page.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lfWeightCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Font weight. Can be one of the following values:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FW_DONTCARECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'FW_SEMIBOLDCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FW_THINCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'FW_DEMIBOLDCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FW_EXTRALIGHTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'FW_BOLDCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FW_ULTRALIGHTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'FW_BOLDCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FW_LIGHTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'FW_ULTRABOLDCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FW_NORMALCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'FW_BLACKCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FW_REGULARCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'FW_HEAVYCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FW_MEDIUMCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'If the value is 0, a default weight is used.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lfItalicCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Italic font if TRUE.COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lfUnderlineCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Underlined font if TRUE.COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lfStrikeOutCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Strikeout font if TRUE.COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lfCharSetCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Font character set. Can be one of the following values:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ANSI_CHARSETCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DEFAULT_CHARSET (16 bit)COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'SYMBOL_CHARSET COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'SHIFTJIS_CHARSET (16 bit)COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'OEM_CHARSETCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'UNICODE_CHARSET (32 bit)COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lfOutPrecisionCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Desired output precision. Specifies how closely the output must match the height, width, character orientation, escapement, and pitch of the requested font. Can be one of the following values:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'OUT_CHARACTER_PRECISCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'OUT_STRING_PRECISCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'OUT_DEFAULT_PRECISCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'OUT_STROKE_PRECISCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'OUT_DEVICE_PRECISCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'OUT_TT_PRECIS COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'OUT_RASTER_PRECISCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'OUT_TT_ONLY_PRECISCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lfClipPrecisionCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Desired clipping precision. Specifies how to clip characters partially outside the clipping region. Can be any one of the following values:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CLIP_CHARACTER_PRECISCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'CLIP_MASKCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CLIP_DEFAULT_PRECISCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'CLIP_STROKE_PRECISCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CLIP_EMBEDDED COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'CLIP_TT_ALWAYSCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CLIP_LH_ANGLESCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'To use an embedded read-only font, applications must specify the CLIP_EMBEDDED value. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'To achieve consistent rotation of device, TrueType, and vector fonts, an application can use the OR operator to combine the CLIP_LH_ANGLES value with any of the other ROLE='italic'lfClipPrecision values. If the CLIP_LH_ANGLES bit is set, the rotation for all fonts is dependent on whether the orientation of the coordinate system is left-handed or right-handed. If CLIP_LH_ANGLES is not set, device fonts always rotate counter-clockwise, but the rotation of other fonts is dependent on the orientation of the coordinate system. (For more information about the orientation of coordinate systems, see the description of the ROLE='italic'lfEscapement member.) COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lfQualityCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Output font quality. Can be one of the following values:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Subhead'ValueCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Subhead'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DEFAULT_QUALITYCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Font appearance does not matter.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DRAFT_QUALITYCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Font appearance is less important than when the PROOF_QUALITY value is used.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'PROOF_QUALITYCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Font character quality is more important than matching logical-font attributes.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lfPitchAndFamilyCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Font family and pitch. The two low-order bits specify the font pitch and can be one of the following values:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DEFAULT_PITCHCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FIXED_PITCHCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'VARIABLE_PITCHCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The four high-order bits of the member specify the font family and can be one of the following values:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Subhead'ValueCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Subhead'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FF_DECORATIVECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Novelty fonts.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FF_DONTCARECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Don't care or don't know.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FF_MODERNCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Fonts with constant stroke width, with or without serifs (e.g. Pica and Courier).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FF_ROMANCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Fonts with variable stroke width and with serifs (e.g. Times New Roman).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FF_SCRIPTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Fonts designed to look like handwriting (e.g. Script and Cursive).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FF_SWISSCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Fonts with variable stroke width and without serifs (e.g. Sans Serif).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Use the Boolean OR operator to match a pitch constant with a family constant.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lfFaceNameCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the typeface name of the font. The length of this string must not exceed LF_FACESIZE - 1.LOGPALETTE structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagLOGPALETTE {FORMAT="LINESPECIFIC" WORD palVersion;FORMAT="LINESPECIFIC" WORD palNumEntries;FORMAT="LINESPECIFIC" PALETTEENTRY palPalEntry[1];FORMAT="LINESPECIFIC"} LOGPALETTE;REMAP='BodyNoLead'Defines a logical color palette. Colors in the palette-entry table should appear in order of importance because entries earlier in the logical palette are more likely to be placed in the system palette. The following table describes the members:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='62*'COLNAME='C2' COLWIDTH='313*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'palVersionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the Windows version number for the structure (currently 0x300).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'palNumEntriesCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the number of entries in the logical color palette. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'palPalEntryCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies an array of ROLE='italic'PALETTEENTRY structures that define the color and usage of each entry in the logical palette. LOGPEN structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagLOGPEN {FORMAT="LINESPECIFIC" UINT lopnStyle;FORMAT="LINESPECIFIC" POINT lopnWidth;FORMAT="LINESPECIFIC" COLORREF lopnColor;FORMAT="LINESPECIFIC"} LOGPEN;REMAP='BodyNoLead'Defines the style, width, and color of a pen.COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='48*'COLNAME='C2' COLWIDTH='79*'COLNAME='C3' COLWIDTH='247*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lopnStyleCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the pen type. This member can be one of the following values:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Subhead'ValueCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Subhead'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'PS_SOLIDCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Solid penCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'PS_DASHCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Dashed pen (pen width = 1)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'PS_DOTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Dotted pen (pen width = 1)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'PS_DASHDOTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Alternating dashes and dots (pen width = 1)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'PS_DASHDOTDOTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Alternating dashes and double dots (pen width = 1)COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'PS_NULLCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Invisible penCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'PS_INSIDEFRAMECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Creates a pen that draws a line inside the frame of closed shapes produced by graphics device interface (GDI) output functions that specify a bounding rectangle. When this style is used with GDI output functions.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lopnWidthCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the pen width, in logical units. If the ROLE='italic'lopnWidth member is zero, the pen is one pixel wide on raster devices regardless of the current mapping mode.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lopnColorCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the pen color. MDICREATESTRUCT structMOREINFO="NONE"FORMAT="LINESPECIFIC"typedef struct tagMDICREATESTRUCT {FORMAT="LINESPECIFIC" LPCSTR szClass;FORMAT="LINESPECIFIC" LPCSTR szTitle;FORMAT="LINESPECIFIC" HANDLE hOwner;FORMAT="LINESPECIFIC" int x;FORMAT="LINESPECIFIC" int y;FORMAT="LINESPECIFIC" int cx;FORMAT="LINESPECIFIC" int cy;FORMAT="LINESPECIFIC" DWORD style;FORMAT="LINESPECIFIC" LPARAM lParam;FORMAT="LINESPECIFIC"} MDICREATESTRUCT;REMAP='BodyNoLead'Contains class, title, location, owner, and size of a Multiple Document Interface (MDI) child window. The table below describes the members.COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='46*'COLNAME='C2' COLWIDTH='67*'COLNAME='C3' COLWIDTH='260*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'szClassCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Points to a null-terminated string specifying the registered MDI child window name.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'szTitleCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Points to a null-terminated string specifying the registered MDI child window title.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hOwnerCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Instance handle for the application creating the MDI child window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'xCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Initial position of the left side of the MDI child window. If set to CW_USEDEFAULT, the MDI child window is assigned a horizontal position.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'yCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Initial position of the MDI child window top edge. If set to CW_USEDEFAULT, the MDI child window is assigned a default vertical position. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'cxCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Initial width of the MDI child window. If set to CW_USEDEFAULT, the MDI child window is assigned a default width. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'cyCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Initial height of the MDI child window. If set to CW_USEDEFAULT, the MDI child window is assigned a default height. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'styleCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies additional styles for the MDI child window. If the MDI client window was created with the MDIS_ALLCHILDSTYLES window style, this member can be any combination of the window styles and creation attributes, including those listed in the following table:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Subhead'ValueCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Subhead'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'WS_MINIMIZECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Created in a minimized state.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'WS_MAXIMIZECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Created in a maximized state.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'WS_HSCROLLCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Created with a horizontal scroll bar.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'WS_VSCROLLCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Created with a vertical scroll bar. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lParamCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'An application-defined 32-bit value. METARECORD structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagMETARECORD {FORMAT="LINESPECIFIC" DWORD rdSize;FORMAT="LINESPECIFIC" WORD rdFunction;FORMAT="LINESPECIFIC" WORD rdParm[1];FORMAT="LINESPECIFIC"} METARECORD;REMAP='BodyNoLead'Contains a metafile record. The table below describes the members.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='51*'COLNAME='C2' COLWIDTH='270*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'rdSizeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Size of the record, in words.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'rdFunctionCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Function number.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'rdParmCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Function parameters in reverse of the order they are passed to the function.MEASUREITEMSTRUCT structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagMEASUREITEMSTRUCT {FORMAT="LINESPECIFIC" UINT CtlType;FORMAT="LINESPECIFIC" UINT CtlID;FORMAT="LINESPECIFIC" UINT itemID;FORMAT="LINESPECIFIC" UINT itemWidth;FORMAT="LINESPECIFIC" UINT itemHeight;FORMAT="LINESPECIFIC" DWORD itemData;FORMAT="LINESPECIFIC"} MEASUREITEMSTRUCT;REMAP='BodyNoLead'Contains dimensions of an owner-drawn control. The table below describes the members.COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='51*'COLNAME='C2' COLWIDTH='82*'COLNAME='C3' COLWIDTH='240*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CtlTypeCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the control type and can be one of the following values: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ODT_BUTTONCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Owner-drawn button COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ODT_COMBOBOXCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Owner-drawn combo box COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ODT_LISTBOXCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Owner-drawn list box COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ODT_MENUCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Owner-drawn menu COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'CtlIDCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Identifier of the combo box, list box, or button (not used for menus).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'itemIDCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Menu item identifier for a menu item, or the list box item identifier for a variable-height list or combo box (not used for a fixed-height list box, combo box, or for a button).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'itemWidthCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Width of a menu item, in pixels.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'itemHeightCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Height of an individual item in a list box or a menu, in pixels.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'itemDataCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Application-defined 32-bit value associated with a menu item. For a control, this parameter specifies the value last assigned to the list box or combo box by the LB_SETITEMDATA or CB_SETITEMDATA message. If the list box or combo box has the LB_HASSTRINGS or CB_HASSTRINGS style, this value is initially zero. Otherwise, this value is initially the value passed to the list box or combo box in the ROLE='italic'lParam parameter of one of the following messages:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CB_ADDSTRINGCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CB_INSERTSTRINGCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'LB_ADDSTRINGCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'LB_INSERTSTRINGCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'MSG structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagMSG {FORMAT="LINESPECIFIC" HWND hwnd;FORMAT="LINESPECIFIC" UINT message;FORMAT="LINESPECIFIC" WPARAM wParam;FORMAT="LINESPECIFIC" LPARAM lParam;FORMAT="LINESPECIFIC" DWORD time;FORMAT="LINESPECIFIC" POINT pt;FORMAT="LINESPECIFIC"} MSG;REMAP='BodyNoLead'The ROLE='italic'MSG structure contains the following message information from a message queue:COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='48*'COLNAME='C2' COLWIDTH='285*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hwndCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Handle for the window whose window procedure receives the message.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'messageCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Message number.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'wParamCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Additional message information. The meaning depends on the value of ROLE='italic'message.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lParamCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'Additional message information. The meaning depends on the value of message.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'timeCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The time the message was posted.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'ptCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The cursor position when the message was posted, in screen coordinates.OUTLINETEXTMETRIC structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct _OUTLINETEXTMETRIC {FORMAT="LINESPECIFIC" UINT otmSize;FORMAT="LINESPECIFIC" TEXTMETRIC otmTextMetrics;FORMAT="LINESPECIFIC" BYTE otmFiller;FORMAT="LINESPECIFIC" PANOSE otmPanoseNumber;FORMAT="LINESPECIFIC" UINT otmfsSelection;FORMAT="LINESPECIFIC" UINT otmfsType;FORMAT="LINESPECIFIC" int otmsCharSlopeRise;FORMAT="LINESPECIFIC" int otmsCharSlopeRun;FORMAT="LINESPECIFIC" int otmItalicAngle;FORMAT="LINESPECIFIC" UINT otmEMSquare;FORMAT="LINESPECIFIC" int otmAscent;FORMAT="LINESPECIFIC" int otmDescent;FORMAT="LINESPECIFIC" UINT otmLineGap;FORMAT="LINESPECIFIC" UINT otmsCapEmHeight;FORMAT="LINESPECIFIC" UINT otmsXHeight;FORMAT="LINESPECIFIC" RECT otmrcFontBox;FORMAT="LINESPECIFIC" int otmMacAscent;FORMAT="LINESPECIFIC" int otmMacDescent;FORMAT="LINESPECIFIC" UINT otmMacLineGap;FORMAT="LINESPECIFIC" UINT otmusMinimumPPEM;FORMAT="LINESPECIFIC" POINT otmptSubscriptSize;FORMAT="LINESPECIFIC" POINT otmptSubscriptOffset;FORMAT="LINESPECIFIC" POINT otmptSuperscriptSize;FORMAT="LINESPECIFIC" POINT otmptSuperscriptOffset;FORMAT="LINESPECIFIC" UINT otmsStrikeoutSize;FORMAT="LINESPECIFIC" int otmsStrikeoutPosition;FORMAT="LINESPECIFIC" int otmsUnderscoreSize;FORMAT="LINESPECIFIC" int otmsUnderscorePosition;FORMAT="LINESPECIFIC" PSTR otmpFamilyName;FORMAT="LINESPECIFIC" PSTR otmpFaceName;FORMAT="LINESPECIFIC" PSTR otmpStyleName;FORMAT="LINESPECIFIC" PSTR otmpFullName;FORMAT="LINESPECIFIC"} OUTLINETEXTMETRIC;REMAP='BodyNoLead'Contains metrics describing a TrueType font. The sizes returned in are given in logical units (depending on the specified display context's current mapping mode). The following table describes the members.COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='97*'COLNAME='C2' COLWIDTH='36*'COLNAME='C3' COLWIDTH='240*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmSizeCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Size of this structure, in bytesCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmTextMetricsCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ROLE='italic'TEXTMETRIC structure containing additional font informationCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmFillerCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Value that causes this structure to be byte alignedCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmPanoseNumberCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The ROLE='italic'PANOSE number for this fontCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmfsSelectionCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Nature of the font pattern. Can be a combination of the following bits:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Subhead'BitCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Subhead'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'0COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Italic COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'1COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Underscore COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'2COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Negative COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'3COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Outline COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'4COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Strikeout COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'5COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Bold COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmfsTypeCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies whether the font is licensed. Licensed fonts must not be modified or exchanged. If bit 1 is set, the font may not be embedded in a document. If bit 1 is clear, the font can be embedded. If bit 2 is set, the embedding is read-only.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmsCharSlopeRiseCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Slope of the cursor. This value is 1 if the slope is vertical. Applications can use this value and the value of the ROLE='italic'otmsCharSlopeRun member to create an italic cursor that has the same slope as the main italic angle (specified by the ROLE='italic'otmItalicAngle member).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmsCharSlopeRunCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Slope of the cursor. This value is zero if the slope is vertical. Applications can use this value and the value of the ROLE='italic'otmsCharSlopeRise member to create an italic cursor that has the same slope as the main italic angle (specified by the ROLE='italic'otmItalicAngle member).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmItalicAngleCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Main italic angle of the font, in counterclockwise degrees from vertical. Regular (roman) fonts have a value of zero. Italic fonts typically have a negative italic angle (that is, they lean to the right).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmEMSquareCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Number of logical units defining the x- or y-dimension of the em square for this font. (The number of units in the x- and y-directions are always the same for an em square).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmAscentCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Maximum distance characters in this font extend above the base line. This is the typographic ascent for the font.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmDescentCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Maximum distance characters in this font extend below the base line. This is the typographic descent for the font.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmLineGapCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Typographic line spacing.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmsCapEmHeightCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Not supported.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmsXHeightCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Not supported.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmrcFontBoxCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Bounding box for the font.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmMacAscentCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Maximum distance characters in this font extend above the base line for the Macintosh computer.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmMacDescentCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Maximum distance characters in this font extend below the base line for the Macintosh computer.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmMacLineGapCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Line-spacing information for the Macintosh computer.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmusMinimumPPEMCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the smallest recommended size for this font in pixels per em-square.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmptSubscriptSizeCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Recommended horizontal and vertical size for subscripts in this font.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmptSubscriptOffsetCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Recommended horizontal and vertical offset for subscripts in this font. The subscript offset is measured from the character origin to the origin of the subscript character.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmptSuperscriptSizeCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Recommended horizontal and vertical size for superscripts in this font.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmptSuperscriptOffsetCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Recommended horizontal and vertical offset for superscripts in this font. The superscript offset is measured from the character base line to the base line of the superscript character.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmsStrikeoutSizeCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Width of the strikeout stroke for this font. Typically, this is the width of the em-dash for the font.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmsStrikeoutPositionCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Position of the strikeout stroke relative to the base line for this font. Positive values are above the base line and negative values are below.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmsUnderscoreSizeCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Thickness of the underscore character for this font.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmsUnderscorePositionCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Position of the underscore character for this font.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmpFamilyNameCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Offset from the beginning of the structure to a string specifying the family name for the font.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmpFaceNameCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Offset from the beginning of the structure to a string specifying the typeface name for the font. (This typeface name corresponds to the name specified in the ROLE='italic'LOGFONT structure.) COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmpStyleNameCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Offset from the beginning of the structure to a string specifying the style name for the font.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'otmpFullNameCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Offset from the beginning of the structure to a string specifying the full name for the font. This name is unique for the font and often contains a version number or other identifying information.RGBQUAD structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagRGBQUAD {FORMAT="LINESPECIFIC" BYTE rgbBlue;FORMAT="LINESPECIFIC" BYTE rgbGreen;FORMAT="LINESPECIFIC" BYTE rgbRed;FORMAT="LINESPECIFIC" BYTE rgbReserved;FORMAT="LINESPECIFIC"} RGBQUAD;REMAP='BodyNoLead'Describes a color consisting of relative intensities of red, green, and blue. The following table describes the members.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='56*'COLNAME='C2' COLWIDTH='72*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'rgbBlueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Intensity of blueCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'rgbGreenCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Intensity of greenCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'rgbRedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Intensity of redCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'rgbReservedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Must be zeroRGBTRIPLE structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagRGBTRIPLE {FORMAT="LINESPECIFIC" BYTE rgbtBlue;FORMAT="LINESPECIFIC" BYTE rgbtGreen;FORMAT="LINESPECIFIC" BYTE rgbtRed;FORMAT="LINESPECIFIC"} RGBTRIPLE;REMAP='BodyNoLead'Describes a color consisting of relative intensities of red, green, and blue.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='48*'COLNAME='C2' COLWIDTH='64*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'rgbtBlueCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Blue intensityCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'rgbtGreenCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Green intensityCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'rgbtRedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Red intensityTEXTMETRIC structMOREINFO="NONE"windows.hREMAP='BodyNoLead'The 16-bit version formatted and packed differently than the 32-bit version:FORMAT="LINESPECIFIC"typedef struct tagTEXTMETRIC {FORMAT="LINESPECIFIC" int tmHeight;FORMAT="LINESPECIFIC" int tmAscent;FORMAT="LINESPECIFIC" int tmDescent;FORMAT="LINESPECIFIC" int tmInternalLeading;FORMAT="LINESPECIFIC" int tmExternalLeading;FORMAT="LINESPECIFIC" int tmAveCharWidth;FORMAT="LINESPECIFIC" int tmMaxCharWidth;FORMAT="LINESPECIFIC" int tmWeight;FORMAT="LINESPECIFIC" BYTE tmItalic;FORMAT="LINESPECIFIC" BYTE tmUnderlined;FORMAT="LINESPECIFIC" BYTE tmStruckOut;FORMAT="LINESPECIFIC" BYTE tmFirstChar;FORMAT="LINESPECIFIC" BYTE tmLastChar;FORMAT="LINESPECIFIC" BYTE tmDefaultChar;FORMAT="LINESPECIFIC" BYTE tmBreakChar;FORMAT="LINESPECIFIC" BYTE tmPitchAndFamily;FORMAT="LINESPECIFIC" BYTE tmCharSet;FORMAT="LINESPECIFIC" int tmOverhang;FORMAT="LINESPECIFIC" int tmDigitizedAspectX;FORMAT="LINESPECIFIC" int tmDigitizedAspectY;FORMAT="LINESPECIFIC"} TEXTMETRIC;REMAP='Body'32-bit version:FORMAT="LINESPECIFIC"typedef struct tagTEXTMETRIC {FORMAT="LINESPECIFIC" LONG tmHeight;FORMAT="LINESPECIFIC" LONG tmAscent;FORMAT="LINESPECIFIC" LONG tmDescent;FORMAT="LINESPECIFIC" LONG tmInternalLeading;FORMAT="LINESPECIFIC" LONG tmExternalLeading;FORMAT="LINESPECIFIC" LONG tmAveCharWidth;FORMAT="LINESPECIFIC" LONG tmMaxCharWidth;FORMAT="LINESPECIFIC" LONG tmWeight;FORMAT="LINESPECIFIC" LONG tmOverhang;FORMAT="LINESPECIFIC" LONG tmDigitizedAspectX;FORMAT="LINESPECIFIC" LONG tmDigitizedAspectY;FORMAT="LINESPECIFIC" BYTE tmFirstChar;FORMAT="LINESPECIFIC" BYTE tmLastChar;FORMAT="LINESPECIFIC" BYTE tmDefaultChar;FORMAT="LINESPECIFIC" BYTE tmBreakChar;FORMAT="LINESPECIFIC" BYTE tmItalic;FORMAT="LINESPECIFIC" BYTE tmUnderlined;FORMAT="LINESPECIFIC" BYTE tmStruckOut;FORMAT="LINESPECIFIC" BYTE tmPitchAndFamily;FORMAT="LINESPECIFIC" BYTE tmCharSet;FORMAT="LINESPECIFIC"} TEXTMETRIC;REMAP='BodyNoLead'Contains basic information about a physical font. All sizes are in logical units (mapping mode dependent). The table below describes the members.COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='86*'COLNAME='C2' COLWIDTH='87*'COLNAME='C3' COLWIDTH='200*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmHeightCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Height of character cells (ROLE='italic'tmAscent + ROLE='italic'tmDescent).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmAscentCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Ascent of character cells (in units above base line).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmDescentCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Descent of character cells (in units below base line).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmInternalLeadingCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Amount of leading (space) inside the bounds set by ROLE='italic'tmHeight. Diacritical characters occur in this area.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmExternalLeadingCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Amount of extra leading (space) added between rows. Sometimes set to zero.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmAveCharWidthCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Average width of characters in the font. Does not include overhang.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmMaxCharWidthCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Width of the widest character in the font.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmWeightCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Font weight. Can be one of the following values: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FW_DONTCARECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'FW_SEMIBOLDCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FW_THINCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'FW_DEMIBOLDCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FW_EXTRALIGHTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'FW_BOLDCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FW_ULTRALIGHTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'FW_EXTRABOLDCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FW_LIGHTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'FW_ULTRABOLDCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FW_NORMALCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'FW_BLACKCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FW_REGULARCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'FW_HEAVYCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FW_MEDIUMCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmItalicCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Italic font if not 0COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmUnderlinedCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Underlined font if not 0COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmStruckOutCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Struckout font if not 0COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmFirstCharCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Value of first character defined in fontCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmLastCharCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Value of last character defined in fontCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmDefaultCharCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Value of non-font substitution characterCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmBreakCharCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Word-break character value for text justificationCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmPitchAndFamilyCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Pitch and family of the selected font. The four low-order bits identify the type of font, as follows: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TMPF_FIXED_PITCHCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Fixed-pitch font. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TMPF_VECTORCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Vector or TrueType font. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TMPF_TRUETYPECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'TrueType font. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'TMPF_DEVICECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Device font. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The four high-order bits of this member designate the font family. The ROLE='italic'tmPitchAndFamily member can be combined with the hexadecimal value 0xF0 by using the bitwise AND operator and can then be compared with the font family names for an identical match. The following font families are defined: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Subhead'ValueCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Subhead'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FF_DECORATIVECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Novelty fontsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FF_DONTCARECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Don't care or don't knowCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FF_MODERNCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Fonts with constant stroke width, with or without serifsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FF_ROMANCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Fonts with variable stroke width and with serifsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FF_SCRIPTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Fonts designed to look like handwritingCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'FF_SWISSCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Fonts with variable stroke width and without serifsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmCharSetCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the character set of the font. The following values are defined:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ANSI_CHARSETCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'DEFAULT_CHARSETCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'SYMBOL_CHARSETCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'SHIFTJIS_CHARSETCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'OEM_CHARSETCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmOverhangCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Extra width that is added to some synthesized fontsCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmDigitizedAspectXCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Horizontal aspect of the device for which the font was designed. The ratio of ROLE='italic'tmDigitizedAspectX and ROLE='italic'tmDigitizedAspectY is the aspect ratio of the device for which the font was designed.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'tmDigitizedAspectYCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the vertical aspect of the device for which the font was designed. The ratio of ROLE='italic'tmDigitizedAspectX and ROLE='italic'tmDigitizedAspectY is the aspect ratio of the device for which the font was designed. WNDCLASS structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagWNDCLASS {FORMAT="LINESPECIFIC" UINT style;FORMAT="LINESPECIFIC" WNDPROC lpfnWndProc;FORMAT="LINESPECIFIC" int cbClsExtra;FORMAT="LINESPECIFIC" int cbWndExtra;FORMAT="LINESPECIFIC" HANDLE hInstance;FORMAT="LINESPECIFIC" HICON hIcon;FORMAT="LINESPECIFIC" HCURSOR hCursor;FORMAT="LINESPECIFIC" HBRUSH hbrBackground;FORMAT="LINESPECIFIC" LPCTSTR lpszMenuName;FORMAT="LINESPECIFIC" LPCTSTR lpszClassName;REMAP='BodyNoLead'} WNDCLASS;REMAP='BodyNoLead'Contains ROLE='italic'TWindow class registration attributes, described in the following table:COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='66*'COLNAME='C2' COLWIDTH='114*'COLNAME='C3' COLWIDTH='193*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Heading'VALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'styleCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Class style. Can be any combination of the following values:COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Subhead'ValueCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Subhead'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CS_BYTEALIGNCLIENTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Aligns the window's client area on the byte boundary (in the x direction).COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CS_BYTEALIGNWINDOWCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Aligns a window on a byte boundary (in the x direction) to enhance performance during operations that involve moving or sizing the window. This style affects the width of the window and its horizontal position on the display. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CS_CLASSDCCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Allocates a device context (DC) to be shared by all windows in the class.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CS_DBLCLKSCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Sends double-click messages to the window procedure while the cursor is within a window belonging to the class.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'CS_GLOBALCLASSCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Allows an application to create a window of the class regardless of the value of the ROLE='italic'hInstance parameter used at window creation.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lpfnWndProcCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Points to the window procedure.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'cbClsExtraCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Number of extra bytes to allocate following the window-class structure. The operating system initializes the bytes to zero.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'cbWndExtraCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Number of extra bytes to allocate following the window instance. Initializedt to 0.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hInstanceCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Identifies the instance that the window procedure of this class is within. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hIconCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Identifies the class icon. Must be a handle of an icon resource. If NULL, an application must draw an icon whenever the user minimizes the application's window.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hCursorCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Identifies the class cursor. Must be a handle of a cursor resource. If NULL, an application must set the cursor shape whenever the mouse moves into the application's window. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hbrBackgroundCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Identifies the class background brush. Can be a handle to the physical brush to be used for painting the background, or it can be a color value. A color value must be one of the standard system colors listed below, plus 1. If a color value is given, you must convert it to one of the following HBRUSH types: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLOR_ACTIVEBORDERCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLOR_HIGHLIGHTTEXTCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLOR_ACTIVECAPTIONCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLOR_INACTIVEBORDER COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLOR_APPWORKSPACECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLOR_INACTIVECAPTION COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLOR_BACKGROUNDCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLOR_MENU COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLOR_BTNFACECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLOR_MENUTEXT COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLOR_BTNSHADOWCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLOR_SCROLLBAR COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLOR_BTNTEXTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLOR_WINDOW COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLOR_CAPTIONTEXT COLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLOR_WINDOWFRAME COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLOR_GRAYTEXTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLOR_WINDOWTEXT COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'COLOR_HIGHLIGHTCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'An application should not delete these brushes, because a class may be used by multiple instances of an application. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'When this member is NULL, an application must paint its own background whenever it is requested to paint in its client area.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lpszMenuNameCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Points to a null-terminated character string that specifies the resource name of the class menu, as the name appears in the resource file. If NULL, windows belonging to this class have no default menu.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'lpszClassNameCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Points to a null-terminated string or is an atom that specifies the window class name.PAINTSTRUCT structMOREINFO="NONE"windows.hREMAP='BodyNoLead'16-bit version:FORMAT="LINESPECIFIC"typedef struct tagPAINTSTRUCT {FORMAT="LINESPECIFIC" HDC hdc;FORMAT="LINESPECIFIC" BOOL fErase;FORMAT="LINESPECIFIC" RECT rcPaint;FORMAT="LINESPECIFIC" BOOL fRestore;FORMAT="LINESPECIFIC" BOOL fIncUpdate;FORMAT="LINESPECIFIC" BYTE rgbReserved[16];FORMAT="LINESPECIFIC"} PAINTSTRUCT;REMAP='Body'32-bit version:FORMAT="LINESPECIFIC"typedef struct tagPAINTSTRUCT {FORMAT="LINESPECIFIC" HDC hdc;FORMAT="LINESPECIFIC" BOOL fErase;FORMAT="LINESPECIFIC" RECT rcPaint;FORMAT="LINESPECIFIC" BOOL fRestore;FORMAT="LINESPECIFIC" BOOL fIncUpdate;FORMAT="LINESPECIFIC" BYTE rgbReserved[32];FORMAT="LINESPECIFIC"} PAINTSTRUCT;REMAP='BodyNoLead'Contains information needed by an application to paint the client area of a window.COLS='2' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='88*'COLNAME='C2' COLWIDTH='286*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'hdcCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'The display device context used for painting.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'fEraseCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'If non-zero erase the background.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'rcPaintCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the upper-left and lower-right corners of the rectangle to be painted.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'fRestoreCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Reserved.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'fIncUpdateCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Reserved.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'rgbReservedCOLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Reserved.PALETTEENTRY structMOREINFO="NONE"windows.hFORMAT="LINESPECIFIC"typedef struct tagPALETTEENTRY {FORMAT="LINESPECIFIC" BYTE peRed;FORMAT="LINESPECIFIC" BYTE peGreen;FORMAT="LINESPECIFIC" BYTE peBlue;FORMAT="LINESPECIFIC" BYTE peFlags;FORMAT="LINESPECIFIC"} PALETTEENTRY;REMAP='BodyNoLead'Specifies the color and usage of an entry in a logical color palette (see ROLE='italic'LOGPALETTE struct). The following table describes the settings:COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='50*'COLNAME='C2' COLWIDTH='86*'COLNAME='C3' COLWIDTH='237*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'peRedCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies a red intensity value for the palette entry. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'peGreenCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies a green intensity value for the palette entry. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'peBlueCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies a blue intensity value for the palette entry. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'peFlagsCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies how the palette entry is to be used. The ROLE='italic'peFlags member may be set to NULL or one of these values: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Subhead'ValueCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Subhead'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'PC_EXPLICITCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'The low-order word of the logical palette entry designates a hardware palette index. This flag allows the application to show the contents of the display device palette. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'PC_NOCOLLAPSECOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'The color is placed in an unused system palette entry instead of being matched to an existing system palette color.COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'PC_RESERVEDCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Specifies that the logical palette entry be used for palette animation, preventing other windows from matching colors to the palette entry since the color frequently changes. If an unused system-palette entry is available, this color is placed in that entry. Otherwise, the color is available for animation.XFORM structwindows.hFORMAT="LINESPECIFIC"typedef struct tagXFORM {FORMAT="LINESPECIFIC" FLOAT eM11;FORMAT="LINESPECIFIC" FLOAT eM12;FORMAT="LINESPECIFIC" FLOAT eM21;FORMAT="LINESPECIFIC" FLOAT eM22;FORMAT="LINESPECIFIC" FLOAT eDx;FORMAT="LINESPECIFIC" FLOAT eDy;FORMAT="LINESPECIFIC"} XFORM;REMAP='BodyNoLead'Specifies a world-space to page-space transformation. The following table describes the members.COLS='3' CHAROFF="50" CHAR="" ALIGN="LEFT"COLNAME='C1' COLWIDTH='46*'COLNAME='C2' COLWIDTH='52*'COLNAME='C3' COLWIDTH='276*'VALIGN="BOTTOM"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Heading'MemberCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Heading'DescriptionVALIGN="TOP"COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'eM11COLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the following: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Subhead'ValueCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Subhead'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ScalingCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Horizontal scaling component COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'RotationCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Cosine of rotation angle COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ReflectionCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Horizontal component COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'eM12COLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the following: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Subhead'ValueCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Subhead'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ShearCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Horizontal proportionality constant COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'RotationCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Sine of the rotation angle COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'eM21COLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the following: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Subhead'ValueCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Subhead'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ShearCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Vertical proportionality constant COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'RotationCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Negative sine of the rotation angle COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'eM22COLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the following: COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Subhead'ValueCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Subhead'MeaningCOLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ScalingCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Vertical scaling component COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'RotationCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Cosine of rotation angle COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'COLNAME='C2' MOREROWS='0' NAMEEND='C2' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'ReflectionCOLNAME='C3' MOREROWS='0' NAMEEND='C3' NAMEST='C3' ROTATE='0'REMAP='Tbl.Body'Vertical reflection component COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'eDxCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the horizontal translation component. COLNAME='C1' MOREROWS='0' NAMEEND='C1' NAMEST='C1' ROTATE='0'REMAP='Tbl.Body'eDyCOLNAME='C2' MOREROWS='0' NAMEEND='C3' NAMEST='C2' ROTATE='0'REMAP='Tbl.Body'Specifies the vertical translation component. REMAP='Body'