1、Standard ECMA-234December 1995Standardizing Information and Communication SystemsPhone: +41 22 849.60.00 - Fax: +41 22 849.60.01 - URL: http:/www.ecma.ch - Internet: helpdeskecma.chApplication ProgrammingInterface for WindowsVolume 3AnnexesStandard ECMA-234December 1995Standardizing Information and
2、Communication SystemsPhone: +41 22 849.60.00 - Fax: +41 22 849.60.01 - URL: http:/www.ecma.ch - Internet: helpdeskecma.chGL E-234-V3.DOC 07-03-96 16,08Application ProgrammingInterface for WindowsBrief HistoryThe APIW Standard is a functional specification of the Microsoft Windows 3.1 application pro
3、gramming interface. It is basedon existing implementations (including Microsoft and others) and behavior. The goal of writing this specification is to define anenvironment in which: applications written to this baseline will be portable to all implementations of the APIW Standard. the interface can
4、be enriched through open standards processes to meet current and future user needs in a timely fashion.APIW uses the current C language binding, and reflects existing coding practices to ensure that current applications willconform to this standard. The APIs documented in this standard shall accurat
5、ely reflect existing implementations of thewindows APIs. If an application that runs with an existing implementation uses one or more APIs contrary to the way it isdescribed in the standard, the standard will be changed to accurately reflect the behavior.The APIW Standard defines a set of applicatio
6、n programming interfaces that allow for the creation of graphical applicationsspanning a wide range of capabilities. The standard groups these APIs into major functional areas including a window managerinterface, a graphics device interface and interfaces necessary for accessing system resources and
7、 capabilities. The APIrequirements of todays major desktop applications are reflected in this specification and are the criteria for determining theAPIW content.The APIW Standard focuses on providing the necessary APIs for writing applications for the desktop, and also allowsadditional APIs to be bo
8、und to an application. This feature enables services outside the scope of a standard desktop applicationto be provided, for example, database, networking or other system services.The APIW Standard defines the basic graphical use interface objects, such as buttons, scrollbars, menus, static and editc
9、ontrols, and the painting functions to draw them, such as area fill, and line and rectangle drawing. Finally, a rich set of textroutines in defined, from simple text output to more complex text output routines using multiple founts and font styles, allsupporting the use of color.The APIW Standard is
10、 documented in five sections, corresponding loosely to the four functional subsystems represented by theAPI and the conformance clause. The four APIW sections cover window management, graphical interface, system services andan application support services section. These functions cover window creati
11、on and management, graphics routines to paint textand other graphics objects in those windows, functions to access system resources such as files and timers, and finally, commonsupport functions to accelerate the development of graphical window-based applications.The APIW Window Subsystem section of
12、 the standard covers the creation, deletion and management of the window, includingwindow positioning and sizing and the sending and receiving of messages. Within each of these window managementsubsections are routines that significantly extend the basic functions. With window creation, there are ma
13、ny types of windowsthat can be created including built-in classes and user-definable classes, that have the ability to modify the style of any one ofthe built-in classes. Additional functions are defined to affect the display of a window, including functions to modify thewindows menu, scrollbars, an
14、d the display of carets or cursors within the window. With multiple overlapped windows beingdisplayed simultaneously, functions are defined to manage the position and size of those windows, as well as to control thevisibility of a window and its associated icon when it is minimized.The APIW Window S
15、ubsystem section also defines a set of functions for managing a subset of the user interface, referred to asdialog boxes. These functions allow for the creation and management of the dialog box, as well as the user interaction with thedialog box up to its closure. Utility functions are defined to ma
16、ke designing and using a dialog box easier. These utilitiesprovide common dialog box functions, such as group boxes and check boxes, as well as file interface functions to list files anddirectories. Each of these dialog boxes are controlled by the use of dialog box templates that are stored in resou
17、rce files.The APIW Graphics Subsystem section covers all aspects of actually drawing in a window. These aspects include line drawing,text output, graphics primitives, such as rectangles and ellipses, as well as more sophisticated routines such as floodfill(),bitblts() and stretchblt(). The Graphics
18、Device Interface defines bitmaps, icons, cursors and carets, as well as functions toprovide for a portable graphics file format called metafiles. The Graphics Device Interface defines a logical coordinate space tofurther abstract the underlying hardware and has functions to map between the logical a
19、nd physical coordinate space. TheGraphics Device Interface defines utility functions for all drawing routines that use pens, brushes and regions to get precisecontrol over how graphical objects will be drawn.The APIW System Services section defines platform-independent routines for an application to
20、 query the system environmentand access system services. System services that may be accessed include memory, timers, the keyboard and the native filesystem. There are subsections that deal with resources, device I/O and system diagnostic routines. Resource managementallows for the loading and unloa
21、ding of user- and system-defined resources, such as icons, bitmaps and strings. Device I/Oincludes both parallel and serial port input and output operations. System diagnostic routines enable an application ordiagnostic tool to examine the state of an application, including memory utilization, task
22、information and stack usage.The APIW Application Support Function section defines miscellaneous functions that can be used by a developer in anapplication. These utility functions define built-in services that a developer does not have to rewrite with each application.These service functions include
23、 debugging routines and simple user interface routines to provide graphical feedback to a user.They also include routines for file compression and decompression, standardized routines to retrieve application versioninformation and routines to manage initialization files.Adopted as an ECMA Standard b
24、y the General Assembly of December 1995.- i -Table of contentsAnnex A - Supported Windows 3.1 Functions 1Annex B - Unsupported Windows 3.1 Functions 9Annex C - Data Structures 13Annex D - Window Messages 69Annex E - Control Notifications 151Annex F - Window Styles 159Annex G - Macros 167Annex H - Bi
25、nary Raster Operations 177Annex ASupported Windows 3.1 FunctionsA.1 DescriptionThe following table is an alphabetical list of the supported Windows 3.1 functions._lclose BringWindowToTop CreateBitmap_lcreate BuildCommDCB CreateBitmapIndirect_llseek CallMsgFilter CreateBrushIndirect_lopen CallNextHoo
26、kEx CreateCaret_lread CallWindowProc CreateCompatibleBitmap_lwrite CallWndProc CreateCompatibleDCAbortDoc Catch CreateCursorAbortProc ChangeClipboardChain CreateDCAddAtom CheckDlgButton CreateDialogAddFontResource CheckMenuItem CreateDialogIndirectAdjustWindowRect CheckRadioButton CreateDialogIndire
27、ctParamAdjustWindowRectEx ChildWindowFromPoint CreateDialogParamAllocResource ChooseColor CreateDIBitmapAnimatePalette ChooseFont CreateDIBPatternBrushAnsiLower Chord CreateDiscardableBitmapAnsiLowerBuf ClearCommBreak CreateEllipticRgnAnsiNext ClientToScreen CreateEllipticRgnIndirectAnsiPrev ClipCur
28、sor CreateFontAnsiToOem CloseClipboard CreateFontIndirectAnsiToOemBuff CloseComm CreateHatchBrushAnsiUpper CloseMetaFile CreateICAnsiUpperBuf CloseWindow CreateIconAnyPopup CombineRgn CreateMenuAppendMenu CommDlgExtendedError CreateMetaFileArc CopyCursor CreatePaletteArrangeIconicWindows CopyIcon Cr
29、eatePatternBrushBeginDeferWindowPos CopyMetaFile CreatePenBeginPaint CopyRect CreatePenIndirectBitBlt CountClipboardFormats CreatePolygonRgn- 2 -CreatePolyPolygonRgn DispatchMessage EnumObjectsProcCreatePopupMenu DlgDirList EnumPropsCreateRectRgn DlgDirListComboBox EnumPropsProcCreateRectRgnIndirect
30、 DlgDirSelect EnumTaskWindowsCreateRoundRectRgn DlgDirSelectComboBox EnumTaskWndProcCreateSolidBrush DlgDirSelectComboBoxEx EnumWindowsCreateWindow DlgDirSelectEx EnumWindowsProcCreateWindowEx DPtoLP EqualRectDebugOutput DrawFocusRect EqualRgnDefDlgProc DrawIcon EscapeDeferWindowPos DrawMenuBar Esca
31、peCommFunctionDefFrameProc DrawText ExcludeClipRectDefHookProc Ellipse ExcludeUpdateRgnDefMDIChildProc EmptyClipboard ExitWindowsDefWindowProc EnableCommNotification ExtDeviceModeDeleteAtom EnableMenuItem ExtFloodFillDeleteDC EnableScrollBar ExtractIconDeleteMenu EnableWindow ExtTextOutDeleteMetaFil
32、e EndDeferWindowPos FatalAppExitDeleteObject EndDialog FatalExitDestroyCaret EndDoc FillRectDestroyCursor EndPage FillRgnDestroyIcon EndPaint FindAtomDestroyMenu EnumChildProc FindExecutableDestroyWindow EnumChildWindows FindResourceDeviceCapabilities EnumClipboardFormats FindTextDeviceMode EnumFont
33、FamProc FindWindowDialogBox EnumFontProc FlashWindowDialogBoxIndirect EnumFonts FloodFillDialogBoxIndirectParam EnumFontsFamilies FlushCommDialogBoxParam EnumMetaFile FrameRectDialogProc EnumMetaFileProc FrameRgnDirectedYield EnumObjects FreeLibrary- 3 -FreeModule GetCommEventMask GetKeyNameTextFree
34、ProcInstance GetCommState GetKeyStateFreeResource GetCurrentPosition GetLastActivePopupGetActiveWindow GetCurrentPositionEx GetMapModeGetAspectRatioFilter GetCurrentTask GetMenuGetAspectRatioFilterEx GetCurrentTime GetMenuCheckMarkDimensionsGetAsyncKeyState GetCursor GetMenuItemCountGetAtomName GetC
35、ursorPos GetMenuItemIDGetBitmapBits GetDC GetMenuStateGetBitMapDimension GetDCEx GetMenuStringGetBitMapDimensionEx GetDCOrg GetMessageGetBkColor GetDeskTopWindow GetMessageExtraInfoGetBkMode GetDeviceCaps GetMessagePosGetBoundsRect GetDialogBaseUnits GetMessageTimeGetBrushOrg GetDIBits GetMetaFileGe
36、tBrushOrgEx GetDlgCtrlID GetMetaFileBitsGetCapture GetDlgItem GetModuleFileNameGetCaretBlinkTime GetDlgItemInt GetModuleHandleGetCaretPos GetDlgItemText GetModuleUsageGetCharABCWidths GetDoubleClickTime GetMsgProcGetCharWidth GetDriveType GetNearestColorGetClassInfo GetExpandedName GetNearestPalette
37、IndexGetClassLong GetFileTitle GetNextDlgGroupItemGetClassName GetFocus GetNextDlgTabItemGetClassWord GetFontData GetNextWindowGetClientRect GetFreeSpace GetNumTasksGetClipboardData GetFreeSystemResources GetObjectGetClipboardFormatName GetInputState GetOpenClipboardWindowGetClipboardOwner GetInstan
38、ceData GetOpenFileNameGetClipboardViewer GetKBCodePage GetOutlineTextMetricsGetClipBox GetKerningPairs GetPaletteEntriesGetClipCursor GetKeyboardState GetParentGetCommErrror GetKeyboardType GetPixel- 4 -GetPolyFillMode GetTextFace GlobalFlagsGetPriorityClipboardFormat GetTextMetrics GlobalFreeGetPri
39、vateProfileInt GetTickCount GlobalGetAtomNameGetPrivateProfileString GetTimerResolution GlobalHandleGetProcAddress GetTopWindow GlobalLockGetProfileInt GetUpdateRect GlobalLRUNewestGetProfileString GetUpdateRgn GlobalLRUOldestGetProp GetVersion GlobalNotifyGetQueueStatus GetViewportExt GlobalReAlloc
40、GetRasterizerCaps GetViewportExtEx GlobalSizeGetRgnBox GetViewportOrg GlobalUnfixGetROP2 GetViewportOrgEx GlobalUnlockGetSaveFileName GetWindow GrayStringGetScrollPos GetWindowDC GrayStringProcGetScrollRange GetWindowExt HideCaretGetStockObject GetWindowExtEx HiLiteMenuItemGetStretchBltMode GetWindo
41、wLong InflateRectGetSubMenu GetWindowOrg InitAtomTableGetSysColors GetWindowOrgEx InSendMessageGetSysModalWindow GetWindowPlacement InsertMenuGetSystemDirectory GetWindowRect IntersectClipRectGetSystemMenu GetWindowsDir IntersectRectGetSystemMetrics GetWindowTask InvalidateRectGetSystemPaletteEntrie
42、s GetWindowText InvalidateRgnGetSystemPaletteUse GetWindowTextLength InvertRectGetTabbedTextExtent GetWindowWord InvertRgnGetTempDrive GetWinFlags IsBadCodePtrGetTempFileName GlobalAddAtom IsBadHugeReadPtrGetTextAlign GlobalAlloc IsBadHugeWritePtrGetTextCharacterExtra GlobalCompact IsBadReadPtrGetTe
43、xtColor GlobalDeleteAtom IsBadStringPtrGetTextExtent GlobalFindAtom IsBadWritePtrGetTextExtentPoint GlobalFix IsCharAlpha- 5 -IsCharAlphaNumeric LocalCompact MulDivIsCharLower LocalFirst NotifyProcIsCharUpper LocalFlags OemKeyScanIsChild LocalFree OemToAnsiIsClipboardFormatAvailable LocalHandle OemT
44、oAnsiBuffIsDBCSLeadByte LocalInit OffsetClipRgnIsDialogMessage LocalLock OffsetRectIsDlgButtonChecked LocalNext OffsetRgnIsGDIObject LocalRealloc OffsetViewportOrgIsIconic LocalShrink OffsetViewportOrgExIsMenu LocalSize OffsetWindowOrgIsRectEmpty LocalUnlock OffsetWindowOrgExIsTask LockInput OpenCli
45、pboardIsWindow LockResource OpenCommIsWindowEnabled LockWindowUpdate OpenFileIsWindowVisible LPtoDP OpenIconIsZoomed lstrcat OutputDebugStringKillTimer lstrcmp PaintRgnLibMain lstrcmpi PatBltLineDDA lstrcpy PeekMessageLineDDAProc lstrcpyn PieLineTo lstrlen PlayMetaFileLoadBitmap MakeProcInstance Pla
46、yMetaFileRecordLoadCursor MapDialogRect PolygonLoadIcon MapVirtualKey PolyLineLoadLibrary MapWindowPoints PolyPolygonLoadMenu MessageBeep PostAppMessageLoadMenuIndirect MessageBox PostMessageLoadModule MessageProc PostQuitMessageLoadProc ModifyMenu PrintDlgLoadResource MoveTo PtInRectLoadString Move
47、ToEx PtInRegionLocalAlloc MoveWindow PtVisible- 6 -QueryAbort ScaleWindowExtEx SetDlgItemIntQuerySendMessage ScreenToClient SetDlgItemTextReadComm ScrollDC SetDoubleClickTimeRealizePalette ScrollWindow SetErrorModeRectangle ScrollWindowEx SetFocusRectInRegion SelectClipRgn SetHandleCountRectVisible
48、SelectObject SetKeyboardStateRedrawWindow SelectPalette SetMapModeRegCloseKey SendDlgItemMessage SetMapperFlagsRegCreateKey SendMessage SetMenuRegDeleteKey SetAbortProc SetMessageQueueRegEnumKey SetActiveWindow SetMetaFileBitsRegisterClass SetBitmapBits SetMetaFileBitsBetterRegisterClipboardFormat S
49、etBitMapDimension SetPaletteEntriesRegisterWindowMessage SetBitMapDimensionEx SetParentRegOpenKey SetBkColor SetPixelRegQueryValue SetBkMode SetPolyFillModeRegSetValue SetBoundsRect SetPropReleaseCapture SetBrushOrg SetRectReleaseDC SetCapture SetRectEmptyRemoveFontResource SetCaretBlinkTime SetRectRgnRemoveMenu SetCaretPos SetResourceHandlerRemoveProp SetClassLong SetROP2ReplaceText SetClassWord SetScrollPosReplyMessage SetClipboardData SetScrollRangeResetDC SetClipboardViewer SetStretchBltModeResizePalette SetCommBreak SetSysColorsRestoreDC SetCommEventMask SetSysModalWindowRoundRec