LIBRARY USER32

DESCRIPTION 'Windows User - Client Portion'

EXPORTS
    ClientThreadSetup                           PRIVATE ;csrss uses GetProcAddr().
    DialogBoxIndirectParamAorW                  PRIVATE ; comdlg, wow
    CreateDialogIndirectParamAorW               PRIVATE ; comdlg
    EndMenu = NtUserEndMenu                     PRIVATE
    EndTask                                     PRIVATE
    GetAppCompatFlags                           PRIVATE
    LoadLocalFonts                              PRIVATE ; winlogon
    LoadRemoteFonts                             PRIVATE
    LockWindowStation = NtUserLockWindowStation PRIVATE
    MBToWCSEx                                   PRIVATE
    WCSToMBEx                                   PRIVATE
    MenuWindowProcA                             PRIVATE
    MenuWindowProcW                             PRIVATE
    QuerySendMessage = NtUserQuerySendMessage   PRIVATE
    RegisterServicesProcess                     PRIVATE
    RegisterLogonProcess                        PRIVATE
    SetLogonNotifyWindow = NtUserSetLogonNotifyWindow    PRIVATE   ; Chicago!
    ShowStartGlass                              PRIVATE
    UnlockWindowStation = NtUserUnlockWindowStation      PRIVATE   ; Chicago!
    UpdatePerUserSystemParameters               PRIVATE
    UserClientDllInitialize                     PRIVATE
    UserRealizePalette                          PRIVATE ; GDI32
    UserRegisterWowHandlers                     PRIVATE
    RegisterSystemThread                        PRIVATE ; Chicago!
    SetWindowStationUser                        PRIVATE
    GetCursorInfo                               PRIVATE
    SetCursorContents = NtUserSetCursorContents PRIVATE

    DrawCaptionTempA                            PRIVATE ; desk.cpl
    DrawCaptionTempW                            PRIVATE ; desk.cpl
    SetSysColorsTemp                            PRIVATE ; desk.cpl
    DrawMenuBarTemp                             PRIVATE

    TranslateMessageEx                          PRIVATE
    SetConsoleReserveKeys = NtUserSetConsoleReserveKeys  PRIVATE
    PrivateExtractIconExA                       PRIVATE
    PrivateExtractIconExW                       PRIVATE
    PrivateExtractIconsA                        PRIVATE
    PrivateExtractIconsW                        PRIVATE

    FullScreenControl = NtUserFullscreenControl PRIVATE

;
; These are macros
;
; GetNextWindow
; CopyCursor

;
; this stuff wasn't exported from win31 but was in this file
; for some reason
;
;    InitQueue
;    GetSysInputMode
;    IsTwoByteCharPrefix
;    Lookupmenuitem
;    RecalcTabStrings

;
; win32 will not support these functions
;
;    SetSysModalWindow
;    GetSysModalWindow

;
; do we support these functions?
;
;    EnableHardwareInput
;    GetSystemDebugState
;    GetCSSwitchCount

;
; Callbacks from Server
;
    EditWndProc

;
; class.c "Window class manipulation APIs and support routines."
;
    RegisterClassA
    RegisterClassW
    UnregisterClassA
    UnregisterClassW
    GetClassInfoA
    GetClassInfoW
    GetClassWord
    SetClassWord = NtUserSetClassWord
    GetClassLongA
    GetClassLongW
    SetClassLongA
    SetClassLongW
    GetClassNameA
    GetClassNameW

;
; clres.c "Resource loading/manipulation APIs."
;
    LookupIconIdFromDirectory
    CreateIconFromResource
    GetIconInfo
    CreateIconIndirect
    LoadMenuA
    LoadMenuW
    LoadCursorA
    LoadCursorW
    LoadIconA
    LoadIconW
    LoadBitmapA
    LoadBitmapW
    LoadAcceleratorsA
    LoadAcceleratorsW
    LoadStringA
    LoadStringW

;
; input.c "Window message receiving/dispatching APIs and support routines."
;
    GetMessageA
    GetMessageW
    PeekMessageA
    PeekMessageW
    TranslateMessage
    DispatchMessageA
    DispatchMessageW
    SetMessageQueue
    GetMessagePos
    GetMessageTime
    WaitMessage = NtUserWaitMessage
    WaitForInputIdle
    RegisterHotKey
    UnregisterHotKey = NtUserUnregisterHotKey
    GetMessageExtraInfo
    AttachThreadInput = NtUserAttachThreadInput

;
; sendmsg.c "Window message sending/posting APIs and support routines."
;
    SendMessageA
    SendMessageW
    SendMessageTimeoutA
    SendMessageTimeoutW
    SendNotifyMessageA
    SendNotifyMessageW
    SendMessageCallbackA
    SendMessageCallbackW
    PostMessageA
    PostMessageW
    PostThreadMessageA
    PostThreadMessageW
    ReplyMessage
    PostQuitMessage
    InSendMessage
    RegisterWindowMessageA
    RegisterWindowMessageW

;
; sysmet.c "System metrics APIs and support routines."
;
    SwapMouseButton
    GetDoubleClickTime = NtUserGetDoubleClickTime
    SetDoubleClickTime
    GetSystemMetrics
    GetSysColor
    SetSysColors

;
; enumwin.c "Window Enumeration APIs and support routines."
;
    EnumWindows
    EnumChildWindows
    EnumThreadWindows

;
; showwin.c "ShowWindow and related APIs and support routines."
;
    ShowWindow = NtUserShowWindow
    ShowOwnedPopups
    OpenIcon
    CloseWindow

;
; createw.c "CreateWindow and related APIs and support routines."
;
    CreateWindowExA
    CreateWindowExW
    DestroyWindow = NtUserDestroyWindow

;
; swp.c "SetWindowPos and related APIs and support routines."
;
    SetWindowPos = NtUserSetWindowPos
    BeginDeferWindowPos
    DeferWindowPos = NtUserDeferWindowPos
    EndDeferWindowPos
    MoveWindow = NtUserMoveWindow
    BringWindowToTop

;
; spb.c
;
    LockWindowUpdate = NtUserLockWindowUpdate

;
; winmgr.c "Core Window Manager APIs and support routines."
;
    DefWindowProcA
    DefWindowProcW
    CallWindowProcA
    CallWindowProcW
    FlashWindow
    EnableWindow
    IsWindowEnabled
    IsWindowUnicode
    SetWindowTextA
    SetWindowTextW
    GetWindowTextA
    GetWindowTextW
    InternalGetWindowText                       PRIVATE
    IsHungAppWindow                             PRIVATE
    GetWindowTextLengthA
    GetWindowTextLengthW
    GetClientRect
    GetWindowRect
    AdjustWindowRect
    AdjustWindowRectEx
    GetParent
    SetParent = NtUserSetParent
    FindWindowA
    FindWindowW
    GetTopWindow
    GetLastActivePopup
    GetWindow
    ClientToScreen
    ScreenToClient
    MapWindowPoints
    IsWindow
    IsChild
    IsWindowVisible
    IsIconic
    IsZoomed
    AnyPopup
    GetInternalWindowPos = NtUserGetInternalWindowPos   PRIVATE
    SetInternalWindowPos = NtUserSetInternalWindowPos   PRIVATE
    SystemParametersInfoA
    SystemParametersInfoW
    GetWindowThreadProcessId
    GetWindowPlacement
    SetWindowPlacement = NtUserSetWindowPlacement

;
; dlgmgr.c "Dialog Manager APIs and support routines."
;
    CreateDialogParamA
    CreateDialogParamW
    CreateDialogIndirectParamA
    CreateDialogIndirectParamW
    DialogBoxParamA
    DialogBoxParamW
    DialogBoxIndirectParamA
    DialogBoxIndirectParamW
    EndDialog
    DefDlgProcA
    DefDlgProcW
    GetDlgItem
    SetDlgItemInt
    GetDlgItemInt
    SetDlgItemTextA
    SetDlgItemTextW
    GetDlgItemTextA
    GetDlgItemTextW
    SendDlgItemMessageA
    SendDlgItemMessageW
    CheckDlgButton
    CheckRadioButton
    IsDlgButtonChecked
    GetNextDlgGroupItem
    GetNextDlgTabItem
    GetDlgCtrlID
    GetDialogBaseUnits
    MapDialogRect
    IsDialogMessageA
    IsDialogMessageW
    IsDialogMessage = IsDialogMessageA

;
; clipbrd.c "Clipboard Manager APIs and support routines."
;
    OpenClipboard
    CloseClipboard
    EnumClipboardFormats
    EmptyClipboard
    SetClipboardData
    GetClipboardData
    RegisterClipboardFormatA
    RegisterClipboardFormatW
    IsClipboardFormatAvailable = NtUserIsClipboardFormatAvailable
    GetClipboardFormatNameA
    GetClipboardFormatNameW
    CountClipboardFormats = NtUserCountClipboardFormats
    GetPriorityClipboardFormat = NtUserGetPriorityClipboardFormat
    GetClipboardOwner = NtUserGetClipboardOwner
    GetClipboardViewer = NtUserGetClipboardViewer
    SetClipboardViewer = NtUserSetClipboardViewer
    ChangeClipboardChain = NtUserChangeClipboardChain

;
; paint.c "Window painting APIs and support routines."
;
    BeginPaint = NtUserBeginPaint
    EndPaint = NtUserEndPaint
    GetWindowRgn
    SetWindowRgn

;
; update.c "Window updating APIs and support routines."
;
    UpdateWindow
    GetUpdateRect = NtUserGetUpdateRect
    GetUpdateRgn
    ExcludeUpdateRgn
    InvalidateRect = NtUserInvalidateRect
    ValidateRect = NtUserValidateRect
    InvalidateRgn
    ValidateRgn
    RedrawWindow

;
; focus.c "Focus/Activation APIs and support routines."
;
    SetFocus = NtUserSetFocus
    GetFocus
    SetActiveWindow = NtUserSetActiveWindow
    GetActiveWindow
    SetForegroundWindow
    GetForegroundWindow = NtUserGetForegroundWindow

;
; capture.c "Window capture APIs and support routines."
;
    GetCapture
    SetCapture = NtUserSetCapture
    ReleaseCapture

;
; kbdlyout.c "Keyboard Layout APIs and support routines."
;
    LoadKeyboardLayoutA
    LoadKeyboardLayoutW
    ActivateKeyboardLayout = NtUserActivateKeyboardLayout
    UnloadKeyboardLayout = NtUserUnloadKeyboardLayout
    GetKeyboardLayoutNameA
    GetKeyboardLayoutNameW
    LoadKeyboardLayoutEx             PRIVATE

;
; keyboard.c "Keyboard management APIs and support routines."
;
    GetKBCodePage
    GetKeyState
    GetAsyncKeyState
    GetKeyboardState
    SetKeyboardState = NtUserSetKeyboardState
    GetKeyNameTextA
    GetKeyNameTextW
    GetKeyboardType

;
; toascii.c "Virtual Keycode to Character translation"
;
    ToAscii
    ToUnicode
    VkKeyScanA
    VkKeyScanW

;
; xlate.c "Scancode, Virtual Key, and Character translations"
;
    MapVirtualKeyA
    MapVirtualKeyW
    OemKeyScan

;
; lowinput.c "Low-level input APIs and support routines."
;
    GetInputState
    GetQueueStatus
    MsgWaitForMultipleObjects
    MsgWaitForMultipleObjectsEx

;
; timers.c "Timer APIs and support routines."
;
    SetTimer = NtUserSetTimer
    KillTimer = NtUserKillTimer
    SetSystemTimer = NtUserSetSystemTimer
    KillSystemTimer

;
; menu.c "Menu APIs and support routines."
;
    TranslateAcceleratorA
    TranslateAcceleratorW
    TranslateAccelerator = TranslateAcceleratorA
    LoadMenuIndirectW = CreateMenuFromResource
    LoadMenuIndirectA = CreateMenuFromResource
    GetMenu
    SetMenu
    SetSystemMenu = NtUserSetSystemMenu
    ChangeMenuA
    ChangeMenuW
    HiliteMenuItem = NtUserHiliteMenuItem
    GetMenuStringA
    GetMenuStringW
    GetMenuState
    DrawMenuBar
    GetSystemMenu = NtUserGetSystemMenu
    CreateMenu
    CreatePopupMenu
    DestroyMenu = NtUserDestroyMenu
    CheckMenuItem
    EnableMenuItem
    GetSubMenu
    GetMenuItemID
    GetMenuItemCount
    InsertMenuA
    InsertMenuW
    AppendMenuA
    AppendMenuW
    ModifyMenuA
    ModifyMenuW
    RemoveMenu = NtUserRemoveMenu
    DeleteMenu = NtUserDeleteMenu
    SetMenuItemBitmaps
    GetMenuCheckMarkDimensions
    TrackPopupMenu
;
; scroll.c "Window/DC scrolling APIs and support routines."
;
; later scrollwindow can be removed
    ScrollWindow
    ScrollDC
    ScrollWindowEx = NtUserScrollWindowEx

;
; sbapi.c "Scrollbar control"
;
    SetScrollPos
    GetScrollPos
    SetScrollRange
    GetScrollRange
    ShowScrollBar = NtUserShowScrollBar

;
; prop.c "Window property APIs and support routines."
;
    SetPropA
    SetPropW
    GetPropA
    GetPropW
    RemovePropA
    RemovePropW
    EnumPropsA
    EnumPropsW
    EnumPropsExA
    EnumPropsExW

;
; msgbox.c "Message Box APIs and support routines."
;
    MessageBoxA
    MessageBoxW
    MessageBoxExA
    MessageBoxExW
    ;MessageBoxIndirectA
    ;MessageBoxIndirectW
    MessageBeep
    MB_GetString                                PRIVATE
    SoftModalMessageBox                         PRIVATE

;
; rmcreate.c
;
    CreateCursor
    DestroyCursor
    CreateIcon
    DestroyIcon             = DestroyCursor
    CreateAcceleratorTableA
    CreateAcceleratorTableW
    DestroyAcceleratorTable = NtUserDestroyAcceleratorTable
    CopyAcceleratorTableA
    CopyAcceleratorTableW

;
; cursor.c "Mouse cursor APIs and support routines."
;
    ShowCursor
    SetCursorPos
    SetCursor = NtUserSetCursor
    GetCursorPos
    ClipCursor = NtUserClipCursor
    GetClipCursor = NtUserGetClipCursor
    GetCursor
    SetSystemCursor
    LoadCursorFromFileA
    LoadCursorFromFileW

;
; icon.c "Icon management APIs and support routines"
;
    DrawIcon

;
; caret.c "Input caret APIs and support routines."
;
    CreateCaret
    GetCaretBlinkTime = NtUserGetCaretBlinkTime
    SetCaretBlinkTime
    DestroyCaret
    HideCaret = NtUserHideCaret
    ShowCaret = NtUserShowCaret
    SetCaretPos
    GetCaretPos = NtUserGetCaretPos

;
; winwhere.c "Window hit-testing APIs and support routines."
;
    WindowFromPoint = NtUserWindowFromPoint
    ChildWindowFromPoint

;
; getset.c "window word manipulation APIs"
;
    GetWindowWord
    SetWindowWord = NtUserSetWindowWord
    GetWindowLongA
    GetWindowLongW
    SetWindowLongA
    SetWindowLongW

;
; desktop.c "Desktop window APIs and window procedure."
;

;   GetDesktopHwnd
    GetDesktopWindow

    CreateDesktopA
    CreateDesktopW
    OpenDesktopA
    OpenDesktopW
    OpenInputDesktop = NtUserOpenInputDesktop
    SwitchDesktop = NtUserSwitchDesktop
    GetInputDesktop
    SetThreadDesktop = NtUserSetThreadDesktop
    GetThreadDesktop
    CloseDesktop = NtUserCloseDesktop
    RegisterTasklist = NtUserRegisterTasklist   PRIVATE
    SetDeskWallpaper
    EnumDisplayDevicesA                         PRIVATE
    EnumDisplayDevicesW                         PRIVATE
    EnumDisplaySettingsA
    EnumDisplaySettingsW
    EnumWindowStationsA
    EnumWindowStationsW
    EnumDesktopsA
    EnumDesktopsW
    EnumDesktopWindows

;
; winsta.c "Windowstation APIs."
;
    CreateWindowStationA
    CreateWindowStationW
    OpenWindowStationA
    OpenWindowStationW
    CloseWindowStation = NtUserCloseWindowStation
    SetProcessWindowStation = NtUserSetProcessWindowStation
    GetProcessWindowStation = NtUserGetProcessWindowStation

;
; security.c "USER object security routines."
;
    SetUserObjectSecurity
    GetUserObjectSecurity
    SetUserObjectInformationW = NtUserSetObjectInformation
    SetUserObjectInformationA = NtUserSetObjectInformation
    GetUserObjectInformationW = NtUserGetObjectInformation
    GetUserObjectInformationA

;
; dirlist.c "Directory list APIs and support routines."
;
    DlgDirListA
    DlgDirListW
    DlgDirSelectExA
    DlgDirSelectExW
    DlgDirListComboBoxA
    DlgDirListComboBoxW
    DlgDirSelectComboBoxExA
    DlgDirSelectComboBoxExW

;
; hooks.c "Hook APIs and support routines."
;
    SetWindowsHookA
    SetWindowsHookW
    UnhookWindowsHook
    SetWindowsHookExA
    SetWindowsHookExW
    UnhookWindowsHookEx = NtUserUnhookWindowsHookEx
    CallNextHookEx
    CallMsgFilterA
    CallMsgFilterW
    CallMsgFilter = CallMsgFilterA

;
; MDI.c "Multiple Document Interface APIs, window procs, and support routines."
;
    DefFrameProcA
    DefFrameProcW
    DefMDIChildProcA
    DefMDIChildProcW
    ArrangeIconicWindows
    CascadeChildWindows
    TileChildWindows
;   CalcChildScroll                 ; Private API used by progman
    CreateMDIWindowA
    CreateMDIWindowW
    ScrollChildren

;
; help.c "Front end API for Windows Help Manager."
;
    WinHelpA
    WinHelpW

;
; draw.c "Miscellaneous exported and internal drawing routines."
;
    GrayStringA
    GrayStringW
    DrawTextA
    DrawTextW
    TabbedTextOutA
    TabbedTextOutW
    GetTabbedTextExtentA
    GetTabbedTextExtentW
    DrawFocusRect

;
; dc.c "DC management APIs and support routines."
;
    GetWindowDC = NtUserGetWindowDC
    GetDC = NtUserGetDC
    ReleaseDC
    WindowFromDC
    GetDCEx

;
; palman.c "Palette Manager APIs and support routines."
;
;   SelectPalette
;   RealizePalette

;
; misc.c "Miscellanous APIs and routines that don't fit well anywhere else."
;
    ExitWindowsEx
    SwitchToThisWindow                          PRIVATE
    SetDebugErrorLevel = NtUserSetDebugErrorLevel

;
; clrect.c "Client-side rectangle drawing primitives"
;
    FillRect
    InvertRect
    FrameRect

;
; ddeml.c "DDEML APIs"
;
    DdeInitializeA
    DdeInitializeW
    DdeUninitialize
    DdeCmpStringHandles
    DdeConnectList
    DdeQueryNextServer
    DdeDisconnectList
    DdeConnect
    DdeDisconnect
    DdeReconnect
    DdeQueryConvInfo
    DdeSetUserHandle
    DdeAbandonTransaction
    DdePostAdvise
    DdeEnableCallback
    DdeNameService
    DdeClientTransaction
    DdeCreateDataHandle
    DdeAddData
    DdeGetData
    DdeAccessData
    DdeFreeDataHandle
    DdeUnaccessData
    DdeGetLastError
    DdeCreateStringHandleA
    DdeCreateStringHandleW
    DdeQueryStringA
    DdeQueryStringW
    DdeFreeStringHandle
    DdeKeepStringHandle
    DdeImpersonateClient
    ImpersonateDdeClientWindow = NtUserImpersonateDdeClientWindow
    DdeGetQualityOfService = NtUserDdeGetQualityOfService
    DdeSetQualityOfService = NtUserDdeSetQualityOfService

;
; ddetrack.c
;
    PackDDElParam
    UnpackDDElParam
    FreeDDElParam
    ReuseDDElParam

;
; dragdrop.c "Drag/Drop support functions."
;
    DragObject = NtUserDragObject
    DragDetect = NtUserDragDetect

;
; Merge 3.1.1
;
    GetOpenClipboardWindow = NtUserGetOpenClipboardWindow
    DrawFrame
    EnableScrollBar = NtUserEnableScrollBar
    CopyIcon

;
; winmgrc.c
;
    IsMenu

;
; rect.c "Rectangle management APIs."
;
    SetRect
    SetRectEmpty
    CopyRect
    InflateRect
    SubtractRect
    IntersectRect
    UnionRect
    OffsetRect
    IsRectEmpty
    EqualRect
    PtInRect

;
; strings.c "String manipulation routines.  Should be replaced with Rtl macros."
;
    wvsprintfA
    wvsprintfW
    wsprintfA
    wsprintfW

;    _wsprintf           ; removed
    CharLowerA
    CharLowerW
    CharUpperA
    CharUpperW
    CharNextA
    CharNextW
    CharPrevA
    CharPrevW
    IsCharLowerA
    IsCharLowerW
    IsCharUpperA
    IsCharUpperW
    IsCharAlphaA
    IsCharAlphaW
    IsCharAlphaNumericA
    IsCharAlphaNumericW
    CharLowerBuffA
    CharLowerBuffW
    CharUpperBuffA
    CharUpperBuffW

;
; oemxlate.c "OEM to ANSI/Unicode, ANSI/Unicode to OEM character translation"
;
    CharToOemA
    CharToOemW
    CharToOemBuffA
    CharToOemBuffW
    OemToCharA
    OemToCharW
    OemToCharBuffA
    OemToCharBuffW

;
; ntinput
;
    keybd_event = NtUserkeybd_event
    mouse_event = NtUsermouse_event

    SetLastErrorEx      ; to be moved!!!
;
; Chicago/Cairo APIs
;
    BroadcastSystemMessageA
    BroadcastSystemMessageW
    BroadcastSystemMessage = BroadcastSystemMessageA
    CascadeWindows
    ChangeDisplaySettingsA
    ChangeDisplaySettingsW
    ChangeDisplaySettingsExA
    ChangeDisplaySettingsExW
    CharNextExA                 ; Ansi Only
    CharPrevExA                 ; Ansi Only
    CheckMenuRadioItem = NtUserCheckMenuRadioItem
    ChildWindowFromPointEx = NtUserChildWindowFromPointEx
    CopyImage
    CreateIconFromResourceEx
    DrawAnimatedRects = NtUserDrawAnimatedRects
    DrawCaption
    DrawEdge
    DrawFrameControl
    DrawIconEx
    DrawStateA
    DrawStateW
    DrawTextExA
    DrawTextExW
    FindWindowExA
    FindWindowExW
    GetClassInfoExA
    GetClassInfoExW
    GetKeyboardLayout
    GetKeyboardLayoutList
    GetMenuContextHelpId
    GetMenuDefaultItem
#ifdef _KEIZON_
    GetMenuInfo
#endif
    GetMenuItemInfoA
    GetMenuItemInfoW
    GetMenuItemRect = NtUserGetMenuItemRect
    GetScrollInfo
    GetShellWindow
    GetSysColorBrush
    GetWindowContextHelpId
    InsertMenuItemA
    InsertMenuItemW
    LoadImageA
    LoadImageW
    LookupIconIdFromDirectoryEx
    MapVirtualKeyExA
    MapVirtualKeyExW
    MenuItemFromPoint = NtUserMenuItemFromPoint
    MessageBoxIndirectA
    MessageBoxIndirectW
    PaintDesktop
    RegisterClassExA
    RegisterClassExW
    SetMenuContextHelpId = NtUserSetMenuContextHelpId
    SetMenuDefaultItem = NtUserSetMenuDefaultItem
#ifdef _KEIZON_
    SetMenuInfo
#endif
    SetMenuItemInfoA
    SetMenuItemInfoW
    SetMessageExtraInfo
    SetScrollInfo = NtUserSetScrollInfo
    SetShellWindow
    SetShellWindowEx = NtUserSetShellWindowEx   PRIVATE
    SetWindowContextHelpId
    ShowWindowAsync = NtUserShowWindowAsync
    TileWindows
    ToAsciiEx
    ToUnicodeEx
    TrackMouseEvent = NtUserTrackMouseEvent
    TrackPopupMenuEx = NtUserTrackPopupMenuEx
    TranslateMDISysAccel
    VkKeyScanExA
    VkKeyScanExW

    SetTaskmanWindow                            PRIVATE
    GetTaskmanWindow                            PRIVATE
    SetProgmanWindow                            PRIVATE
    GetProgmanWindow                            PRIVATE
    RegisterShellHookWindow                     PRIVATE
    DeregisterShellHookWindow                   PRIVATE

    PrivateKDBreakPoint                         PRIVATE
