Solved

call windowsAPI functions in Assembler

Posted on 1998-12-13
1
588 Views
Last Modified: 2013-12-03
How can I call windowsAPI functions in Assembler?
PLease give me a program fully written in asm for windows(e.g. create a window and show a message box)
thank tou!
0
Comment
Question by:buza
1 Comment
 

Accepted Solution

by:
toannds earned 300 total points
Comment Utility
Hi,

Of course you can. I use Turbo Assembler. Here's the code. The startup code is mine and the example is of Borland.

STARTUP.ASM
SAMPLE.ASM
SAMPLE.MAK
WINFUNC.INC
(You can generate WINFUNC.INC from WINDOWS.ASH by FILTER.CPP)

My email: toannds@hotmail.com

;[]------------------------------------------------------------[]
;|      STARTUP.ASM -- Start up      code for Windows program      |
;[]------------------------------------------------------------[]
;Copyright by Nguyen Dinh Song Toan 08-1996

locals      @@
model      small

extrn      WINMAIN            :NEAR
extrn      INITAPP            :FAR
extrn      INITTASK      :FAR
extrn      FATALEXIT      :FAR
extrn      WAITEVENT      :FAR
extrn      LOCKSEGMENT      :FAR
extrn      UNLOCKSEGMENT      :FAR

DATASEG
            dw      0
__holdSP      dw      0
__holdSS      dw      0
__plocalHeap      dw      0
__pAtomTable      dw      0
__pStackTop      dw      0
__pStackMin      dw      0
__pStackMax      dw      0

            db      "(C) Copyright by Nguyen Dinh Song Toan 8-1996"

__psp            dw      0
__hInstance      dw      0
__hPrev            dw      0
__pszCmdline      dw      0
__cmdShow      dw      0
;------------------------------------------------------------------------------
CODESEG
main            PROC NEAR
;Windows initialization.  Sets up registers and      stack.
            ;INITTASK returns:
            ;  'Failure:
            ;    AX      = zero if it failed
            ;  Success:
            ;    AX      = 1
            ;    CX      = stack      limit
            ;    DX      = cmdShow parameter to CreateWindow
            ;    ES:BX = ->      DOS format command line      (ES = PSP address)
            ;    SI      = hPrevinstance
            ;    DI      = hinstance
            call      INITTASK
            or      ax,ax
            jnz      @@OK
            jmp      @@Fail
@@OK:            mov      __psp,es
            mov      __pszCmdline,bx
            mov      __hPrev,si
            mov      __hInstance,di
            mov      __cmdShow,dx

            mov      ax,-1
            call      LOCKSEGMENT PASCAL,AX

;Init the Windows App

            xor      ax,ax
            call      WAITEVENT PASCAL,ax
            call      INITAPP      PASCAL,__hInstance
            or      ax,ax
            jnz      @@InitOK
            jmp      @@Fail
@@InitOK:
;Set up      and call WinMain
            call      WINMAIN      PASCAL,__hInstance,__hPrev,__psp __pszCmdLine,__cmdShow
            push      ax
            mov      ax,-1
            call      UNLOCKSEGMENT PASCAL,AX
            pop      ax
@@Fail:
            mov      ah,4Ch                  ;exit
            int      21h
ENDP

END main
;---------------------------------------------------------------
;      Turbo      Assembler    Copyright (c) 1988, 1991 By Borland International,      Inc.
;      Sample.ASM -      Template for writing windows programs
;      From the Turbo Assembler Users Guide

286
MODEL      SMALL      ;other models are allowed
LOCALS      @@      ;Enable local symbols

;Include the standard library for Windows
INCLUDELIB IMPORT.LIB

;Include files
INCLUDE      WINDOWS.INC      ;contains definitions for Windows data types,etc.
INCLUDE      WINFUNC.INC      ;contains definitions for Windows routines,etc.
;------------------------------------------------------------------------------
DATASEG
;initialized data goes here

lpszClass      db 'GenericWClass',0        ;class name of windows used by application
lpszTitle      db 'Generic Sample Assembly Application',0 ;title of the application
lpszMenu      db 'GenericMenu',0         ;default menu title

UDATASEG
;uninitialized data goes here

hInstance      dw      ?               ;current instance handle
;------------------------------------------------------------------------------
CODESEG
;[Main Application Windows procedure]
;Execution starts here!
;Returns AX=0 if initialization      was unsuccessful

WinMain      PROC WINDOWS PASCAL
PUBLIC PASCAL WinMain
ARG      @@hInstance:WORD,            \Handle to this instance
      @@hPrevInstance:WORD,      \Handle to previous instance
      @@lpszCmd:DWORD,            \Pointer to command line
      @@nShow:WORD            ;value to pass to ShowWindow
USES ES,SI,DI

UDATASEG
      @@msg      MSGSTRUCT      ?      ;message storage
      @@wc      WNDCLASS      ?      ;window class structure

CODESEG
      MOV AX,@@hInstance
      MOV hInstance,AX

      ;Initialize window class structure.
      ;These parameters may change      based on your preferences
      MOV      @@wc.clshInstance,AX
      XOR      AX,AX
      MOV      WORD PTR @@wc.clslpfnWndProc,OFFSET MainMsgProc
      MOV      WORD PTR @@wc.clslpfnWndProc+2,CS
      MOV      WORD PTR @@wc.clslpszClassName,OFFSET lpszClass
      MOV      WORD PTR @@wc.clslpszClassName+2,DS
      MOV      WORD PTR @@wc.clslpszMenuName,OFFSET lpszMenu
      MOV      WORD PTR @@wc.clslpszMenuName+2,DS
      MOV      @@wc.clsStyle,AX
      MOV      @@wc.clscbClsExtra,AX
      MOV      @@wc.clscbWndExtra,AX
      CALL      LoadIcon PASCAL,AX,AX IDI_APPLICATION
      MOV      @@wc.clshIcon,AX
      XOR      AX,AX
      CALL      LoadCursor PASCAL,AX,AX      IDC_ARROW
      MOV      @@wc.clshCursor,AX
      CALL      GetStockObject PASCAL,WHITE_BRUSH
      MOV      @@wc.clshbrBackground,AX

      ;Register class
      CALL      RegisterClass PASCAL,DS      OFFSET @@wc

      ;Now create window.
      ;This uses default parameters; your preferences may vary.
      XOR      AX,AX
      MOV      BX,CW_USEDEFAULT
      CALL      CreateWindow PASCAL,DS OFFSET lpszClass,DS OFFSET lpszTitle,\
            WS_OVERLAPPEDWINDOW AX,\
            BX,BX,BX,BX,\
            AX,AX,hInstance,AX AX

      ;AX is the window descriptor. Display window and update it.
      PUSH      AX
      CALL      ShowWindow PASCAL,AX,@@nShow
      POP      AX
      CALL      UpdateWindow PASCAL,AX

      ;Message handler loop.
@@LUP:      CALL      GetMessage PASCAL,DS OFFSET @@msg,0,0,0
      AND      AX,AX
      JZ      @@RET
      CALL      DispatchMessage      PASCAL,DS OFFSET @@msg
      JMP      @@LUP
@@RET:                         ;no more messages
      MOV      AX,-1
@@QUIT:      RET
WinMain      ENDP
;----------------------------------------------------------------------
;Main message-handling procedure
;An address to this procedure is passed      to Windows during
;initialization      portion      of WinMain.
;This works by scanning      the message dispatch table for a matching
;message, and calling the appropriate handler. If message is not
;present in handler table, it is passed      back to      Windows      to handle.
;Returns a value in DX:AX that is 0 if message was handled.
;----------------------------------------------------------------------
MainMsgProc PROC WINDOWS PASCAL      FAR

ARG      @@hwnd:WORD,            \Window descriptor
      @@message:WORD,            \ID of      message
      @@wParam:WORD,            \Additional word
      @@lParam:DWORD            ;additional dword
USES      ES,SI,DI

DATASEG

;Table of messages this      procedure will handle.

;This structure      represents an entry in a message table.
@@MsgRec      STRUC
@@MsgType      DW      0             ;message ID
@@MsgProc      DW      ?             ;procedure address
@@MsgRec      ENDS

;Add to      these as you wish.
@@MsgTable LABEL @@MsgRec
      @@MsgRec {@@MsgType=WM_DESTROY, @@MsgProc=DestroyWindow}
      @@MsgRec {@@MsgType=WM_PAINT, @@MsgProc=PaintWindow}
      @@MsgRec {}      ;Terminate the list

CODESEG
      ;Dispatch based on message type.
      MOV      SI,OFFSET @@MsgTable
@@LP:      MOV      AX,[SI.@@MsgType]
      AND      AX,AX
      JZ      @@NF
      CMP      AX,@@message
      JZ      @@FD
      ADD      SI,SIZE @@MsgRec
      JMP      SHORT @@LP
@@FD:                    ;found; call routine to handle message
      CALL      [SI.@@MsgProc] PASCAL,@@hwnd,@@wParam,@@lParam
      XOR      AX,AX
      XOR      DX,DX
      RET
@@NF:                    ;not found; take default action
      CALL      DefWindowProc PASCAL,@@hwnd,@@message,@@wParam,@@lParam

      ;Return whatever the default handler returns
      RET
MainMsgProc ENDP

;----------------------------------------------------------------------
;These are the routines      to handle messages.
;These message-handling      routines are NEAR PASCAL procedures that take
;as arguments the window handle, and the word and dword      param from
;the message.
;New message-handling routines should be added here.
;----------------------------------------------------------------------
;Process WM_DESTROY message
;Closes      the window.
DestroyWindow PROC PASCAL NEAR
ARG      @@hwnd:WORD,            \Window descriptor
      @@wParam:WORD,            \Word parameter
      @@lParam:DWORD            ;dword parameter

      CALL PostQuitMessage PASCAL,0
      RET
DestroyWindow ENDP
;----------------------------------------------------------------------
;Process WM_PAINT message
;Repaints the window.
PaintWindow PROC PASCAL      NEAR
ARG      @@hwnd:WORD,            \Window descriptor.
      @@wParam:WORD,            \Word parameter
      @@lParam:DWORD            ;dword parameter
LOCAL      @@hdc:WORD            ;handle to device context

DATASEG
      @@text      db      "Hello, world!"
      TEXTLEN=$-@@text

UDATASEG
      @@ps      PAINTSTRUCT ?

CODESEG
       CALL      BeginPaint PASCAL,@@hwnd,DS OFFSET @@ps
       MOV      @@hdc,AX
       SUB      BX,BX
       CALL      TextOut      PASCAL,@@hdc,BX,BX,DS OFFSET @@text,TEXTLEN
       CALL      EndPaint PASCAL, @@hwnd,DS OFFSET @@ps
       RET
PaintWindow ENDP

END

;--------------------------------------------------------------
;SAMPLE.MAK
;--------------------------------------------------------------
TASMCFG=-m10 -mu -q -z -zi -iD:\BORLANDC\INCLUDE
TLINKCFG=-v -Twe -LD:\BORLANDC\LIB

sample.exe: sample.obj startup.obj sample.def sample.mak
      tlink $(TLINKCFG) startup+sample,sample,,,sample.def
asm.obj:
      tasm $(TASMCFG) $<
;---------------------------------------------------------------
;-----------------------------------------------------------
;       WINFUNC.INC
;      Windows 3.1 functions
;       This file is generated by FILTER.CPP
;      (C) Copyright by Nguyen Dinh Song Toan 08-1996
;-----------------------------------------------------------
GLOBAL      PASCAL      WinMain            :NEAR
GLOBAL      PASCAL      LibMain            :FAR
GLOBAL      PASCAL      WEP            :FAR
GLOBAL      PASCAL      GetVersion      :FAR
GLOBAL      PASCAL      GetFreeSpace      :FAR
GLOBAL      PASCAL      GetCurrentPDB      :FAR
GLOBAL      PASCAL      GetWindowsDirectory      :FAR
GLOBAL      PASCAL      GetSystemDirectory      :FAR
GLOBAL      PASCAL      GetFreeSystemResources      :FAR
GLOBAL      PASCAL      GetWinFlags            :FAR
GLOBAL      PASCAL      GetDOSEnvironment      :FAR
GLOBAL      PASCAL      GetCurrentTime      :FAR
GLOBAL      PASCAL      GetTickCount      :FAR
GLOBAL      PASCAL      GetTimerResolution      :FAR
GLOBAL      PASCAL      LogError      :FAR
GLOBAL      PASCAL      LogParamError      :FAR
GLOBAL      PASCAL      GetWinDebugInfo      :FAR
GLOBAL      PASCAL      SetWinDebugInfo      :FAR
GLOBAL      C      DebugOutput      :FAR
GLOBAL      PASCAL      FatalExit      :FAR
GLOBAL      PASCAL      FatalAppExit      :FAR
GLOBAL      PASCAL      ExitWindows      :FAR
GLOBAL      PASCAL      ExitWindowsExec      :FAR
GLOBAL      PASCAL      DebugBreak      :FAR
GLOBAL      PASCAL      OutputDebugString      :FAR
GLOBAL      PASCAL      SetErrorMode      :FAR
GLOBAL      PASCAL      IsBadReadPtr      :FAR
GLOBAL      PASCAL      IsBadWritePtr      :FAR
GLOBAL      PASCAL      IsBadHugeReadPtr      :FAR
GLOBAL      PASCAL      IsBadHugeWritePtr      :FAR
GLOBAL      PASCAL      IsBadCodePtr      :FAR
GLOBAL      PASCAL      IsBadStringPtr      :FAR
GLOBAL      PASCAL      ProfInsChk      :FAR
GLOBAL      PASCAL      ProfSetup      :FAR
GLOBAL      PASCAL      ProfSampRate      :FAR
GLOBAL      PASCAL      ProfStart      :FAR
GLOBAL      PASCAL      ProfStop      :FAR
GLOBAL      PASCAL      ProfClear      :FAR
GLOBAL      PASCAL      ProfFlush      :FAR
GLOBAL      PASCAL      ProfFinish      :FAR
GLOBAL      PASCAL      Catch            :FAR
GLOBAL      PASCAL      Throw            :FAR
GLOBAL      PASCAL      SwitchStackBack      :FAR
GLOBAL      PASCAL      SwitchStackTo      :FAR
GLOBAL      PASCAL      LoadModule      :FAR
GLOBAL      PASCAL      FreeModule      :FAR
GLOBAL      PASCAL      LoadLibrary      :FAR
GLOBAL      PASCAL      FreeLibrary      :FAR
GLOBAL      PASCAL      WinExec            :FAR
GLOBAL      PASCAL      GetModuleHandle      :FAR
GLOBAL      PASCAL      GetModuleUsage      :FAR
GLOBAL      PASCAL      GetModuleFileName      :FAR
GLOBAL      PASCAL      GetProcAddress      :FAR
GLOBAL      PASCAL      GetInstanceData      :FAR
GLOBAL      PASCAL      GetCodeHandle      :FAR
GLOBAL      PASCAL      GetCodeInfo            :FAR
GLOBAL      PASCAL      MakeProcInstance      :FAR
GLOBAL      PASCAL      FreeProcInstance      :FAR
GLOBAL      PASCAL      SetSwapAreaSize      :FAR
GLOBAL      PASCAL      SwapRecording      :FAR
GLOBAL      PASCAL      ValidateCodeSegments            :FAR
GLOBAL      PASCAL      GetNumTasks      :FAR
GLOBAL      PASCAL      IsTask            :FAR
GLOBAL      PASCAL      GetCurrentTask      :FAR
GLOBAL      PASCAL      Yield            :FAR
GLOBAL      PASCAL      DirectedYield      :FAR
GLOBAL      PASCAL      GlobalAlloc      :FAR
GLOBAL      PASCAL      GlobalReAlloc      :FAR
GLOBAL      PASCAL      GlobalFree      :FAR
GLOBAL      PASCAL      GlobalDosAlloc      :FAR
GLOBAL      PASCAL      GlobalDosFree      :FAR
GLOBAL      PASCAL      GlobalLock      :FAR
GLOBAL      PASCAL      GlobalUnlock      :FAR
GLOBAL      PASCAL      GlobalSize      :FAR
GLOBAL      PASCAL      GlobalHandle      :FAR
GLOBAL      PASCAL      GlobalFlags      :FAR
GLOBAL      PASCAL      GlobalWire      :FAR
GLOBAL      PASCAL      GlobalUnWire      :FAR
GLOBAL      PASCAL      GlobalPageLock      :FAR
GLOBAL      PASCAL      GlobalPageUnlock:FAR
GLOBAL      PASCAL      GlobalFix      :FAR
GLOBAL      PASCAL      GlobalUnfix      :FAR
GLOBAL      PASCAL      GlobalLRUNewest      :FAR
GLOBAL      PASCAL      GlobalLRUOldest      :FAR
GLOBAL      PASCAL      GlobalCompact      :FAR
GLOBAL      PASCAL      GlobalNotify      :FAR
GLOBAL      PASCAL      LockSegment      :FAR
GLOBAL      PASCAL      UnlockSegment      :FAR
GLOBAL      PASCAL      AllocSelector      :FAR
GLOBAL      PASCAL      FreeSelector      :FAR
GLOBAL      PASCAL      AllocDStoCSAlias      :FAR
GLOBAL      PASCAL      PrestoChangoSelector      :FAR
GLOBAL      PASCAL      GetSelectorBase            :FAR
GLOBAL      PASCAL      SetSelectorBase            :FAR
GLOBAL      PASCAL      GetSelectorLimit      :FAR
GLOBAL      PASCAL      SetSelectorLimit      :FAR
GLOBAL      PASCAL      LimitEmsPages            :FAR
GLOBAL      PASCAL      ValidateFreeSpaces      :FAR
GLOBAL      PASCAL      LocalAlloc            :FAR
GLOBAL      PASCAL      LocalReAlloc            :FAR
GLOBAL      PASCAL      LocalFree            :FAR
GLOBAL      PASCAL      LocalLock            :FAR
GLOBAL      PASCAL      LocalUnlock            :FAR
GLOBAL      PASCAL      LocalSize            :FAR
GLOBAL      PASCAL      LocalHandle            :FAR
GLOBAL      PASCAL      LocalFlags            :FAR
GLOBAL      PASCAL      LocalInit            :FAR
GLOBAL      PASCAL      LocalCompact      :FAR
GLOBAL      PASCAL      LocalShrink      :FAR
GLOBAL      PASCAL      _lopen            :FAR
GLOBAL      PASCAL      _lcreat            :FAR
GLOBAL      PASCAL      _lclose            :FAR
GLOBAL      PASCAL      _llseek            :FAR
GLOBAL      PASCAL      _lread            :FAR
GLOBAL      PASCAL      _lwrite            :FAR
GLOBAL      PASCAL      _hread            :FAR
GLOBAL      PASCAL      _hwrite            :FAR
GLOBAL      PASCAL      GetTempFileName      :FAR
GLOBAL      PASCAL      GetTempDrive      :FAR
GLOBAL      PASCAL      GetDriveType      :FAR
GLOBAL      PASCAL      SetHandleCount      :FAR
GLOBAL      PASCAL      WNetAddConnection      :FAR
GLOBAL      PASCAL      WNetGetConnection      :FAR
GLOBAL      PASCAL      WNetCancelConnection      :FAR
GLOBAL      PASCAL      FindResource      :FAR
GLOBAL      PASCAL      LoadResource      :FAR
GLOBAL      PASCAL      FreeResource      :FAR
GLOBAL      PASCAL      LockResource      :FAR
GLOBAL      PASCAL      SizeofResource      :FAR
GLOBAL      PASCAL      AccessResource      :FAR
GLOBAL      PASCAL      AllocResource      :FAR
GLOBAL      PASCAL      SetResourceHandler      :FAR
GLOBAL      PASCAL      InitAtomTable      :FAR
GLOBAL      PASCAL      AddAtom            :FAR
GLOBAL      PASCAL      DeleteAtom      :FAR
GLOBAL      PASCAL      FindAtom      :FAR
GLOBAL      PASCAL      GetAtomName      :FAR
GLOBAL      PASCAL      GlobalAddAtom      :FAR
GLOBAL      PASCAL      GlobalDeleteAtom:FAR
GLOBAL      PASCAL      GlobalFindAtom      :FAR
GLOBAL      PASCAL      GlobalGetAtomName      :FAR
GLOBAL      PASCAL      GetAtomHandle      :FAR
GLOBAL      PASCAL      GetProfileInt      :FAR
GLOBAL      PASCAL      GetProfileString      :FAR
GLOBAL      PASCAL      WriteProfileString      :FAR
GLOBAL      PASCAL      GetPrivateProfileInt            :FAR
GLOBAL      PASCAL      GetPrivateProfileString            :FAR
GLOBAL      PASCAL      WritePrivateProfileString      :FAR
GLOBAL      PASCAL      AnsiToOem      :FAR
GLOBAL      PASCAL      OemToAnsi      :FAR
GLOBAL      PASCAL      AnsiToOemBuff      :FAR
GLOBAL      PASCAL      OemToAnsiBuff      :FAR
GLOBAL      PASCAL      AnsiNext      :FAR
GLOBAL      PASCAL      AnsiPrev      :FAR
GLOBAL      PASCAL      AnsiUpper      :FAR
GLOBAL      PASCAL      AnsiLower      :FAR
GLOBAL      PASCAL      AnsiUpperBuff      :FAR
GLOBAL      PASCAL      AnsiLowerBuff      :FAR
GLOBAL      PASCAL      IsCharAlpha            :FAR
GLOBAL      PASCAL      IsCharAlphaNumeric      :FAR
GLOBAL      PASCAL      IsCharUpper            :FAR
GLOBAL      PASCAL      IsCharLower            :FAR
GLOBAL      PASCAL      lstrcmp            :FAR
GLOBAL      PASCAL      lstrcmpi      :FAR
GLOBAL      PASCAL      lstrcpy            :FAR
GLOBAL      PASCAL      lstrcat            :FAR
GLOBAL      PASCAL      lstrlen            :FAR
GLOBAL      PASCAL      lstrcpyn      :FAR
GLOBAL      PASCAL      hmemcpy            :FAR
GLOBAL      PASCAL      IsDBCSLeadByte      :FAR
GLOBAL      PASCAL      LoadString      :FAR
GLOBAL      PASCAL      OemKeyScan      :FAR
GLOBAL      PASCAL      VkKeyScan      :FAR
GLOBAL      PASCAL      GetKeyboardType      :FAR
GLOBAL      PASCAL      MapVirtualKey      :FAR
GLOBAL      PASCAL      GetKBCodePage      :FAR
GLOBAL      PASCAL      GetKeyNameText      :FAR
GLOBAL      PASCAL      ToAscii            :FAR
GLOBAL      PASCAL      CreateDC            :FAR
GLOBAL      PASCAL      CreateIC            :FAR
GLOBAL      PASCAL      CreateCompatibleDC      :FAR
GLOBAL      PASCAL      DeleteDC            :FAR
GLOBAL      PASCAL      GetDCOrg            :FAR
GLOBAL      PASCAL      SaveDC            :FAR
GLOBAL      PASCAL      RestoreDC      :FAR
GLOBAL      PASCAL      SetEnvironment      :FAR
GLOBAL      PASCAL      GetEnvironment      :FAR
GLOBAL      PASCAL      MulDiv            :FAR
GLOBAL      PASCAL      SetBoundsRect      :FAR
GLOBAL      PASCAL      GetBoundsRect      :FAR
GLOBAL      PASCAL      GetDeviceCaps      :FAR
GLOBAL      PASCAL      SetMapMode      :FAR
GLOBAL      PASCAL      GetMapMode      :FAR
GLOBAL      PASCAL      SetWindowOrg      :FAR
GLOBAL      PASCAL      GetWindowOrg      :FAR
GLOBAL      PASCAL      SetWindowExt      :FAR
GLOBAL      PASCAL      GetWindowExt      :FAR
GLOBAL      PASCAL      OffsetWindowOrg      :FAR
GLOBAL      PASCAL      ScaleWindowExt      :FAR
GLOBAL      PASCAL      SetViewportOrg      :FAR
GLOBAL      PASCAL      GetViewportOrg      :FAR
GLOBAL      PASCAL      SetViewportExt      :FAR
GLOBAL      PASCAL      GetViewportExt      :FAR
GLOBAL      PASCAL      OffsetViewportOrg      :FAR
GLOBAL      PASCAL      ScaleViewportExt      :FAR
GLOBAL      PASCAL      SetWindowOrgEx      :FAR
GLOBAL      PASCAL      GetWindowOrgEx      :FAR
GLOBAL      PASCAL      SetWindowExtEx      :FAR
GLOBAL      PASCAL      GetWindowExtEx      :FAR
GLOBAL      PASCAL      OffsetWindowOrgEx      :FAR
GLOBAL      PASCAL      ScaleWindowExtEx      :FAR
GLOBAL      PASCAL      SetViewportExtEx      :FAR
GLOBAL      PASCAL      GetViewportExtEx      :FAR
GLOBAL      PASCAL      SetViewportOrgEx      :FAR
GLOBAL      PASCAL      GetViewportOrgEx      :FAR
GLOBAL      PASCAL      OffsetViewportOrgEx      :FAR
GLOBAL      PASCAL      ScaleViewportExtEx      :FAR
GLOBAL      PASCAL      DPtoLP            :FAR
GLOBAL      PASCAL      LPtoDP            :FAR
GLOBAL      PASCAL      GetNearestColor      :FAR
GLOBAL      PASCAL      GetSysColor      :FAR
GLOBAL      PASCAL      SetSysColors      :FAR
GLOBAL      PASCAL      GetStockObject      :FAR
GLOBAL      PASCAL      IsGDIObject      :FAR
GLOBAL      PASCAL      DeleteObject      :FAR
GLOBAL      PASCAL      SelectObject      :FAR
GLOBAL      PASCAL      GetObject      :FAR
GLOBAL      PASCAL      UnrealizeObject      :FAR
GLOBAL      PASCAL      EnumObjects            :FAR
GLOBAL      PASCAL      CreatePen            :FAR
GLOBAL      PASCAL      CreatePenIndirect      :FAR
GLOBAL      PASCAL      CreateSolidBrush      :FAR
GLOBAL      PASCAL      CreateHatchBrush      :FAR
GLOBAL      PASCAL      CreatePatternBrush      :FAR
GLOBAL      PASCAL      CreateDIBPatternBrush      :FAR
GLOBAL      PASCAL      CreateBrushIndirect      :FAR
GLOBAL      PASCAL      SetBrushOrg            :FAR
GLOBAL      PASCAL      GetBrushOrg            :FAR
GLOBAL      PASCAL      GetBrushOrgEx            :FAR
GLOBAL      PASCAL      CreateRectRgn            :FAR
GLOBAL      PASCAL      CreateRectRgnIndirect      :FAR
GLOBAL      PASCAL      CreateEllipticRgnIndirect      :FAR
GLOBAL      PASCAL      CreateEllipticRgn      :FAR
GLOBAL      PASCAL      CreatePolygonRgn      :FAR
GLOBAL      PASCAL      CreatePolyPolygonRgn      :FAR
GLOBAL      PASCAL      CreateRoundRectRgn      :FAR
GLOBAL      PASCAL      SetRectRgn            :FAR
GLOBAL      PASCAL      CombineRgn            :FAR
GLOBAL      PASCAL      EqualRgn            :FAR
GLOBAL      PASCAL      OffsetRgn            :FAR
GLOBAL      PASCAL      GetRgnBox            :FAR
GLOBAL      PASCAL      RectInRegion      :FAR
GLOBAL      PASCAL      PtInRegion      :FAR
GLOBAL      PASCAL      CreatePalette      :FAR
GLOBAL      PASCAL      SelectPalette      :FAR
GLOBAL      PASCAL      RealizePalette      :FAR
GLOBAL      PASCAL      UpdateColors      :FAR
GLOBAL      PASCAL      AnimatePalette      :FAR
GLOBAL      PASCAL      SetPaletteEntries      :FAR
GLOBAL      PASCAL      GetPaletteEntries      :FAR
GLOBAL      PASCAL      GetNearestPaletteIndex      :FAR
GLOBAL      PASCAL      ResizePalette            :FAR
GLOBAL      PASCAL      GetSystemPaletteEntries      :FAR
GLOBAL      PASCAL      GetSystemPaletteUse      :FAR
GLOBAL      PASCAL      SetSystemPaletteUse      :FAR
GLOBAL      PASCAL      SelectClipRgn            :FAR
GLOBAL      PASCAL      GetClipBox            :FAR
GLOBAL      PASCAL      IntersectClipRect      :FAR
GLOBAL      PASCAL      OffsetClipRgn            :FAR
GLOBAL      PASCAL      ExcludeClipRect            :FAR
GLOBAL      PASCAL      PtVisible            :FAR
GLOBAL      PASCAL      RectVisible            :FAR
GLOBAL      PASCAL      MoveTo                  :FAR
GLOBAL      PASCAL      GetCurrentPosition      :FAR
GLOBAL      PASCAL      MoveToEx            :FAR
GLOBAL      PASCAL      GetCurrentPositionEx      :FAR
GLOBAL      PASCAL      LineTo                  :FAR
GLOBAL      PASCAL      Polyline            :FAR
GLOBAL      PASCAL      LineDDA                  :FAR
GLOBAL      PASCAL      Rectangle            :FAR
GLOBAL      PASCAL      RoundRect            :FAR
GLOBAL      PASCAL      Ellipse            :FAR
GLOBAL      PASCAL      Arc            :FAR
GLOBAL      PASCAL      Chord            :FAR
GLOBAL      PASCAL      Pie            :FAR
GLOBAL      PASCAL      Polygon            :FAR
GLOBAL      PASCAL      PolyPolygon      :FAR
GLOBAL      PASCAL      SetPolyFillMode      :FAR
GLOBAL      PASCAL      GetPolyFillMode      :FAR
GLOBAL      PASCAL      FloodFill      :FAR
GLOBAL      PASCAL      ExtFloodFill      :FAR
GLOBAL      PASCAL      FillRgn            :FAR
GLOBAL      PASCAL      FrameRgn      :FAR
GLOBAL      PASCAL      InvertRgn      :FAR
GLOBAL      PASCAL      PaintRgn      :FAR
GLOBAL      PASCAL      FillRect      :FAR
GLOBAL      PASCAL      FrameRect      :FAR
GLOBAL      PASCAL      InvertRect      :FAR
GLOBAL      PASCAL      DrawFocusRect      :FAR
GLOBAL      PASCAL      TextOut            :FAR
GLOBAL      PASCAL      TabbedTextOut      :FAR
GLOBAL      PASCAL      ExtTextOut      :FAR
GLOBAL      PASCAL      GetTextExtent      :FAR
GLOBAL      PASCAL      GetTabbedTextExtent      :FAR
GLOBAL      PASCAL      GetTextExtentPoint      :FAR
GLOBAL      PASCAL      DrawText            :FAR
GLOBAL      PASCAL      GrayString            :FAR
GLOBAL      PASCAL      GetCharWidth            :FAR
GLOBAL      PASCAL      SetTextColor            :FAR
GLOBAL      PASCAL      GetTextColor            :FAR
GLOBAL      PASCAL      SetBkColor            :FAR
GLOBAL      PASCAL      GetBkColor            :FAR
GLOBAL      PASCAL      SetBkMode            :FAR
GLOBAL      PASCAL      GetBkMode            :FAR
GLOBAL      PASCAL      SetTextAlign            :FAR
GLOBAL      PASCAL      GetTextAlign            :FAR
GLOBAL      PASCAL      SetTextCharacterExtra      :FAR
GLOBAL      PASCAL      GetTextCharacterExtra      :FAR
GLOBAL      PASCAL      SetTextJustification      :FAR
GLOBAL      PASCAL      CreateFont            :FAR
GLOBAL      PASCAL      CreateFontIndirect      :FAR
GLOBAL      PASCAL      SetMapperFlags            :FAR
GLOBAL      PASCAL      AddFontResource            :FAR
GLOBAL      PASCAL      RemoveFontResource      :FAR
GLOBAL      PASCAL      GetTextFace            :FAR
GLOBAL      PASCAL      GetAspectRatioFilter      :FAR
GLOBAL      PASCAL      GetAspectRatioFilterEx      :FAR
GLOBAL      PASCAL      GetTextMetrics            :FAR
GLOBAL      PASCAL      GetOutlineTextMetrics      :FAR
GLOBAL      PASCAL      EnumFonts            :FAR
GLOBAL      PASCAL      EnumFontFamilies      :FAR
GLOBAL      PASCAL      GetFontData            :FAR
GLOBAL      PASCAL      CreateScalableFontResource      :FAR
GLOBAL      PASCAL      GetGlyphOutline            :FAR
GLOBAL      PASCAL      GetCharABCWidths      :FAR
GLOBAL      PASCAL      GetKerningPairs            :FAR
GLOBAL      PASCAL      GetRasterizerCaps      :FAR
GLOBAL      PASCAL      CreateBitmap            :FAR
GLOBAL      PASCAL      CreateBitmapIndirect      :FAR
GLOBAL      PASCAL      CreateCompatibleBitmap      :FAR
GLOBAL      PASCAL      CreateDiscardableBitmap      :FAR
GLOBAL      PASCAL      CreateDIBitmap            :FAR
GLOBAL      PASCAL      LoadBitmap            :FAR
GLOBAL      PASCAL      BitBlt                  :FAR
GLOBAL      PASCAL      PatBlt                  :FAR
GLOBAL      PASCAL      StretchBlt            :FAR
GLOBAL      PASCAL      StretchDIBits            :FAR
GLOBAL      PASCAL      SetPixel            :FAR
GLOBAL      PASCAL      GetPixel            :FAR
GLOBAL      PASCAL      SetStretchBltMode      :FAR
GLOBAL      PASCAL      GetStretchBltMode      :FAR
GLOBAL      PASCAL      SetBitmapDimension      :FAR
GLOBAL      PASCAL      GetBitmapDimension      :FAR
GLOBAL      PASCAL      SetBitmapDimensionEx      :FAR
GLOBAL      PASCAL      GetBitmapDimensionEx      :FAR
GLOBAL      PASCAL      SetROP2                  :FAR
GLOBAL      PASCAL      GetROP2                  :FAR
GLOBAL      PASCAL      SetBitmapBits            :FAR
GLOBAL      PASCAL      GetBitmapBits            :FAR
GLOBAL      PASCAL      SetDIBits            :FAR
GLOBAL      PASCAL      GetDIBits            :FAR
GLOBAL      PASCAL      SetDIBitsToDevice      :FAR
GLOBAL      PASCAL      CreateMetaFile            :FAR
GLOBAL      PASCAL      CloseMetaFile            :FAR
GLOBAL      PASCAL      GetMetaFile            :FAR
GLOBAL      PASCAL      DeleteMetaFile            :FAR
GLOBAL      PASCAL      CopyMetaFile            :FAR
GLOBAL      PASCAL      PlayMetaFile            :FAR
GLOBAL      PASCAL      GetMetaFileBits            :FAR
GLOBAL      PASCAL      SetMetaFileBits            :FAR
GLOBAL      PASCAL      SetMetaFileBitsBetter      :FAR
GLOBAL      PASCAL      PlayMetaFileRecord      :FAR
GLOBAL      PASCAL      EnumMetaFile            :FAR
GLOBAL      PASCAL      StartDoc            :FAR
GLOBAL      PASCAL      StartPage            :FAR
GLOBAL      PASCAL      EndPage                  :FAR
GLOBAL      PASCAL      EndDoc                  :FAR
GLOBAL      PASCAL      AbortDoc            :FAR
GLOBAL      PASCAL      SetAbortProc            :FAR
GLOBAL      PASCAL      SpoolFile            :FAR
GLOBAL      PASCAL      QueryAbort            :FAR
GLOBAL      PASCAL      Escape                  :FAR
GLOBAL      PASCAL      GetSystemMetrics      :FAR
GLOBAL      PASCAL      GetDoubleClickTime      :FAR
GLOBAL      PASCAL      SetDoubleClickTime      :FAR
GLOBAL      PASCAL      SystemParametersInfo      :FAR
GLOBAL      PASCAL      SetRect                  :FAR
GLOBAL      PASCAL      SetRectEmpty            :FAR
GLOBAL      PASCAL      CopyRect            :FAR
GLOBAL      PASCAL      IsRectEmpty            :FAR
GLOBAL      PASCAL      EqualRect            :FAR
GLOBAL      PASCAL      IntersectRect            :FAR
GLOBAL      PASCAL      UnionRect            :FAR
GLOBAL      PASCAL      SubtractRect            :FAR
GLOBAL      PASCAL      OffsetRect            :FAR
GLOBAL      PASCAL      InflateRect            :FAR
GLOBAL      PASCAL      PtInRect            :FAR
GLOBAL      PASCAL      RegisterWindowMessage      :FAR
GLOBAL      PASCAL      GetMessage            :FAR
GLOBAL      PASCAL      PeekMessage            :FAR
GLOBAL      PASCAL      WaitMessage            :FAR
GLOBAL      PASCAL      GetMessagePos            :FAR
GLOBAL      PASCAL      GetMessageTime            :FAR
GLOBAL      PASCAL      GetMessageExtraInfo      :FAR
GLOBAL      PASCAL      TranslateMessage      :FAR
GLOBAL      PASCAL      DispatchMessage      :FAR
GLOBAL      PASCAL      SetMessageQueue      :FAR
GLOBAL      PASCAL      GetInputState      :FAR
GLOBAL      PASCAL      GetQueueStatus      :FAR
GLOBAL      PASCAL      PostMessage      :FAR
GLOBAL      PASCAL      SendMessage      :FAR
GLOBAL      PASCAL      PostAppMessage      :FAR
GLOBAL      PASCAL      ReplyMessage      :FAR
GLOBAL      PASCAL      InSendMessage      :FAR
GLOBAL      PASCAL      CallMsgFilter      :FAR
GLOBAL      PASCAL      PostQuitMessage      :FAR
GLOBAL      PASCAL      RegisterClass      :FAR
GLOBAL      PASCAL      UnregisterClass      :FAR
GLOBAL      PASCAL      GetClassInfo      :FAR
GLOBAL      PASCAL      GetClassName      :FAR
GLOBAL      PASCAL      GetClassWord      :FAR
GLOBAL      PASCAL      SetClassWord      :FAR
GLOBAL      PASCAL      GetClassLong      :FAR
GLOBAL      PASCAL      SetClassLong      :FAR
GLOBAL      PASCAL      IsWindow      :FAR
GLOBAL      PASCAL      CreateWindowEx      :FAR
GLOBAL      PASCAL      CreateWindow      :FAR
GLOBAL      PASCAL      DestroyWindow      :FAR
GLOBAL      PASCAL      GetWindowTask      :FAR
GLOBAL      PASCAL      IsChild            :FAR
GLOBAL      PASCAL      GetParent      :FAR
GLOBAL      PASCAL      SetParent      :FAR
GLOBAL      PASCAL      IsWindowVisible      :FAR
GLOBAL      PASCAL      ShowWindow      :FAR
GLOBAL      PASCAL      EnableWindow      :FAR
GLOBAL      PASCAL      IsWindowEnabled      :FAR
GLOBAL      PASCAL      SetWindowText      :FAR
GLOBAL      PASCAL      GetWindowText      :FAR
GLOBAL      PASCAL      GetWindowTextLength      :FAR
GLOBAL      PASCAL      GetWindowWord      :FAR
GLOBAL      PASCAL      SetWindowWord      :FAR
GLOBAL      PASCAL      GetWindowLong      :FAR
GLOBAL      PASCAL      SetWindowLong      :FAR
GLOBAL      PASCAL      GetClientRect      :FAR
GLOBAL      PASCAL      GetWindowRect      :FAR
GLOBAL      PASCAL      GetWindowPlacement      :FAR
GLOBAL      PASCAL      SetWindowPlacement      :FAR
GLOBAL      PASCAL      SetWindowPos            :FAR
GLOBAL      PASCAL      BeginDeferWindowPos      :FAR
GLOBAL      PASCAL      DeferWindowPos            :FAR
GLOBAL      PASCAL      EndDeferWindowPos      :FAR
GLOBAL      PASCAL      MoveWindow            :FAR
GLOBAL      PASCAL      BringWindowToTop      :FAR
GLOBAL      PASCAL      DefWindowProc            :FAR
GLOBAL      PASCAL      CallWindowProc            :FAR
GLOBAL      PASCAL      AdjustWindowRect      :FAR
GLOBAL      PASCAL      AdjustWindowRectEx      :FAR
GLOBAL      PASCAL      FlashWindow            :FAR
GLOBAL      PASCAL      ShowOwnedPopups            :FAR
GLOBAL      PASCAL      OpenIcon            :FAR
GLOBAL      PASCAL      CloseWindow            :FAR
GLOBAL      PASCAL      AnyPopup            :FAR
GLOBAL      PASCAL      IsIconic            :FAR
GLOBAL      PASCAL      IsZoomed            :FAR
GLOBAL      PASCAL      ClientToScreen      :FAR
GLOBAL      PASCAL      ScreenToClient      :FAR
GLOBAL      PASCAL      MapWindowPoints      :FAR
GLOBAL      PASCAL      WindowFromPoint      :FAR
GLOBAL      PASCAL      ChildWindowFromPoint      :FAR
GLOBAL      PASCAL      GetDesktopWindow:FAR
GLOBAL      PASCAL      FindWindow      :FAR
GLOBAL      PASCAL      EnumWindows      :FAR
GLOBAL      PASCAL      EnumChildWindows:FAR
GLOBAL      PASCAL      EnumTaskWindows      :FAR
GLOBAL      PASCAL      GetTopWindow      :FAR
GLOBAL      PASCAL      GetWindow      :FAR
GLOBAL      PASCAL      GetNextWindow      :FAR
GLOBAL      PASCAL      SetProp            :FAR
GLOBAL      PASCAL      GetProp            :FAR
GLOBAL      PASCAL      RemoveProp      :FAR
GLOBAL      PASCAL      EnumProps      :FAR
GLOBAL      PASCAL      GetDC            :FAR
GLOBAL      PASCAL      ReleaseDC      :FAR
GLOBAL      PASCAL      GetWindowDC      :FAR
GLOBAL      PASCAL      GetDCEx            :FAR
GLOBAL      PASCAL      BeginPaint      :FAR
GLOBAL      PASCAL      EndPaint      :FAR
GLOBAL      PASCAL      UpdateWindow      :FAR
GLOBAL      PASCAL      ExcludeUpdateRgn:FAR
GLOBAL      PASCAL      LockWindowUpdate:FAR
GLOBAL      PASCAL      GetUpdateRect      :FAR
GLOBAL      PASCAL      GetUpdateRgn      :FAR
GLOBAL      PASCAL      InvalidateRect      :FAR
GLOBAL      PASCAL      ValidateRect      :FAR
GLOBAL      PASCAL      InvalidateRng      :FAR
GLOBAL      PASCAL      ValidateRgn      :FAR
GLOBAL      PASCAL      RedrawWindow      :FAR
GLOBAL      PASCAL      ScrollWindow      :FAR
GLOBAL      PASCAL      ScrollDC      :FAR
GLOBAL      PASCAL      ScrollWindowEx      :FAR
GLOBAL      PASCAL      SetActiveWindow      :FAR
GLOBAL      PASCAL      GetActiveWindow      :FAR
GLOBAL      PASCAL      GetLastActivePopup      :FAR
GLOBAL      PASCAL      SetFocus            :FAR
GLOBAL      PASCAL      GetFocus            :FAR
GLOBAL      PASCAL      GetKeyState            :FAR
GLOBAL      PASCAL      GetAsyncKeyState      :FAR
GLOBAL      PASCAL      GetKeyboardState      :FAR
GLOBAL      PASCAL      SetKeyboardState      :FAR
GLOBAL      PASCAL      SetCapture            :FAR
GLOBAL      PASCAL      ReleaseCapture            :FAR
GLOBAL      PASCAL      GetCapture            :FAR
GLOBAL      PASCAL      SwapMouseButton            :FAR
GLOBAL      PASCAL      GetSysModalWindow      :FAR
GLOBAL      PASCAL      SetSysModalWindow      :FAR
GLOBAL      PASCAL      SetTimer            :FAR
GLOBAL      PASCAL      KillTimer            :FAR
GLOBAL      PASCAL      LoadAccelerators      :FAR
GLOBAL      PASCAL      TranslateAccelerator      :FAR
GLOBAL      PASCAL      IsMenu            :FAR
GLOBAL      PASCAL      CreateMenu      :FAR
GLOBAL      PASCAL      CreatePopupMenu      :FAR
GLOBAL      PASCAL      LoadMenu      :FAR
GLOBAL      PASCAL      LoadMenuIndirect:FAR
GLOBAL      PASCAL      DestroyMenu      :FAR
GLOBAL      PASCAL      GetMenu            :FAR
GLOBAL      PASCAL      SetMenu            :FAR
GLOBAL      PASCAL      GetSystemMenu      :FAR
GLOBAL      PASCAL      DrawMenuBar      :FAR
GLOBAL      PASCAL      HiliteMenuItem      :FAR
GLOBAL      PASCAL      InsertMenu      :FAR
GLOBAL      PASCAL      AppendMenu      :FAR
GLOBAL      PASCAL      ModifyMenu      :FAR
GLOBAL      PASCAL      RemoveMenu      :FAR
GLOBAL      PASCAL      DeleteMenu      :FAR
GLOBAL      PASCAL      ChangeMenu      :FAR
GLOBAL      PASCAL      EnableMenuItem      :FAR
GLOBAL      PASCAL      CheckMenuItem      :FAR
GLOBAL      PASCAL      GetSubMenu      :FAR
GLOBAL      PASCAL      GetMenuItemCount:FAR
GLOBAL      PASCAL      GetMenuItemID      :FAR
GLOBAL      PASCAL      GetMenuString      :FAR
GLOBAL      PASCAL      GetMenuState      :FAR
GLOBAL      PASCAL      SetMenuItemBitmaps            :FAR
GLOBAL      PASCAL      GetMenuCheckMarkDimensions      :FAR
GLOBAL      PASCAL      TrackPopupMenu      :FAR
GLOBAL      PASCAL      SetScrollPos      :FAR
GLOBAL      PASCAL      GetScrollPos      :FAR
GLOBAL      PASCAL      SetScrollRange      :FAR
GLOBAL      PASCAL      GetScrollRange      :FAR
GLOBAL      PASCAL      ShowScrollBar      :FAR
GLOBAL      PASCAL      EnableScrollBar      :FAR
GLOBAL      PASCAL      OpenClipboard      :FAR
GLOBAL      PASCAL      CloseClipboard      :FAR
GLOBAL      PASCAL      EmptyClipboard      :FAR
GLOBAL      PASCAL      GetOpenClipboardWindow      :FAR
GLOBAL      PASCAL      GetClipboardOwner      :FAR
GLOBAL      PASCAL      SetClipboardViewer      :FAR
GLOBAL      PASCAL      GetClipboardViewer      :FAR
GLOBAL      PASCAL      SetClipboardData      :FAR
GLOBAL      PASCAL      GetClipboardData      :FAR
GLOBAL      PASCAL      IsClipboardFormatAvailable      :FAR
GLOBAL      PASCAL      GetPriorityClipboardFormat      :FAR
GLOBAL      PASCAL      RegisterClipboardFormat            :FAR
GLOBAL      PASCAL      CountClipboardFormats            :FAR
GLOBAL      PASCAL      EnumClipboardFormats            :FAR
GLOBAL      PASCAL      GetClipboardFormatName            :FAR
GLOBAL      PASCAL      ChangeClipboardChain            :FAR
GLOBAL      PASCAL      LoadCursor            :FAR
GLOBAL      PASCAL      CreateCursor            :FAR
GLOBAL      PASCAL      DestroyCursor            :FAR
GLOBAL      PASCAL      CopyCursor            :FAR
GLOBAL      PASCAL      ShowCursor            :FAR
GLOBAL      PASCAL      SetCursorPos            :FAR
GLOBAL      PASCAL      GetCursorPos            :FAR
GLOBAL      PASCAL      SetCursor            :FAR
GLOBAL      PASCAL      GetCursor            :FAR
GLOBAL      PASCAL      ClipCursor            :FAR
GLOBAL      PASCAL      GetClipCursor            :FAR
GLOBAL      PASCAL      LoadIcon            :FAR
GLOBAL      PASCAL      CreateIcon            :FAR
GLOBAL      PASCAL      DestroyIcon            :FAR
GLOBAL      PASCAL      CopyIcon            :FAR
GLOBAL      PASCAL      DrawIcon            :FAR
GLOBAL      PASCAL      MessageBox            :FAR
GLOBAL      PASCAL      MessageBeep            :FAR
GLOBAL      PASCAL      CreateCaret            :FAR
GLOBAL      PASCAL      DestroyCaret            :FAR
GLOBAL      PASCAL      SetCaretPos            :FAR
GLOBAL      PASCAL      GetCaretPos            :FAR
GLOBAL      PASCAL      HideCaret            :FAR
GLOBAL      PASCAL      ShowCaret            :FAR
GLOBAL      PASCAL      GetCaretBlinkTime      :FAR
GLOBAL      PASCAL      SetCaretBlinkTime      :FAR
GLOBAL      PASCAL      DefFrameProc            :FAR
GLOBAL      PASCAL      DefMDIChildProc            :FAR
GLOBAL      PASCAL      TranslateMDISysAccel      :FAR
GLOBAL      PASCAL      ArrangeIconicWindows      :FAR
GLOBAL      PASCAL      IsDialogMessage            :FAR
GLOBAL      PASCAL      DefDlgProc            :FAR
GLOBAL      PASCAL      CreateDialog            :FAR
GLOBAL      PASCAL      CreateDialogIndirect      :FAR
GLOBAL      PASCAL      CreateDialogParam      :FAR
GLOBAL      PASCAL      CreateDialogIndirectParam      :FAR
GLOBAL      PASCAL      DialogBox            :FAR
GLOBAL      PASCAL      DialogBoxIndirect      :FAR
GLOBAL      PASCAL      DialogBoxParam            :FAR
GLOBAL      PASCAL      DialogBoxIndirectParam      :FAR
GLOBAL      PASCAL      EndDialog            :FAR
GLOBAL      PASCAL      GetDlgCtrlID            :FAR
GLOBAL      PASCAL      GetDlgItem            :FAR
GLOBAL      PASCAL      SendDlgItemMessage      :FAR
GLOBAL      PASCAL      SetDlgItemInt            :FAR
GLOBAL      PASCAL      GetDlgItemInt            :FAR
GLOBAL      PASCAL      SetDlgItemText            :FAR
GLOBAL      PASCAL      GetDlgItemText            :FAR
GLOBAL      PASCAL      CheckDlgButton            :FAR
GLOBAL      PASCAL      CheckRadioButton      :FAR
GLOBAL      PASCAL      IsDlgButtonChecked      :FAR
GLOBAL      PASCAL      GetNextDlgGroupItem      :FAR
GLOBAL      PASCAL      GetNextDlgTabItem      :FAR
GLOBAL      PASCAL      MapDialogRect            :FAR
GLOBAL      PASCAL      GetDialogBaseUnits      :FAR
GLOBAL      PASCAL      DlgDirList            :FAR
GLOBAL      PASCAL      DlgDirSelect            :FAR
GLOBAL      PASCAL      DlgDirListComboBox      :FAR
GLOBAL      PASCAL      DlgDirSelectComboBox      :FAR
GLOBAL      PASCAL      DlgDirSelectEx            :FAR
GLOBAL      PASCAL      DlgDirSelectComboBoxEx      :FAR
GLOBAL      PASCAL      SetWindowsHook            :FAR
GLOBAL      PASCAL      DefHookProc            :FAR
GLOBAL      PASCAL      UnhookWindowsHook      :FAR
GLOBAL      PASCAL      SetWindowsHookEx      :FAR
GLOBAL      PASCAL      UnhookWindowsHookEx      :FAR
GLOBAL      PASCAL      CallNextHookEx            :FAR
GLOBAL      PASCAL      EnableHardwareInput      :FAR
GLOBAL      PASCAL      QuerySendMessage      :FAR
GLOBAL      PASCAL      LockInput            :FAR
GLOBAL      PASCAL      GetSystemDebugState      :FAR
GLOBAL      PASCAL      WinHelp                  :FAR
GLOBAL      PASCAL      OpenSound            :FAR
GLOBAL      PASCAL      CloseSound            :FAR
GLOBAL      PASCAL      StartSound            :FAR
GLOBAL      PASCAL      StopSound            :FAR
GLOBAL      PASCAL      SetVoiceQueueSize      :FAR
GLOBAL      PASCAL      SetVoiceNote            :FAR
GLOBAL      PASCAL      SetVoiceAccent            :FAR
GLOBAL      PASCAL      SetVoiceEnvelope      :FAR
GLOBAL      PASCAL      SetVoiceSound            :FAR
GLOBAL      PASCAL      SetVoiceThreshold      :FAR
GLOBAL      PASCAL      GetThresholdEvent      :FAR
GLOBAL      PASCAL      GetThresholdStatus      :FAR
GLOBAL      PASCAL      SetSoundNoise            :FAR
GLOBAL      PASCAL      WaitSoundState            :FAR
GLOBAL      PASCAL      SyncAllVoices            :FAR
GLOBAL      PASCAL      CountVoiceNotes            :FAR
GLOBAL      PASCAL      BuildCommDCB            :FAR
GLOBAL      PASCAL      OpenComm            :FAR
GLOBAL      PASCAL      CloseComm            :FAR
GLOBAL      PASCAL      ReadComm            :FAR
GLOBAL      PASCAL      WriteComm            :FAR
GLOBAL      PASCAL      UngetCommChar            :FAR
GLOBAL      PASCAL      FlushComm            :FAR
GLOBAL      PASCAL      TransmitCommChar      :FAR
GLOBAL      PASCAL      SetCommState            :FAR
GLOBAL      PASCAL      GetCommState            :FAR
GLOBAL      PASCAL      GetCommError            :FAR
GLOBAL      PASCAL      SetCommBreak            :FAR
GLOBAL      PASCAL      ClearCommBreak            :FAR
GLOBAL      PASCAL      SetCommEventMask      :FAR
GLOBAL      PASCAL      GetCommEventMask      :FAR
GLOBAL      PASCAL      EscapeCommFunction      :FAR
GLOBAL      PASCAL      EnableCommNotification      :FAR
GLOBAL      PASCAL      wvsprintf            :FAR
GLOBAL      C      WSPRINTF            :FAR
GLOBAL      PASCAL      DefDriverProc            :FAR
GLOBAL      PASCAL      OpenDriver            :FAR
GLOBAL      PASCAL      CloseDriver            :FAR
GLOBAL      PASCAL      SendDriverMessage      :FAR
GLOBAL      PASCAL      GetDriverModuleHandle      :FAR
GLOBAL      PASCAL      GetNextDriver            :FAR
GLOBAL      PASCAL      GetDriverInfo            :FAR
;---------------------------------------------------------------
;Filter.cpp
;---------------------------------------------------------------
#include <stdio.h>
#include <string.h>

void main()
      {
            FILE *in,*out;
            char string[256];

            if(!(in = fopen("WINDOWS.ASH","rt")))return;
            if(!(out = fopen("WINFUNC.INC","wt")))return;
            while(!feof(in)){
                  fgets(string,sizeof(string),in);
                  if(!strnicmp("GLOBAL",string,strlen("GLOBAL")))
                        fprintf(out,"%s",string);
            }
            fclose(in);
            fclose(out);
      }
0

Featured Post

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

Suggested Solutions

This tutorial is about how to put some of your C++ program's functionality into a standard DLL, and how to make working with the EXE and the DLL simple and seamless.   We'll be using Microsoft Visual Studio 2008 and we will cut out the noise; that i…
As more and more people are shifting to the latest .Net frameworks, the windows presentation framework is gaining importance by the day. Many people are now turning to WPF controls to provide a rich user experience. I have been using WPF controls fo…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now