Browse Source

* patch by "Vasil" to fix various WinCE and Win32 API conversion issues

git-svn-id: trunk@15824 -
florian 15 years ago
parent
commit
59702147ff

+ 541 - 16
packages/winceunits/src/aygshell.pp

@@ -80,9 +80,6 @@
            288    SHBorderRectangle
            288    SHBorderRectangle
            104    SHBox
            104    SHBox
            103    SHBoxEx
            103    SHBoxEx
-           114    SHChangeNotifyDeregister
-           115    SHChangeNotifyFree
-           113    SHChangeNotifyRegister
             48    SHCheckForContextMenu
             48    SHCheckForContextMenu
             86    SHClearStartedBit
             86    SHClearStartedBit
             55    SHColorDisplay
             55    SHColorDisplay
@@ -95,7 +92,6 @@
             41    SHCreateContextMenu
             41    SHCreateContextMenu
             43    SHCreateMainWindow
             43    SHCreateMainWindow
             74    SHCreateMenuBarInternal
             74    SHCreateMenuBarInternal
-           108    SHCreateNewItem
             53    SHCreateSystemFont
             53    SHCreateSystemFont
             35    SHCreateWorkerWindow
             35    SHCreateWorkerWindow
            329    SHDeleteTodayWallpaper
            329    SHDeleteTodayWallpaper
@@ -127,7 +123,6 @@
             72    SHFontMgrManageFonts
             72    SHFontMgrManageFonts
             33    SHForceBaseState
             33    SHForceBaseState
             99    SHForceBaseStateEx
             99    SHForceBaseStateEx
-           102    SHFreeContextMenuExtensions
            120    SHFreeScanners
            120    SHFreeScanners
            213    SHGetActiveDialog
            213    SHGetActiveDialog
            292    SHGetBitmapDimensions
            292    SHGetBitmapDimensions
@@ -136,9 +131,7 @@
            224    SHGetCarrierBrandingFlag
            224    SHGetCarrierBrandingFlag
             96    SHGetDeviceFeatureLevel
             96    SHGetDeviceFeatureLevel
            299    SHGetDisplayRotation
            299    SHGetDisplayRotation
-           128    SHGetEmergencyCallList
            218    SHGetFontHeight
            218    SHGetFontHeight
-           232    SHGetInputContext
            133    SHGetKOBits
            133    SHGetKOBits
            305    SHGetLandscapeRotationSettings
            305    SHGetLandscapeRotationSettings
            345    SHGetLegacySupportWindow
            345    SHGetLegacySupportWindow
@@ -168,11 +161,9 @@
            149    SHInitPresetMessages
            149    SHInitPresetMessages
            181    SHInsertPresetMessage
            181    SHInsertPresetMessage
            129    SHInvalidateScreen
            129    SHInvalidateScreen
-           101    SHInvokeContextMenuCommand
            123    SHIsLocked
            123    SHIsLocked
            295    SHIsPreOzoneUpdate
            295    SHIsPreOzoneUpdate
             94    SHIsPreRapierApp
             94    SHIsPreRapierApp
-           100    SHLoadContextMenuExtensions
            230    SHLoadFileContextMenuExtensions
            230    SHLoadFileContextMenuExtensions
            313    SHLoadFontFromResource
            313    SHLoadFontFromResource
             91    SHLoadMenuPopup
             91    SHLoadMenuPopup
@@ -182,10 +173,6 @@
            235    SHMakeValidFilename
            235    SHMakeValidFilename
             32    SHMessageBox
             32    SHMessageBox
             80    SHNewProfileObj
             80    SHNewProfileObj
-           155    SHNotificationAdd
-           173    SHNotificationGetData
-           157    SHNotificationRemove
-           156    SHNotificationUpdate
            208    SHNotifyAppsOnCallConnect
            208    SHNotifyAppsOnCallConnect
            210    SHNotifyAppsOnCarkit
            210    SHNotifyAppsOnCarkit
            165    SHNotifyAppsOnDock
            165    SHNotifyAppsOnDock
@@ -220,11 +207,9 @@
            119    SHScanFile
            119    SHScanFile
             97    SHSendBackToFocusWindow
             97    SHSendBackToFocusWindow
            169    SHSetAsWatermark
            169    SHSetAsWatermark
-           184    SHSetBack
            161    SHSetBubbleRegion
            161    SHSetBubbleRegion
            298    SHSetDisplayRotation
            298    SHSetDisplayRotation
            131    SHSetForegroundLastActivePopup
            131    SHSetForegroundLastActivePopup
-           231    SHSetInputContext
            134    SHSetKOBits
            134    SHSetKOBits
            154    SHSetPresetMessage
            154    SHSetPresetMessage
            170    SHSetSimToolkitMenu
            170    SHSetSimToolkitMenu
@@ -284,6 +269,8 @@ unit aygshell;
 
 
 interface
 interface
 
 
+{$MODE OBJFPC}
+
 uses windows;
 uses windows;
 
 
 {$calling cdecl}
 {$calling cdecl}
@@ -481,6 +468,140 @@ type
   PSHCAMERACAPTURE=^TSHCAMERACAPTURE;
   PSHCAMERACAPTURE=^TSHCAMERACAPTURE;
 
 
 
 
+
+//====== File System Notification APIs ===============================
+//
+//
+//  File System Notification flags
+//
+const
+      SHCNE_RENAME              = $00000001;   // GOING AWAY
+      SHCNE_RENAMEITEM          = $00000001;
+      SHCNE_CREATE              = $00000002;
+      SHCNE_DELETE              = $00000004;
+      SHCNE_MKDIR               = $00000008;
+      SHCNE_RMDIR               = $00000010;
+      SHCNE_MEDIAINSERTED       = $00000020;
+      SHCNE_MEDIAREMOVED        = $00000040;
+      SHCNE_DRIVEREMOVED        = $00000080;
+      SHCNE_DRIVEADD            = $00000100;
+      SHCNE_NETSHARE            = $00000200;
+      SHCNE_NETUNSHARE          = $00000400;
+      SHCNE_ATTRIBUTES          = $00000800;
+      SHCNE_UPDATEDIR           = $00001000;
+      SHCNE_UPDATEITEM          = $00002000;
+      SHCNE_SERVERDISCONNECT    = $00004000;
+      SHCNE_UPDATEIMAGE         = $00008000;
+      SHCNE_DRIVEADDGUI         = $00010000;
+      SHCNE_RENAMEFOLDER        = $00020000;
+
+      SHCNE_ASSOCCHANGED        = $08000000;
+
+      SHCNE_DISKEVENTS          = $0002381F;
+      SHCNE_GLOBALEVENTS        = $0C0181E0; // Events that dont match pidls first
+      SHCNE_ALLEVENTS           = $7FFFFFFF;
+      SHCNE_INTERRUPT           = $80000000; // The presence of this flag indicates
+                                             // that the event was generated by an
+                                             // interrupt.  It is stripped out before
+                                             // the clients of SHCNNotify_ see it.
+
+// Flags
+// uFlags & SHCNF_TYPE is an ID which indicates what dwItem1 and dwItem2 mean
+      SHCNF_IDLIST      = $0000;  // LPITEMIDLIST
+      SHCNF_PATH        = $0001;  // path name
+      SHCNF_PRINTER     = $0002;  // printer friendly name
+      SHCNF_DWORD       = $0003;  // DWORD
+      SHCNF_TYPE        = $00FF;
+      SHCNF_FLUSH       = $1000;
+      SHCNF_FLUSHNOWAIT = $2000;
+
+const
+      WM_FILECHANGEINFO   = WM_APP + $0101;
+
+type
+     _FILECHANGEINFO = record
+       cbSize:DWORD;
+       wEventId:LONG;
+       uFlags:ULONG;
+       dwItem1:DWORD;
+       dwItem2:DWORD;
+       dwAttributes:DWORD;
+       ftModified:FILETIME;
+       nFileSize:ULONG;
+     end;
+     FILECHANGEINFO = _FILECHANGEINFO;
+     LPFILECHANGEINFO = ^_FILECHANGEINFO;
+     LPCFILECHANGEINFO = ^FILECHANGEINFO;
+
+     tagFILECHANGENOTIFY = record
+       dwRefCount:DWORD;
+       fci:FILECHANGEINFO;
+     end;
+     FILECHANGENOTIFY = tagFILECHANGENOTIFY;
+     LPFILECHANGENOTIFY = ^tagFILECHANGENOTIFY;
+
+     tagSHCHANGENOTIFYENTRY = record
+       dwEventMask:DWORD;    // Events to watch
+       pszWatchDir:LPTSTR;    // Directory or root for the events we want. NULL means all.
+       fRecursive:BOOL;     // Indicates whether look just for pszWatchDir or recursively.
+     end;
+     SHCHANGENOTIFYENTRY = tagSHCHANGENOTIFYENTRY;
+     LPSHCHANGENOTIFYENTRY = ^tagSHCHANGENOTIFYENTRY;
+
+     
+//////////////////////////////////////////////////////////////////////////////
+//
+// Input Context API
+//
+// These are definitions and APIs for the interacting with the input context
+// properties of individual windows
+//
+
+{$PUSH}
+{$PACKENUM 4}
+// Word correct Options
+type
+     SHIC_FEATURE = (SHIC_FEATURE_RESTOREDEFAULT := 0,
+                     SHIC_FEATURE_AUTOCORRECT    := $00000001,
+                     SHIC_FEATURE_AUTOSUGGEST    := $00000002,
+                     SHIC_FEATURE_HAVETRAILER    := $00000003,
+                     SHIC_FEATURE_CLASS          := $00000004);
+{$POP}
+
+const
+// Predefined input context classes
+      SHIC_CLASS_DEFAULT              = '';
+      SHIC_CLASS_EMAIL                = 'email';
+      SHIC_CLASS_URL                  = 'url';
+      SHIC_CLASS_PHONE                = 'phone';
+      SHIC_CLASS_NAME                 = 'name';
+      SHIC_CLASS_PHONE_AND_EMAIL      = 'phoneAndEmail';
+      SHIC_CLASS_MAXLEN               = MAX_PATH - 11;
+
+//@topic Input Context Features |
+// The input context API supports the following features and their corresponding values:
+//
+//@flag   SHIC_FEATURE_RESTOREDEFAULT   | Restore original input context state. (no corresponding value)
+//@flag   SHIC_FEATURE_AUTOCORRECT      | Turn auto-corrections on and off. (TRUE, FALSE)
+//@flag   SHIC_FEATURE_AUTOCOMPLETE     | Turn dictionary suggestions on and off. (TRUE, FALSE)
+//@flag   SHIC_FEATURE_HAVETRAILER      | Specify whether to append trailer characters after replacing words.
+//                                      (TRUE, FALSE)
+//@flag   SHIC_FEATURE_CLASS            | Make this control behave like a specific semantic type.
+//                                      (SHIC_CLASS_DEFAULT, SHIC_CLASS_EMAIL, SHIC_CLASS_URL,
+//                                      SHIC_CLASS_PHONE, SHIC_CLASS_NAME, SHIC_CLASS_PHONE_AND_EMAIL)
+//
+//@comm All SHIC_FEATUREs are inherited from parent if undefined. That is, if they are not defined in
+//      a window or the window's SHIC class, the API looks at the parent chain to find the setting
+//      that applies to the window.
+//
+//@xref <f SHSetInputContext> <f SHGetInputContext>
+//
+//
+// end Input Context API
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
 //*****************************************************************************
 //*****************************************************************************
 // functions
 // functions
 //*****************************************************************************
 //*****************************************************************************
@@ -489,17 +610,45 @@ function PathAddBackslash(lpszPath:LPTSTR):LPTSTR; external UserDLLAyg name 'Pat
 function PathCombine(lpszDest:LPTSTR; lpszDir:LPCTSTR; lpszFile:LPCTSTR):LPTSTR; external UserDLLAyg name 'PathCombine'; // index 26
 function PathCombine(lpszDest:LPTSTR; lpszDir:LPCTSTR; lpszFile:LPCTSTR):LPTSTR; external UserDLLAyg name 'PathCombine'; // index 26
 
 
 function ExitWindowsEx(uFlags:UINT; dwReserved:DWORD):WINBOOL; external UserDLLAyg name 'ExitWindowsEx';
 function ExitWindowsEx(uFlags:UINT; dwReserved:DWORD):WINBOOL; external UserDLLAyg name 'ExitWindowsEx';
+
+function SHChangeNotifyDeregister(_hwnd:HWND):BOOL; external UserDLLAyg name 'SHChangeNotifyDeregister'; // index 114
+procedure SHChangeNotifyFree(pfcn:LPFILECHANGENOTIFY); external UserDLLAyg name 'SHChangeNotifyFree'; // index 115
+function SHChangeNotifyRegister(_hwnd:HWND; pshcne:LPSHCHANGENOTIFYENTRY):BOOL; external UserDLLAyg name 'SHChangeNotifyRegister'; // index 113
 function SHCloseApps( dwMemSought : DWORD ): WINBOOL; external UserDLLAyg name 'SHCloseApps';
 function SHCloseApps( dwMemSought : DWORD ): WINBOOL; external UserDLLAyg name 'SHCloseApps';
 function SHCreateMenuBar(pmbi : PSHMENUBARINFO ): WINBOOL; external UserDLLAyg name 'SHCreateMenuBar';
 function SHCreateMenuBar(pmbi : PSHMENUBARINFO ): WINBOOL; external UserDLLAyg name 'SHCreateMenuBar';
+
+// SHCreateNewItem
+//    Creates a New item, as if an item were chosen from the
+//    global New menu dropdown.
+function SHCreateNewItem(hwndOwner:HWND; clsid:PCLSID{REFCLSID}):HRESULT; external UserDLLAyg name 'SHCreateNewItem'; // index 108
+
 function SHDoneButton(hwndRequester: HWND ; dwState : DWORD ): WINBOOL; external UserDLLAyg name 'SHDoneButton';
 function SHDoneButton(hwndRequester: HWND ; dwState : DWORD ): WINBOOL; external UserDLLAyg name 'SHDoneButton';
 function SHFindMenuBar(hwnd:HWND) : HWND; external UserDLLAyg name 'SHFindMenuBar';
 function SHFindMenuBar(hwnd:HWND) : HWND; external UserDLLAyg name 'SHFindMenuBar';
+function SHFreeContextMenuExtensions(hCMExtensions:HANDLE):BOOL; external UserDLLAyg name 'SHFreeContextMenuExtensions'; // index 102
 function SHFullScreen(hwmdRequester: hWnd; dwState: DWord): WINBOOL; external UserDLLAyg name 'SHFullScreen';  {Pocket PC  special controls}
 function SHFullScreen(hwmdRequester: hWnd; dwState: DWord): WINBOOL; external UserDLLAyg name 'SHFullScreen';  {Pocket PC  special controls}
-function SHGetAutoRunPath( pAutoRunPath : LPTSTR ): WINBOOL; external UserDLLAyg name 'SHGetAutoRunPath';  
+function SHGetAutoRunPath( pAutoRunPath : LPTSTR ): WINBOOL; external UserDLLAyg name 'SHGetAutoRunPath';
+
+//  SHGetEmergencyCallList
+//       Gets a list of emergency calls
+function SHGetEmergencyCallList(pwszBuffer:PTCHAR; uLenBuf:UINT):HRESULT; external UserDLLAyg name 'SHGetEmergencyCallList'; // index 128    
+
 function SHHandleWMActivate(hwnd:HWND; wParam:WPARAM; lParam:LPARAM; psai: PSHACTIVATEINFO; dwFlags:DWORD  ): WINBOOL; external UserDLLAyg index 84;
 function SHHandleWMActivate(hwnd:HWND; wParam:WPARAM; lParam:LPARAM; psai: PSHACTIVATEINFO; dwFlags:DWORD  ): WINBOOL; external UserDLLAyg index 84;
 function SHHandleWMSettingChange(hwnd:HWND; wParam:WPARAM; lParam:LPARAM; psai: PSHACTIVATEINFO): WINBOOL; external UserDLLAyg index 83;
 function SHHandleWMSettingChange(hwnd:HWND; wParam:WPARAM; lParam:LPARAM; psai: PSHACTIVATEINFO): WINBOOL; external UserDLLAyg index 83;
 function SHInitDialog(pshidi: PSHINITDLGINFO): WINBOOL; external UserDLLAyg name 'SHInitDialog';
 function SHInitDialog(pshidi: PSHINITDLGINFO): WINBOOL; external UserDLLAyg name 'SHInitDialog';
 function SHInitExtraControls: WINBOOL; external UserDLLAyg name 'SHInitExtraControls';
 function SHInitExtraControls: WINBOOL; external UserDLLAyg name 'SHInitExtraControls';
 procedure SHInputDialog(hwnd : HWND; uMsg : UINT; wParam: WPARAM ); external UserDLLAyg name 'SHInputDialog';
 procedure SHInputDialog(hwnd : HWND; uMsg : UINT; wParam: WPARAM ); external UserDLLAyg name 'SHInputDialog';
+
+//    Invokes a command from a context menu.  Issues the command in the
+//    extension that added it to the menu.
+function SHInvokeContextMenuCommand(hwndOwner:HWND; idCmd:UINT; hCMExtensions:HANDLE):BOOL; external UserDLLAyg name 'SHInvokeContextMenuCommand'; // index 101
+
+function SHLoadContextMenuExtensions(punkOwner:IUnknown;
+                                     pszContext:LPCTSTR;
+                                     pszClass:LPCTSTR;
+                                     _hmenu:HMENU;
+                                     idCmdFirst:UINT;
+                                     idCmdLast:UINT;
+                                     phCMExtensions:LPHANDLE):BOOL; external UserDLLAyg name 'SHLoadContextMenuExtensions'; // index 100
 function SHGetAppKeyAssoc( ptszApp: LPCTSTR ): Byte; external UserDLLAyg name 'SHGetAppKeyAssoc';
 function SHGetAppKeyAssoc( ptszApp: LPCTSTR ): Byte; external UserDLLAyg name 'SHGetAppKeyAssoc';
 function SHSetAppKeyWndAssoc( bVk: BYTE ; hwnd : HWND ): WINBOOL; external UserDLLAyg name 'SHSetAppKeyWndAssoc';
 function SHSetAppKeyWndAssoc( bVk: BYTE ; hwnd : HWND ): WINBOOL; external UserDLLAyg name 'SHSetAppKeyWndAssoc';
 function SHSetNavBarText(hwndRequester : HWND; pszText : LPCTSTR): WINBOOL; external UserDLLAyg name 'SHSetNavBarText';
 function SHSetNavBarText(hwndRequester : HWND; pszText : LPCTSTR): WINBOOL; external UserDLLAyg name 'SHSetNavBarText';
@@ -511,6 +660,382 @@ function SHSipPreference(hwnd: HWND ; st : SIPSTATE ) : WINBOOL; external UserDL
 function SHRecognizeGesture(var shrg : SHRGINFO): DWORD; external UserDLLAyg name 'SHRecognizeGesture';
 function SHRecognizeGesture(var shrg : SHRGINFO): DWORD; external UserDLLAyg name 'SHRecognizeGesture';
 function SHCameraCapture(var shcc: TSHCAMERACAPTURE): HRESULT; external UserDLLAyg name 'SHCameraCapture';
 function SHCameraCapture(var shcc: TSHCAMERACAPTURE): HRESULT; external UserDLLAyg name 'SHCameraCapture';
 
 
+//////////////////////////////////////////////////////////////////////////////
+//
+// Input Context API
+//
+// These are definitions and APIs for the interacting with the input context
+// properties of individual windows
+//
+
+//++++++
+//
+//@func HRESULT | SHSetInputContext | Changes the state of an input context feature
+//
+//@parm HWND            | hwnd      | IN - Window whose context will be set
+//@parm DWORD           | dwFeature | IN - Input context feature to change
+//@parm const LPVOID    | lpValue   | IN - New value assigned to feature
+//
+//@rdesc Returns one of the following values:
+//@flag S_OK                    | If everything went well
+//@flag ERROR_INVALID_PARAMETER | if hwnd was NULL or lpValue was NULL for a feature
+//                                that does not support it, such as SHIC_FEATURE_AUTOCORRECT,
+//                                SHIC_FEATURE_AUTOCOMPLETE and SHIC_FEATURE_HAVETRAILER.
+//@flag ERROR_NOT_SUPPORTED     | If the feature specified was invalid
+//@flag ERROR_INVALID_DATA      | If the specified value is not a legal option
+//
+//@xref <l Input_Context_Features> <f SHGetInputContext>
+//
+function SHSetInputContext(_hwnd:HWND; dwFeature:DWORD; lpValue:LPVOID):HRESULT; external UserDLLAyg name 'SHSetInputContext'; // index 231
+
+//++++++
+//
+//@func HRESULT | SHGetInputContext | Retrieves current state of an input context feature
+//
+//@parm HWND    | hwnd      | IN - Window whose context will be retrieved
+//@parm DWORD   | dwFeature | IN - Input context feature to retrieve
+//@parm LPVOID  | lpValue   | OUT - Buffer to hold current value of feature
+//@parm LPDWORD | pdwSize   | IN/OUT - size of the buffer passed in to retrieve the value
+//
+//@rdesc Returns one of the following values:
+//@flag S_OK                        | If everything went well
+//@flag ERROR_INVALID_PARAMETER     | If hwnd or lpdwSize passed were NULL
+//@flag ERROR_NOT_SUPPORTED         | If the feature specified was invalid
+//@flag ERROR_INSUFFICIENT_BUFFER   | If buffer passed is too small
+//
+//@comm Retrieves the current state/value of the specified
+//      input context feature. If the value is not explicitly set, it
+//      looks at the features set by the context class. If no class was
+//      set explicitly, or the class didn't set that value, it returns
+//      the default value for that feature, which would be the
+//      currently active one.
+//      If lpValue is NULL and lpdwSize is not NULL, it returns the
+//      size of the buffer needed in lpdwSize.
+//
+//@xref <l Input_Context_Features> <f SHSetInputContext>
+//
+function SHGetInputContext(_hwnd:HWND; dwFeature:DWORD; lpValue:LPVOID; lpdwSize:LPDWORD):HRESULT; external UserDLLAyg name 'SHGetInputContext'; // index 232
+//
+// end Input Context API
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// SHNAPI - Shell Notification API
+//
+// These are definitions and APIs for the Shell Notifications system
+//
+// {
+
+// notification priority
+
+type
+     _SHNP = (SHNP_INFORM := $01B1,      // bubble shown for duration, then goes away
+              SHNP_ICONIC                // no bubble, icon shown for duration then goes away
+             );
+     SHNP = _SHNP;
+
+const
+// notification update mask
+      SHNUM_PRIORITY     = $0001;
+      SHNUM_DURATION     = $0002;
+      SHNUM_ICON         = $0004;
+      SHNUM_HTML         = $0008;
+      SHNUM_TITLE        = $0010;
+      SHNUM_SOFTKEYS     = $0020;
+      SHNUM_TODAYKEY     = $0040;
+      SHNUM_TODAYEXEC    = $0080;
+      SHNUM_SOFTKEYCMDS  = $0100;
+      SHNUM_FLAGS        = $0200;
+
+
+// notification data
+
+// Softkey Flags for use with SFTKEYNOTIFY structure
+
+      NOTIF_SOFTKEY_FLAGS_DISMISS       = $0000;  // Remove the notification when the softkey is pressed
+      NOTIF_SOFTKEY_FLAGS_HIDE          = $0001;  // Hide the notification when the softkey is pressed (but do not dismiss)
+      NOTIF_SOFTKEY_FLAGS_STAYOPEN      = $0002;  // Do not dismiss or hide the notification when the softkey is pressed
+      NOTIF_SOFTKEY_FLAGS_SUBMIT_FORM   = $0004;  // Submit the HTML form in the associated notification instead of sending WM_COMMAND to the sink
+      NOTIF_SOFTKEY_FLAGS_DISABLED      = $0008;  // This softkey is disabled
+
+// Structure used to associate a command id from a notification's softkey bar
+// with a particular behaviour.
+
+type
+     SOFTKEYCMD = record
+       wpCmd:WPARAM;                   // command to send with WM_COMMAND when pressed.
+       grfFlags:DWORD;                 // define special behaviour for this softkey as
+                                       // per  NOTIF_SOFTKEY_FLAGS
+     end;
+     LPSOFTKEYCMD = ^SOFTKEYCMD;
+
+
+// structure to define a single softkey for use in SHNOTIFICATIONDATA
+type
+     _SOFTKEYNOTIFY = record
+       pszTitle:LPCTSTR;        // Title to use on the softkey
+       skc:SOFTKEYCMD;          // Behaviour flags
+     end;
+     SOFTKEYNOTIFY = _SOFTKEYNOTIFY;
+     LPSOFTKEYNOTIFY = ^_SOFTKEYNOTIFY;
+
+// structure to define a menu for use in SHNOTIFICATIONDATA
+type
+     _SOFTKEYMENU = record
+       hMenu:HMENU;
+       prgskc:LPSOFTKEYCMD;    // optional array of SOFTKEYCMD values
+       cskc:UINT;          // number of members of pskCmd
+     end;
+     SOFTKEYMENU = _SOFTKEYMENU;
+     LPSOFTKEYMENU = ^_SOFTKEYMENU;
+
+
+const
+// number of soft keys on the notification soft key bar.
+      NOTIF_NUM_SOFTKEYS = 2;
+
+
+type
+     _SHNOTIFICATIONDATA =record
+       cbStruct:DWORD;     // for verification and versioning
+       dwID:DWORD;         // identifier for this particular notification
+       npPriority:SHNP;   // priority
+       csDuration:DWORD;   // duration of the notification (usage depends on prio)
+       hicon:HICON;        // the icon for the notification
+       grfFlags:DWORD;     // flags - see SHNF_ flags below
+       clsid:CLSID;        // unique identifier for the notification class
+       hwndSink:HWND;     // window to receive command choices, dismiss, etc.
+       pszHTML:LPCTSTR;      // HTML content for the bubble
+       pszTitle:LPCTSTR;     // Optional title for bubble
+       lParam:LPARAM;       // User-defined parameter
+       case longint of    // Defines the softkey bar for the notification
+         0: (skm:SOFTKEYMENU;        // Either pass an HMENU in skn (and set SHNF_HASMENU)
+             pszTodaySK:LPCTSTR;  // Text to put on SK2 on the Today screen. If NULL, will default to "Notification"
+             pszTodayExec:LPCTSTR    // What to execute when SK2 is pressed. If NULL, the toast will be displayed.
+            );
+         1: (rgskn:array[0..NOTIF_NUM_SOFTKEYS-1] of SOFTKEYNOTIFY;  // or two softkeys in rgskn.
+             pszTodaySK1:LPCTSTR;  // Text to put on SK2 on the Today screen. If NULL, will default to "Notification"
+             pszTodayExec1:LPCTSTR    // What to execute when SK2 is pressed. If NULL, the toast will be displayed.
+            );
+     end;
+     SHNOTIFICATIONDATA = _SHNOTIFICATIONDATA;
+     LPSHNOTIFICATIONDATA = ^_SHNOTIFICATIONDATA;
+
+
+// Flags
+const
+// For SHNP_INFORM priority and above, don't display the notification bubble
+// when it's initially added; the icon will display for the duration then it
+// will go straight into the tray.  The user can view the icon / see the
+// bubble by opening the tray.
+      SHNF_STRAIGHTTOTRAY  = $00000001;
+
+// Critical information - highlights the border and title of the bubble.
+      SHNF_CRITICAL        = $00000002;
+
+// Force the message (bubble) to display even if settings says not to.
+      SHNF_FORCEMESSAGE    = $00000008;
+
+// Force the display to turn on for notification.
+      SHNF_DISPLAYON       = $00000010;
+
+// Force the notification to be silent and not vibrate, regardless of Settings
+      SHNF_SILENT          = $00000020;
+
+// Softkey bar is created from an HMENU passed in skm structure
+      SHNF_HASMENU         = $00000040;
+
+// Draw the current time with the title
+      SHNF_TITLETIME       = $00000080;
+
+// A notification with "stack" support
+      SHNF_SPINNERS        = $00000100;
+
+// RE-play physical alerts on an update
+      SHNF_ALERTONUPDATE   = $00000200;
+
+//Capture the VK_TTALK button and forward it to the notification's sink window
+      SHNF_WANTVKTTALK     = $00000400;
+
+// notification message and codes for window-based notification
+// the notification's dwID is in hdr.idFrom
+
+type
+     _NMSHN = record
+       hdr:NMHDR;
+       lParam:LPARAM;
+       dwReturn:DWORD;
+       case longint of
+         0: (pszLink:LPCTSTR);
+         1: (fTimeout:BOOL);
+         2: (pt:POINT);
+     end;
+     NMSHN = _NMSHN;
+     LPNMSHN = ^_NMSHN;
+
+//#define SHN_FIRST               (0U-1000U)       // Shell reserved
+const    
+      SHNN_FIRST              = UINT(0)-UINT(1000);        // Shell Notifications
+      SHNN_LAST               = UINT(0)-UINT(1020);        // Shell Notifications
+//#define SHN_LAST                (0U-11000U)
+
+const
+      SHNN_LINKSEL            = SHNN_FIRST - 0;
+// nmshn.pszLink contains the link text of the choice that was selected
+
+      SHNN_DISMISS            = SHNN_FIRST - 1;
+// nmshn.fTimeout is TRUE if duration expired, FALSE if user tapped away
+
+      SHNN_SHOW               = SHNN_FIRST - 2;
+// nmshn.pt contains the point to which the bubble points
+
+      SHNN_NAVPREV            = SHNN_FIRST - 3;
+// Toast stack left spinner clicked / DPAD LEFT
+
+      SHNN_NAVNEXT            = SHNN_FIRST - 4;
+// Toast stack right spinner clicked / DPAD RIGHT
+
+      SHNN_ACTIVATE           = SHNN_FIRST - 5;
+// Toast DPAD Action
+
+      SHNN_ICONCLICKED        = SHNN_FIRST - 6;
+// nmshn.pt contains the point where the user clicked
+
+      SHNN_HOTKEY             = SHNN_FIRST - 7;
+// A hotkey has been pressed - modifiers are in the loword of the nmshn.lParam,
+// the virtual key code is in the hiword.
+// If the sink window returns 0 in response to this notification, then
+// the notification toast will be hidden and VK_TTALK key default behavior
+// will be performed.
+
+//===========================================================================
+//
+// Interface: IShellNotificationCallback
+//
+//  The IShellNotificationCallback interface is used by the Shell to advise
+// the notification owner of actions taken on the notification.
+//
+// [Member functions]
+//
+// IShellNotificationCallback::OnShow
+//
+//  Reserved.  Return E_NOTIMPL.
+//
+// IShellNotificationCallback::OnCommandSelected
+//
+//  This member function is called when the user selects a link of the form
+// <A HREF="cmd:#">link</A>.
+//
+//  Parameters:
+//   dwID       -- the identifier of the notification
+//   wCmdID     -- this is the # in the link
+//
+// IShellNotificationCallback::OnLinkSelected
+//
+//  This member function is called when the user selects one of the action
+// choice links in the notification bubble window.
+//
+//  Parameters:
+//   dwID       -- the identifier of the notification
+//   pszLink    -- the link content that was selected
+//   lParam     -- the lParam of the notification
+//
+// IShellNotificationCallback::OnDismiss
+//
+//  This member function is called when the user taps away from the bubble
+// window or if a SHNP_INFORM priority notification's duration expires.
+//
+//  Parameters:
+//   dwID       -- the identifier of the notification
+//   fTimeout   -- the notification timed out (SHNP_INFORM only)
+//   lParam     -- the lParam of the notification
+//   
+//===========================================================================
+
+const
+      IID_IShellNotificationCallback:TIID = '{000214C0-0000-0000-C000-000000000046}';
+
+type
+     IShellNotificationCallback = interface(IUnknown)
+      ['{000214C0-0000-0000-C000-000000000046}']
+       function OnShow(dwID:DWORD; pt:POINT; lParam:LPARAM):HRESULT; stdcall;
+       function OnCommandSelected(dwID:DWORD; wCmdID:word):HRESULT; stdcall;
+       function OnLinkSelected(dwID:DWORD; pszLink:LPCTSTR; lParam:LPARAM):HRESULT; stdcall;
+       function OnDismiss(dwID:DWORD; fTimeout:BOOL; lParam:LPARAM):HRESULT; stdcall;
+     end;
+
+//++++++
+//
+// SHNotificationAdd
+//
+//   Add a notification.
+
+function SHNotificationAdd(pndAdd:LPSHNOTIFICATIONDATA):LRESULT; external UserDLLAyg name 'SHNotificationAdd'; // index 155
+
+//
+// End SHNotificationAdd
+//
+//------
+
+
+//++++++
+//
+// SHNotificationUpdate
+//
+//   Update aspects of a pending notification.
+
+function SHNotificationUpdate(grnumUpdateMask:DWORD; pndNew:LPSHNOTIFICATIONDATA):LRESULT; external UserDLLAyg name 'SHNotificationUpdate'; // index 156
+
+//
+// End SHNotificationUpdate
+//
+//------
+
+//++++++
+//
+// SHNotificationRemove
+//
+//   Remove a notification.  This is usually in reponse to some
+//   action taken on the data outside of the notification system - for example
+//   if a message is read or deleted.
+
+function SHNotificationRemove(pclsid:LPCLSID; dwID:DWORD):LRESULT; external UserDLLAyg name 'SHNotificationRemove'; // index 157
+
+//
+// End SHNotificationRemove
+//
+//------
+
+
+//++++++
+//
+// SHNotificationGetData
+//
+//   Get the data for a notification.  Used by a handler to get information
+//   stored in the notification by the poster.
+
+function SHNotificationGetData(pclsid:LPCLSID; dwID:DWORD; pndBuffer:LPSHNOTIFICATIONDATA):LRESULT; external UserDLLAyg name 'SHNotificationGetData'; // index 173
+
+//
+// End SHNotificationGetData
+//
+//------
+
+
+// }
+//
+// end SHNAPI
+//
+//////////////////////////////////////////////////////////////////////////////
+
+
+// This function is not implemented.
+// It is provided as a stub in the operating system (OS) for application compatibility.
+procedure SHSetBack(eOp:longint; _hwnd:HWND); external UserDLLAyg name 'SHSetBack'; // index 184    
+
 implementation
 implementation
 
 
 end.
 end.

+ 1 - 1
packages/winceunits/src/pimstore.pp

@@ -799,7 +799,7 @@ function ChooseContact(lpcc:LPCHOOSECONTACT):HRESULT; cdecl; external PIMStoreDL
 
 
 
 
 // Returns a Contact object of the first closest match
 // Returns a Contact object of the first closest match
-function FindMatchingContact(pPOOM:IPOutlookApp; pszFind:LPCWSTR; dwFlags:DWORD; out ppContact:IItem; ppropid:CEPROPID):HRESULT; cdecl; external PIMStoreDLL name 'FindMatchingContact';
+function FindMatchingContact(pPOOM:IPOutlookApp; pszFind:LPCWSTR; dwFlags:DWORD; out ppContact:IItem; ppropid:PCEPROPID):HRESULT; cdecl; external PIMStoreDLL name 'FindMatchingContact';
 
 
 // Flags for FindMatchingContact
 // Flags for FindMatchingContact
 const
 const

+ 37 - 3
rtl/win/wininc/defines.inc

@@ -1681,9 +1681,12 @@
      SIF_RANGE = 1;
      SIF_RANGE = 1;
      SIF_DISABLENOSCROLL = 8;
      SIF_DISABLENOSCROLL = 8;
   { GetStdHandle  }
   { GetStdHandle  }
-     STD_INPUT_HANDLE = DWORD(-10);
-     STD_OUTPUT_HANDLE = DWORD(-11);
-     STD_ERROR_HANDLE = DWORD(-12);
+     STD_INPUT_HANDLE = HANDLE(-10);
+     STD_OUTPUT_HANDLE = HANDLE(-11);
+     STD_ERROR_HANDLE = HANDLE(-12);
+
+
+
 
 
      INVALID_HANDLE_VALUE = HANDLE(-1);
      INVALID_HANDLE_VALUE = HANDLE(-1);
 
 
@@ -4005,6 +4008,7 @@ Type
      ACS_AUTOPLAY = 4;
      ACS_AUTOPLAY = 4;
      ACS_CENTER = 1;
      ACS_CENTER = 1;
      ACS_TRANSPARENT = 2;
      ACS_TRANSPARENT = 2;
+     ACS_TIMER       = 8;  // don't use threads... use timers
   { MODEMDEVCAPS structure  }
   { MODEMDEVCAPS structure  }
      DIALOPTION_BILLING = 64;
      DIALOPTION_BILLING = 64;
      DIALOPTION_QUIET = 128;
      DIALOPTION_QUIET = 128;
@@ -5713,6 +5717,36 @@ const
     IMAGE_FILE_MACHINE_M32R              = $9041;  // M32R little-endian
     IMAGE_FILE_MACHINE_M32R              = $9041;  // M32R little-endian
     IMAGE_FILE_MACHINE_CEE               = $C0EE;
     IMAGE_FILE_MACHINE_CEE               = $C0EE;
 
 
+// #if(WINVER >= 0x0500)
+{/*
+ * WM_MENUDRAG return values.
+ */}
+const
+      MND_CONTINUE       = 0;
+      MND_ENDMENU        = 1;
+
+{/*
+ * MENUGETOBJECTINFO dwFlags values
+ */}
+const
+      MNGOF_TOPGAP         = $00000001;
+      MNGOF_BOTTOMGAP      = $00000002;
+
+{/*
+ * WM_MENUGETOBJECT return values
+ */}
+const
+      MNGO_NOINTERFACE     = $00000000;
+      MNGO_NOERROR         = $00000001;
+//#endif /* WINVER >= 0x0500 */
+
+
+// Menubar information 
+const
+// Constants for the tagMENUBARINFO.FocusedBits bit mask
+      MBIFB_BAR_FOCUSED = $00000001;
+      MBIFB_FOCUSED     = $00000002;
+
 {$endif read_interface}
 {$endif read_interface}
 
 
 {$ifdef read_implementation}
 {$ifdef read_implementation}

+ 10 - 0
rtl/win/wininc/func.inc

@@ -1253,6 +1253,16 @@ function SignalObjectAndWait( hObjectToSignal:THANDLE;  hObjectToWaitOn:THANDLE
 function CancelWaitableTimer(hTimer:THandle):BOOL; external 'kernel32' name 'CancelWaitableTimer';
 function CancelWaitableTimer(hTimer:THandle):BOOL; external 'kernel32' name 'CancelWaitableTimer';
 function GetComboBoxInfo(hwndCombo:HWND;pcbi:PCOMBOBOXINFO):BOOL; external 'user32' name 'GetComboBoxInfo';
 function GetComboBoxInfo(hwndCombo:HWND;pcbi:PCOMBOBOXINFO):BOOL; external 'user32' name 'GetComboBoxInfo';
 function GetAncestor(HWnd: HWND; Flag: UINT): HWND; StdCall; External 'user32';
 function GetAncestor(HWnd: HWND; Flag: UINT): HWND; StdCall; External 'user32';
+
+// #if(WINVER >= 0x0500)
+function GetMenuInfo(_hmenu:HMENU; lpcmi:LPMENUINFO):BOOL; external 'user32' name 'GetMenuInfo';
+function SetMenuInfo(_hmenu:HMENU; lpcmi:LPCMENUINFO):BOOL; external 'user32' name 'SetMenuInfo';
+function EndMenu:BOOL; external 'user32' name 'EndMenu';
+//#endif /* WINVER >= 0x0500 */
+
+
+function GetMenuBarInfo(_hwnd:HWND; idObject:longint; idItem:longint; pmbi:LPMENUBARINFO):BOOL; external 'user32' name 'GetMenuBarInfo';
+
 {$endif read_interface}
 {$endif read_interface}
 
 
 
 

+ 31 - 0
rtl/win/wininc/struct.inc

@@ -7514,6 +7514,37 @@ type
 const
 const
   SECURITY_DESCRIPTOR_MIN_LENGTH = SIZEOF(SECURITY_DESCRIPTOR);
   SECURITY_DESCRIPTOR_MIN_LENGTH = SIZEOF(SECURITY_DESCRIPTOR);
 
 
+
+// #if(WINVER >= 0x0500)
+type
+     tagMENUGETOBJECTINFO = packed record
+       dwFlags:DWORD;
+       uPos:UINT;
+       _hmenu:HMENU;
+       riid:PVOID;
+       pvObj:PVOID;
+     end;
+     MENUGETOBJECTINFO = tagMENUGETOBJECTINFO;
+     PMENUGETOBJECTINFO = ^tagMENUGETOBJECTINFO;
+     LPMENUGETOBJECTINFO = ^tagMENUGETOBJECTINFO;
+//#endif /* WINVER >= 0x0500 */
+
+
+// Menubar information 
+type
+     tagMENUBARINFO = packed record
+       cbSize:DWORD;
+       rcBar:Windows.RECT; // rect of bar, popup, item 
+       _hmenu:HMENU;       // real menu handle of bar, popup 
+       hwndMenu:HWND;      // hwnd of item submenu if one 
+//    fBarFocused:1:BOOL;  // bar, popup has the focus 
+//    fFocused:1:BOOL;     // item has the focus 
+      FocusedBits:DWORD;
+    end;
+    MENUBARINFO = tagMENUBARINFO;
+    PMENUBARINFO = ^tagMENUBARINFO;
+    LPMENUBARINFO = ^tagMENUBARINFO;
+
 {$endif read_interface}
 {$endif read_interface}
 
 
 
 

+ 11 - 6
rtl/wince/wininc/base.inc

@@ -56,7 +56,8 @@
   type
   type
 
 
      MAKEINTRESOURCE = pwidechar;
      MAKEINTRESOURCE = pwidechar;
-	 ATOM = word;                     //windef
+     
+     ATOM = word;                     //windef
      TAtom = ATOM;
      TAtom = ATOM;
 
 
      WINBOOL = longbool;
      WINBOOL = longbool;
@@ -472,9 +473,13 @@ type
   { argument types are unknown }
   { argument types are unknown }
   function HIWORD(l : longint) : WORD;      //windef
   function HIWORD(l : longint) : WORD;      //windef
 
 
+type
+     LOBYTE = byte;
+(*
   { was #define dname(params) def_expr }
   { was #define dname(params) def_expr }
   { argument types are unknown }
   { argument types are unknown }
   function LOBYTE(w : longint) : BYTE;      //windef
   function LOBYTE(w : longint) : BYTE;      //windef
+*)
 
 
   { was #define dname(params) def_expr }
   { was #define dname(params) def_expr }
   { argument types are unknown }
   { argument types are unknown }
@@ -519,8 +524,7 @@ type
 
 
   { was #define dname(params) def_expr }
   { was #define dname(params) def_expr }
   { argument types are unknown }
   { argument types are unknown }
-  function MAKEINTATOM(i : longint) : LPTSTR;
-
+  function MAKEINTATOM(i : longint) : LPTSTR; 
 
 
   { was #define dname(params) def_expr }
   { was #define dname(params) def_expr }
   { argument types are unknown }
   { argument types are unknown }
@@ -838,16 +842,18 @@ type
        HIWORD:=WORD(((DWORD(l)) shr 16) and $FFFF);
        HIWORD:=WORD(((DWORD(l)) shr 16) and $FFFF);
     end;
     end;
 
 
+(*
   { was #define dname(params) def_expr }
   { was #define dname(params) def_expr }
   { argument types are unknown }
   { argument types are unknown }
   function LOBYTE(w : longint) : BYTE;
   function LOBYTE(w : longint) : BYTE;
     begin
     begin
        LOBYTE:=BYTE(w);
        LOBYTE:=BYTE(w);
     end;
     end;
+*)
 
 
   { was #define dname(params) def_expr }
   { was #define dname(params) def_expr }
   { argument types are unknown }
   { argument types are unknown }
-  function LOWORD(l : longint) : WORD;
+  function LOWORD(l : longint) : WORD; inline;
     begin
     begin
        LOWORD:=WORD(l);
        LOWORD:=WORD(l);
     end;
     end;
@@ -911,12 +917,11 @@ type
 
 
   { was #define dname(params) def_expr }
   { was #define dname(params) def_expr }
   { argument types are unknown }
   { argument types are unknown }
-  function MAKEINTATOM(i : longint) : LPTSTR;
+  function MAKEINTATOM(i : longint) : LPTSTR; inline;
     begin
     begin
        MAKEINTATOM:=LPTSTR(DWORD(WORD(i)));
        MAKEINTATOM:=LPTSTR(DWORD(WORD(i)));
     end;
     end;
 
 
-
   { was #define dname(params) def_expr }
   { was #define dname(params) def_expr }
   { argument types are unknown }
   { argument types are unknown }
   { return type might be wrong }
   { return type might be wrong }

+ 51 - 27
rtl/wince/wininc/coredll.inc

@@ -85,7 +85,6 @@
       378 CacheSync
       378 CacheSync
       1EA CeChangeDatabaseLCID
       1EA CeChangeDatabaseLCID
       1EF CeClearReplChangeBitsEx
       1EF CeClearReplChangeBitsEx
-      2DB CeClearUserNotification
       1D1 CeCreateDatabase
       1D1 CeCreateDatabase
       1D2 CeCreateDatabaseEx
       1D2 CeCreateDatabaseEx
       1DC CeCreateDatabaseEx2
       1DC CeCreateDatabaseEx2
@@ -111,10 +110,6 @@
       1F0 CeGetReplOtherBitsEx
       1F0 CeGetReplOtherBitsEx
       313 CeGetThreadPriority
       313 CeGetThreadPriority
       315 CeGetThreadQuantum
       315 CeGetThreadQuantum
-      2E2 CeGetUserNotification
-      2E1 CeGetUserNotificationHandles
-      2DF CeGetUserNotificationPreferences
-      2DE CeHandleAppNotifications
        96 CeLogData
        96 CeLogData
        98 CeLogGetZones
        98 CeLogGetZones
        99 CeLogReSync
        99 CeLogReSync
@@ -134,8 +129,6 @@
       1F2 CeRegisterReplNotification
       1F2 CeRegisterReplNotification
       4E4 CeRemoveFontResource
       4E4 CeRemoveFontResource
       15D CeResyncFilesys
       15D CeResyncFilesys
-      2DD CeRunAppAtEvent
-      2DC CeRunAppAtTime
       1D9 CeSeekDatabase
       1D9 CeSeekDatabase
       1E0 CeSeekDatabaseEx
       1E0 CeSeekDatabaseEx
       1D3 CeSetDatabaseInfo
       1D3 CeSetDatabaseInfo
@@ -149,8 +142,6 @@
       1F1 CeSetReplOtherBitsEx
       1F1 CeSetReplOtherBitsEx
       312 CeSetThreadPriority
       312 CeSetThreadPriority
       314 CeSetThreadQuantum
       314 CeSetThreadQuantum
-      2DA CeSetUserNotification
-      2E0 CeSetUserNotificationEx
       1E6 CeUnmountDBVol
       1E6 CeUnmountDBVol
       1E5 CeWriteRecordProps
       1E5 CeWriteRecordProps
        2F CeZeroPointer
        2F CeZeroPointer
@@ -206,7 +197,6 @@
        C2 DDKReg_GetWindowInfo
        C2 DDKReg_GetWindowInfo
       3BF DebugNotify
       3BF DebugNotify
       38B DecompressBinaryBlock
       38B DecompressBinaryBlock
-       FF DeleteAndRenameFile
       37B DeleteTrackedItem
       37B DeleteTrackedItem
       179 DeregisterAFS
       179 DeregisterAFS
       17B DeregisterAFSName
       17B DeregisterAFSName
@@ -215,8 +205,6 @@
       30C DumpKCallProfile
       30C DumpKCallProfile
       3DB EnableCaretSystemWide
       3DB EnableCaretSystemWide
       553 EnableEUDC
       553 EnableEUDC
-      50E EnumDisplayDevices
-      666 EnumDisplayMonitors
       14D EnumUILanguagesW
       14D EnumUILanguagesW
       374 ExtractResource
       374 ExtractResource
       17F FileSystemPowerFunction
       17F FileSystemPowerFunction
@@ -247,7 +235,6 @@
       405 GetKeyboardTarget
       405 GetKeyboardTarget
       4B7 GetMessageWNoWait
       4B7 GetMessageWNoWait
       30B GetModuleInformation
       30B GetModuleInformation
-      665 GetMonitorInfo
       397 GetOwnerProcess
       397 GetOwnerProcess
       110 GetPasswordStatus
       110 GetPasswordStatus
       1B6 GetPrivateCallbacks
       1B6 GetPrivateCallbacks
@@ -259,7 +246,6 @@
       371 GetRealTime
       371 GetRealTime
       377 GetRomFileBytes
       377 GetRomFileBytes
       376 GetRomFileInfo
       376 GetRomFileInfo
-      102 GetStoreInformation
       2D0 GetUserDirectory
       2D0 GetUserDirectory
       1B7 GetWindowTextWDirect
       1B7 GetWindowTextWDirect
       37E GiveKPhys
       37E GiveKPhys
@@ -277,7 +263,6 @@
        4D Int_HeapFree
        4D Int_HeapFree
        49 Int_HeapReAlloc
        49 Int_HeapReAlloc
        4B Int_HeapSize
        4B Int_HeapSize
-       15 InterlockedCompareExchange
       3B1 InterruptDisable
       3B1 InterruptDisable
       3B0 InterruptDone
       3B0 InterruptDone
       3AE InterruptInitialize
       3AE InterruptInitialize
@@ -298,8 +283,6 @@
       396 KillAllOtherThreads
       396 KillAllOtherThreads
       38E LeaveCritSec
       38E LeaveCritSec
       3AA LoadDriver
       3AA LoadDriver
-      151 LoadFSD
-      152 LoadFSDEx
       3AB LoadIntChainHandler
       3AB LoadIntChainHandler
       3AD LoadKernelLibrary
       3AD LoadKernelLibrary
        3E LocalAllocInProcess
        3E LocalAllocInProcess
@@ -350,7 +333,6 @@
       484 QASetWindowsJournalHook
       484 QASetWindowsJournalHook
       485 QAUnhookWindowsJournalHook
       485 QAUnhookWindowsJournalHook
       2F2 QueryAPISetID
       2F2 QueryAPISetID
-       91 Random
       181 ReadFileWithSeek
       181 ReadFileWithSeek
       3C0 ReadRegistryFromOEM
       3C0 ReadRegistryFromOEM
       1BE RectangleAnimation
       1BE RectangleAnimation
@@ -362,7 +344,6 @@
       17A RegisterAFSName
       17A RegisterAFSName
       3B8 RegisterAPISet
       3B8 RegisterAPISet
       33D RegisterDbgZones
       33D RegisterDbgZones
-      4DB RegisterDesktop
       1BD RegisterSIPanel
       1BD RegisterSIPanel
       380 RegisterTrackedItem
       380 RegisterTrackedItem
         E ReinitLocale
         E ReinitLocale
@@ -374,14 +355,10 @@
        3D RemoteLocalFree
        3D RemoteLocalFree
        3B RemoteLocalReAlloc
        3B RemoteLocalReAlloc
        3C RemoteLocalSize
        3C RemoteLocalSize
-      15A ResourceCreateList
-      15C ResourceRelease
-      15B ResourceRequest
       2E6 SHCreateExplorerInstance
       2E6 SHCreateExplorerInstance
       2E8 SHCreateShortcut
       2E8 SHCreateShortcut
       2EA SHCreateShortcutEx
       2EA SHCreateShortcutEx
       2E9 SHGetShortcutTarget
       2E9 SHGetShortcutTarget
-      2EC SHLoadDIBitmap
       2EB SHShowOutOfMemory
       2EB SHShowOutOfMemory
       11B SetACP
       11B SetACP
       1C0 SetAssociatedMenu
       1C0 SetAssociatedMenu
@@ -413,7 +390,6 @@
       3B5 SetWDevicePowerHandler
       3B5 SetWDevicePowerHandler
       406 ShellModalEnd
       406 ShellModalEnd
       1C4 ShowStartupWindow
       1C4 ShowStartupWindow
-      176 SignalStarted
       361 SleepTillTick
       361 SleepTillTick
       648 StringCbCatA
       648 StringCbCatA
       64A StringCbCatExA
       64A StringCbCatExA
@@ -2010,6 +1986,7 @@ function DefDlgProcW(hDlg:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT;
 function DeferWindowPos(hWinPosInfo:HDWP; hWnd:HWND; hWndInsertAfter:HWND; x:longint; y:longint;cx:longint; cy:longint; uFlags:UINT):HDWP; external KernelDLL name 'DeferWindowPos';
 function DeferWindowPos(hWinPosInfo:HDWP; hWnd:HWND; hWndInsertAfter:HWND; x:longint; y:longint;cx:longint; cy:longint; uFlags:UINT):HDWP; external KernelDLL name 'DeferWindowPos';
 function DefWindowProc(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external KernelDLL name 'DefWindowProcW';
 function DefWindowProc(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external KernelDLL name 'DefWindowProcW';
 function DefWindowProcW(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external KernelDLL name 'DefWindowProcW';
 function DefWindowProcW(hWnd:HWND; Msg:UINT; wParam:WPARAM; lParam:LPARAM):LRESULT; external KernelDLL name 'DefWindowProcW';
+function DeleteAndRenameFile(lpszDestFile:LPCWSTR; lpszSourceFile:LPCWSTR):BOOL; external KernelDLL name 'DeleteAndRenameFile'; // index FF
 procedure DeleteCriticalSection(lpCriticalSection:LPCRITICAL_SECTION); external KernelDLL name 'DeleteCriticalSection';
 procedure DeleteCriticalSection(lpCriticalSection:LPCRITICAL_SECTION); external KernelDLL name 'DeleteCriticalSection';
 function DeleteDC(_para1:HDC):WINBOOL; external KernelDLL name 'DeleteDC';
 function DeleteDC(_para1:HDC):WINBOOL; external KernelDLL name 'DeleteDC';
 function DeleteEnhMetaFile(_para1:HENHMETAFILE):WINBOOL; external KernelDLL name 'DeleteEnhMetaFile';
 function DeleteEnhMetaFile(_para1:HENHMETAFILE):WINBOOL; external KernelDLL name 'DeleteEnhMetaFile';
@@ -2052,6 +2029,8 @@ function EnumCalendarInfo(lpCalInfoEnumProc:CALINFO_ENUMPROC; Locale:LCID; Calen
 function EnumCalendarInfoW(lpCalInfoEnumProc:CALINFO_ENUMPROC; Locale:LCID; Calendar:CALID; CalType:CALTYPE):WINBOOL; external KernelDLL name 'EnumCalendarInfoW';
 function EnumCalendarInfoW(lpCalInfoEnumProc:CALINFO_ENUMPROC; Locale:LCID; Calendar:CALID; CalType:CALTYPE):WINBOOL; external KernelDLL name 'EnumCalendarInfoW';
 function EnumDateFormats(lpDateFmtEnumProc:DATEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL; external KernelDLL name 'EnumDateFormatsW';
 function EnumDateFormats(lpDateFmtEnumProc:DATEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL; external KernelDLL name 'EnumDateFormatsW';
 function EnumDateFormatsW(lpDateFmtEnumProc:DATEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL; external KernelDLL name 'EnumDateFormatsW';
 function EnumDateFormatsW(lpDateFmtEnumProc:DATEFMT_ENUMPROC; Locale:LCID; dwFlags:DWORD):WINBOOL; external KernelDLL name 'EnumDateFormatsW';
+function EnumDisplayDevices(lpDevice:LPCTSTR; iDevNum:DWORD; lpDisplayDevice:PDISPLAY_DEVICE; dwFlags:DWORD):BOOL; external KernelDLL name 'EnumDisplayDevices'; // index 50E
+function EnumDisplayMonitors(_hdc:HDC; lprcClip:LPRECT; lpfnEnum:MONITORENUMPROC; dwData:LPARAM):BOOL; external KernelDLL name 'EnumDisplayMonitors'; // index 666
 function EnumDisplaySettings(lpszDeviceName:LPCWSTR; iModeNum:DWORD; lpDevMode:LPDEVMODEW):WINBOOL; external KernelDLL name 'EnumDisplaySettings';
 function EnumDisplaySettings(lpszDeviceName:LPCWSTR; iModeNum:DWORD; lpDevMode:LPDEVMODEW):WINBOOL; external KernelDLL name 'EnumDisplaySettings';
 function EnumFonts(_para1:HDC; _para2:LPCWSTR; _para3:ENUMFONTSPROC; _para4:LPARAM):longint; external KernelDLL name 'EnumFontsW';
 function EnumFonts(_para1:HDC; _para2:LPCWSTR; _para3:ENUMFONTSPROC; _para4:LPARAM):longint; external KernelDLL name 'EnumFontsW';
 function EnumFontsW(_para1:HDC; _para2:LPCWSTR; _para3:ENUMFONTSPROC; _para4:LPARAM):longint; external KernelDLL name 'EnumFontsW';
 function EnumFontsW(_para1:HDC; _para2:LPCWSTR; _para3:ENUMFONTSPROC; _para4:LPARAM):longint; external KernelDLL name 'EnumFontsW';
@@ -2212,6 +2191,7 @@ function GetModuleFileName(hModule:HMODULE; lpFilename:LPWSTR; nSize:DWORD):DWOR
 function GetModuleFileNameW(hModule:HMODULE; lpFilename:LPWSTR; nSize:DWORD):DWORD; external KernelDLL name 'GetModuleFileNameW';
 function GetModuleFileNameW(hModule:HMODULE; lpFilename:LPWSTR; nSize:DWORD):DWORD; external KernelDLL name 'GetModuleFileNameW';
 function GetModuleHandle(lpModuleName:LPCWSTR):HMODULE; external KernelDLL name 'GetModuleHandleW';
 function GetModuleHandle(lpModuleName:LPCWSTR):HMODULE; external KernelDLL name 'GetModuleHandleW';
 function GetModuleHandleW(lpModuleName:LPCWSTR):HMODULE; external KernelDLL name 'GetModuleHandleW';
 function GetModuleHandleW(lpModuleName:LPCWSTR):HMODULE; external KernelDLL name 'GetModuleHandleW';
+function GetMonitorInfo(_hMonitor:HMONITOR; lpmi:LPMONITORINFO):BOOL; external KernelDLL name 'GetMonitorInfo'; // index 665
 function GetMouseMovePoints(pptBuf:PPOINT; nBufPoints:UINT; pnPointsRetrieved:PUINT):BOOL; external KernelDLL name 'GetMouseMovePoints'; // index 481
 function GetMouseMovePoints(pptBuf:PPOINT; nBufPoints:UINT; pnPointsRetrieved:PUINT):BOOL; external KernelDLL name 'GetMouseMovePoints'; // index 481
 function GetNearestColor(_para1:HDC; _para2:COLORREF):COLORREF; external KernelDLL name 'GetNearestColor';
 function GetNearestColor(_para1:HDC; _para2:COLORREF):COLORREF; external KernelDLL name 'GetNearestColor';
 function GetNearestPaletteIndex(_para1:HPALETTE; _para2:COLORREF):UINT; external KernelDLL name 'GetNearestPaletteIndex';
 function GetNearestPaletteIndex(_para1:HPALETTE; _para2:COLORREF):UINT; external KernelDLL name 'GetNearestPaletteIndex';
@@ -2314,9 +2294,21 @@ function GlobalFindAtom(lpString:LPCWSTR):ATOM; external KernelDLL name 'GlobalF
 function GlobalFindAtomW(lpString:LPCWSTR):ATOM; external KernelDLL name 'GlobalFindAtomW';
 function GlobalFindAtomW(lpString:LPCWSTR):ATOM; external KernelDLL name 'GlobalFindAtomW';
 function GlobalFree(hMem:HGLOBAL):HGLOBAL;
 function GlobalFree(hMem:HGLOBAL):HGLOBAL;
 function GlobalFreePtr(lp:Pointer):Pointer;
 function GlobalFreePtr(lp:Pointer):Pointer;
+
+type
+     GlobalHandle = HGLOBAL;
+{
 function GlobalHandle(pMem:LPCVOID):HGLOBAL;
 function GlobalHandle(pMem:LPCVOID):HGLOBAL;
+}
+
 function GlobalLockPtr(lp:pointer):Pointer;
 function GlobalLockPtr(lp:pointer):Pointer;
+
+type
+     GlobalLock = LPVOID;
+{
 function GlobalLock(hMem:HGLOBAL):LPVOID;
 function GlobalLock(hMem:HGLOBAL):LPVOID;
+}
+
 function GlobalReAlloc(hMem:HGLOBAL; dwBytes:DWORD; uFlags:UINT):HGLOBAL;
 function GlobalReAlloc(hMem:HGLOBAL; dwBytes:DWORD; uFlags:UINT):HGLOBAL;
 function GlobalReAllocPtr(lp:Pointer;cbNew,flags:DWord):Pointer;
 function GlobalReAllocPtr(lp:Pointer;cbNew,flags:DWord):Pointer;
 function GlobalSize(hMem:HGLOBAL):DWORD;
 function GlobalSize(hMem:HGLOBAL):DWORD;
@@ -2472,6 +2464,16 @@ function LoadBitmap(hInstance:HINST; lpBitmapName:LPCWSTR):HBITMAP; external Ker
 function LoadBitmapW(hInstance:HINST; lpBitmapName:LPCWSTR):HBITMAP; external KernelDLL name 'LoadBitmapW';
 function LoadBitmapW(hInstance:HINST; lpBitmapName:LPCWSTR):HBITMAP; external KernelDLL name 'LoadBitmapW';
 function LoadCursor(hInstance:HINST; lpCursorName:LPCWSTR):HCURSOR; external KernelDLL name 'LoadCursorW';
 function LoadCursor(hInstance:HINST; lpCursorName:LPCWSTR):HCURSOR; external KernelDLL name 'LoadCursorW';
 function LoadCursorW(hInstance:HINST; lpCursorName:LPCWSTR):HCURSOR; external KernelDLL name 'LoadCursorW';
 function LoadCursorW(hInstance:HINST; lpCursorName:LPCWSTR):HCURSOR; external KernelDLL name 'LoadCursorW';
+
+// This function is called by a device driver to load its associated FSD.
+// This function is obsolete in Windows CE .NET 4.0 and later.
+// Instead, place a storage class identifier in the device driver registry setting
+// to notify the Storage Manager of the block driver being loaded.
+// The Storage Manager will then parse the partitions and load the appropriate
+// file system.
+function LoadFSD(hDevice:HANDLE; lpFSDName:LPCWSTR):BOOL; external KernelDLL name 'LoadFSD'; // index 151
+function LoadFSDEx(hDevice:HANDLE; lpFSDName:LPCWSTR; dwFlag:DWORD):BOOL; external KernelDLL name 'LoadFSDEx'; // index 152
+
 function LoadIcon(hInstance:HINST; lpIconName:LPCWSTR):HICON; external KernelDLL name 'LoadIconW';
 function LoadIcon(hInstance:HINST; lpIconName:LPCWSTR):HICON; external KernelDLL name 'LoadIconW';
 function LoadIconW(hInstance:HINST; lpIconName:LPCWSTR):HICON; external KernelDLL name 'LoadIconW';
 function LoadIconW(hInstance:HINST; lpIconName:LPCWSTR):HICON; external KernelDLL name 'LoadIconW';
 function LoadImage(_para1:HINST; _para2:LPCWSTR; _para3:UINT; _para4:longint; _para5:longint;_para6:UINT):HANDLE; external KernelDLL name 'LoadImageW';
 function LoadImage(_para1:HINST; _para2:LPCWSTR; _para3:UINT; _para4:longint; _para5:longint;_para6:UINT):HANDLE; external KernelDLL name 'LoadImageW';
@@ -2491,7 +2493,13 @@ function LocalAlloc(uFlags:UINT; uBytes:UINT):HLOCAL; external KernelDLL name 'L
 function LocalDiscard(hlocMem:HLOCAL):HLOCAL;
 function LocalDiscard(hlocMem:HLOCAL):HLOCAL;
 function LocalFileTimeToFileTime(lpLocalFileTime:LPFILETIME; lpFileTime:LPFILETIME):WINBOOL; external KernelDLL name 'LocalFileTimeToFileTime';
 function LocalFileTimeToFileTime(lpLocalFileTime:LPFILETIME; lpFileTime:LPFILETIME):WINBOOL; external KernelDLL name 'LocalFileTimeToFileTime';
 function LocalFree(hMem:HLOCAL):HLOCAL; external KernelDLL name 'LocalFree';
 function LocalFree(hMem:HLOCAL):HLOCAL; external KernelDLL name 'LocalFree';
+
+type
+     LocalHandle = HLOCAL;
+{
 function LocalHandle(pMem:LPCVOID):HLOCAL;
 function LocalHandle(pMem:LPCVOID):HLOCAL;
+}
+
 function LocalLock(hMem:HLOCAL):LPVOID;
 function LocalLock(hMem:HLOCAL):LPVOID;
 function LocalReAlloc(hMem:HLOCAL; uBytes:UINT; uFlags:UINT):HLOCAL; external KernelDLL name 'LocalReAlloc';
 function LocalReAlloc(hMem:HLOCAL; uBytes:UINT; uFlags:UINT):HLOCAL; external KernelDLL name 'LocalReAlloc';
 function LocalSize(hMem:HLOCAL):UINT; external KernelDLL name 'LocalSize';
 function LocalSize(hMem:HLOCAL):UINT; external KernelDLL name 'LocalSize';
@@ -2581,6 +2589,8 @@ function QueryInstructionSet(dwInstructionSet:DWORD; lpdwCurrentInstructionSet:L
 function QueryPerformanceCounter(lpPerformanceCount:PLARGE_INTEGER):WINBOOL; external Kerneldll name 'QueryPerformanceCounter';
 function QueryPerformanceCounter(lpPerformanceCount:PLARGE_INTEGER):WINBOOL; external Kerneldll name 'QueryPerformanceCounter';
 function QueryPerformanceFrequency(lpFrequency:PLARGE_INTEGER):WINBOOL; external Kerneldll name 'QueryPerformanceFrequency';
 function QueryPerformanceFrequency(lpFrequency:PLARGE_INTEGER):WINBOOL; external Kerneldll name 'QueryPerformanceFrequency';
 procedure RaiseException(dwExceptionCode:DWORD; dwExceptionFlags:DWORD; nNumberOfArguments:DWORD; lpArguments:LPDWORD); external KernelDLL name 'RaiseException';
 procedure RaiseException(dwExceptionCode:DWORD; dwExceptionFlags:DWORD; nNumberOfArguments:DWORD; lpArguments:LPDWORD); external KernelDLL name 'RaiseException';
+// This function generates a random number.
+function WINCE_Random:DWORD; external KernelDLL name 'Random'; // index 91
 function ReadFile(hFile:HANDLE; lpBuffer:LPVOID; nNumberOfBytesToRead:DWORD; lpNumberOfBytesRead:LPDWORD; lpOverlapped:LPOVERLAPPED):BOOL; external KernelDLL name 'ReadFile'; // index F4
 function ReadFile(hFile:HANDLE; lpBuffer:LPVOID; nNumberOfBytesToRead:DWORD; lpNumberOfBytesRead:LPDWORD; lpOverlapped:LPOVERLAPPED):BOOL; external KernelDLL name 'ReadFile'; // index F4
 function ReadProcessMemory(hProcess:HANDLE; lpBaseAddress:LPCVOID; lpBuffer:LPVOID; nSize:DWORD; lpNumberOfBytesRead:LPDWORD):WINBOOL; external KernelDLL name 'ReadProcessMemory';
 function ReadProcessMemory(hProcess:HANDLE; lpBaseAddress:LPCVOID; lpBuffer:LPVOID; nSize:DWORD; lpNumberOfBytesRead:LPDWORD):WINBOOL; external KernelDLL name 'ReadProcessMemory';
 function RealizePalette(_para1:HDC):UINT; external KernelDLL name 'RealizePalette'; // index 52F
 function RealizePalette(_para1:HDC):UINT; external KernelDLL name 'RealizePalette'; // index 52F
@@ -2609,6 +2619,7 @@ function RegisterClass(lpWndClass:LPWNDCLASS):ATOM; external KernelDLL name 'Reg
 function RegisterClassW(lpWndClass:LPWNDCLASS):ATOM; external KernelDLL name 'RegisterClassW';
 function RegisterClassW(lpWndClass:LPWNDCLASS):ATOM; external KernelDLL name 'RegisterClassW';
 function RegisterClipboardFormat(lpszFormat:LPCWSTR):UINT; external KernelDLL name 'RegisterClipboardFormatW';
 function RegisterClipboardFormat(lpszFormat:LPCWSTR):UINT; external KernelDLL name 'RegisterClipboardFormatW';
 function RegisterClipboardFormatW(lpszFormat:LPCWSTR):UINT; external KernelDLL name 'RegisterClipboardFormatW';
 function RegisterClipboardFormatW(lpszFormat:LPCWSTR):UINT; external KernelDLL name 'RegisterClipboardFormatW';
+function RegisterDesktop(_hwndDesktop:HWND):BOOL; external KernelDLL name 'RegisterDesktop'; // index 4DB
 function RegisterDevice(lpszType:LPCWSTR; dwIndex:DWORD; lpszLib:LPCWSTR; dwInfo:DWORD):HANDLE; external KernelDLL name 'RegisterDevice'; // index 14F
 function RegisterDevice(lpszType:LPCWSTR; dwIndex:DWORD; lpszLib:LPCWSTR; dwInfo:DWORD):HANDLE; external KernelDLL name 'RegisterDevice'; // index 14F
 function RegisterTaskBar(hwndTaskbar:HWND):BOOL; external KernelDLL name 'RegisterTaskBar'; // index 4D9
 function RegisterTaskBar(hwndTaskbar:HWND):BOOL; external KernelDLL name 'RegisterTaskBar'; // index 4D9
 function RegisterTaskBarEx(hwndTaskbar:HWND; bTaskBarOnTop:BOOL):BOOL; external KernelDLL name 'RegisterTaskBarEx'; // index 4DA
 function RegisterTaskBarEx(hwndTaskbar:HWND; bTaskBarOnTop:BOOL):BOOL; external KernelDLL name 'RegisterTaskBarEx'; // index 4DA
@@ -2638,6 +2649,12 @@ function RemoveMenu(hMenu:HMENU; uPosition:UINT; uFlags:UINT):WINBOOL; external
 function RemoveProp(hWnd:HWND; lpString:LPCWSTR):HANDLE; external KernelDLL name 'RemoveProp';
 function RemoveProp(hWnd:HWND; lpString:LPCWSTR):HANDLE; external KernelDLL name 'RemoveProp';
 function RequestDeviceNotifications(devclass:LPGUID; hMsgQ:HANDLE; fAll:BOOL):HANDLE; external KernelDLL name 'RequestDeviceNotifications'; // index 155
 function RequestDeviceNotifications(devclass:LPGUID; hMsgQ:HANDLE; fAll:BOOL):HANDLE; external KernelDLL name 'RequestDeviceNotifications'; // index 155
 function ResetEvent(hEvent:HANDLE):WINBOOL;
 function ResetEvent(hEvent:HANDLE):WINBOOL;
+function ResourceCreateList(dwResId:DWORD; dwMinimum:DWORD; dwCount:DWORD):BOOL; external KernelDLL name 'ResourceCreateList'; // index 15A
+function ResourceRelease(dwResId:DWORD; dwId:DWORD; dwLen:DWORD):BOOL; external KernelDLL name 'ResourceRelease'; // index 15C
+function ResourceRequest(dwResId:DWORD; dwId:DWORD; dwLen:DWORD):BOOL; external KernelDLL name 'ResourceRequest'; // index 15B
+function ResourceDestroyList(dwResId:DWORD):BOOL; external KernelDLL name 'ResourceDestroyList';
+function ResourceRequestEx(dwResId:DWORD; dwId:DWORD; dwLen:DWORD; dwFlags:DWORD):BOOL; external KernelDLL name 'ResourceRequestEx';
+function ResourceMarkAsShareable(dwResId:DWORD; dwId:DWORD; dwLen:DWORD; fShareable:BOOL):BOOL; external KernelDLL name 'ResourceMarkAsShareable';
 function RestoreDC(_para1:HDC; _para2:longint):WINBOOL; external KernelDLL name 'RestoreDC';
 function RestoreDC(_para1:HDC; _para2:longint):WINBOOL; external KernelDLL name 'RestoreDC';
 function ResumeThread(hThread:HANDLE):DWORD; external KernelDLL name 'ResumeThread';
 function ResumeThread(hThread:HANDLE):DWORD; external KernelDLL name 'ResumeThread';
 function RoundRect(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint;_para6:longint; _para7:longint):WINBOOL; external KernelDLL name 'RoundRect';
 function RoundRect(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint;_para6:longint; _para7:longint):WINBOOL; external KernelDLL name 'RoundRect';
@@ -2733,15 +2750,17 @@ function Shell_NotifyIcon(dwMessage: DWORD; lpData: PNotifyIconDataA): WINBOOL;
 function ShellExecuteEx(lpExecInfo:LPSHELLEXECUTEINFO):WINBOOL; external KernelDLL name 'ShellExecuteEx';
 function ShellExecuteEx(lpExecInfo:LPSHELLEXECUTEINFO):WINBOOL; external KernelDLL name 'ShellExecuteEx';
 function SHGetFileInfo(_para1:LPCTSTR; _para2:DWORD; var _para3:SHFILEINFO; _para4:UINT; _para5:UINT):DWORD; external KernelDLL name 'SHGetFileInfo';
 function SHGetFileInfo(_para1:LPCTSTR; _para2:DWORD; var _para3:SHFILEINFO; _para4:UINT; _para5:UINT):DWORD; external KernelDLL name 'SHGetFileInfo';
 function SHGetFileInfoW(_para1:LPCTSTR; _para2:DWORD; var _para3:SHFILEINFO; _para4:UINT; _para5:UINT):DWORD; external KernelDLL name 'SHGetFileInfo';
 function SHGetFileInfoW(_para1:LPCTSTR; _para2:DWORD; var _para3:SHFILEINFO; _para4:UINT; _para5:UINT):DWORD; external KernelDLL name 'SHGetFileInfo';
+function SHLoadDIBitmap(szFileName:LPCTSTR):HBITMAP; external KernelDLL name 'SHLoadDIBitmap'; // index 2EC
 function ShowCaret(hWnd:HWND):WINBOOL; external KernelDLL name 'ShowCaret';
 function ShowCaret(hWnd:HWND):WINBOOL; external KernelDLL name 'ShowCaret';
 function ShowCursor(bShow:WINBOOL):longint; external KernelDLL name 'ShowCursor';
 function ShowCursor(bShow:WINBOOL):longint; external KernelDLL name 'ShowCursor';
 function ShowWindow(hWnd:HWND; nCmdShow:longint):WINBOOL; external KernelDLL name 'ShowWindow';
 function ShowWindow(hWnd:HWND; nCmdShow:longint):WINBOOL; external KernelDLL name 'ShowWindow';
+procedure SignalStarted(dw:DWORD); external KernelDLL name 'SignalStarted'; // index 176
 function SizeofResource(hModule:HINST; hResInfo:HRSRC):DWORD; external KernelDLL name 'SizeofResource';
 function SizeofResource(hModule:HINST; hResInfo:HRSRC):DWORD; external KernelDLL name 'SizeofResource';
 procedure Sleep(dwMilliseconds:DWORD); external KernelDLL name 'Sleep';
 procedure Sleep(dwMilliseconds:DWORD); external KernelDLL name 'Sleep';
 function StartDoc(_para1:HDC; _para2:PDOCINFOW):longint; external KernelDLL name 'StartDocW';
 function StartDoc(_para1:HDC; _para2:PDOCINFOW):longint; external KernelDLL name 'StartDocW';
 function StartDocW(_para1:HDC; _para2:PDOCINFOW):longint; external KernelDLL name 'StartDocW';
 function StartDocW(_para1:HDC; _para2:PDOCINFOW):longint; external KernelDLL name 'StartDocW';
 function StartPage(_para1:HDC):longint; external KernelDLL name 'StartPage';
 function StartPage(_para1:HDC):longint; external KernelDLL name 'StartPage';
-function StopDeviceNotifications(h: HANDLE):BOOL; external KernelDLL name 'StopDeviceNotifications';
+function StopDeviceNotifications(h:HANDLE):BOOL; external KernelDLL name 'StopDeviceNotifications'; // index 156
 function StretchBlt(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint;_para6:HDC; _para7:longint; _para8:longint; _para9:longint; _para10:longint;_para11:DWORD):WINBOOL; external KernelDLL name 'StretchBlt';
 function StretchBlt(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint;_para6:HDC; _para7:longint; _para8:longint; _para9:longint; _para10:longint;_para11:DWORD):WINBOOL; external KernelDLL name 'StretchBlt';
 function StretchDIBits(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint;_para6:longint; _para7:longint; _para8:longint; _para9:longint; _para10:pointer;var _para11:BITMAPINFO; _para12:UINT; _para13:DWORD):longint;
 function StretchDIBits(_para1:HDC; _para2:longint; _para3:longint; _para4:longint; _para5:longint;_para6:longint; _para7:longint; _para8:longint; _para9:longint; _para10:pointer;var _para11:BITMAPINFO; _para12:UINT; _para13:DWORD):longint;
   external KernelDLL name 'StretchDIBits';
   external KernelDLL name 'StretchDIBits';
@@ -3065,11 +3084,13 @@ begin
   GlobalFree:=LocalFree(hMem);
   GlobalFree:=LocalFree(hMem);
 end;
 end;
 
 
+{
 function GlobalHandle(pMem:LPCVOID):HGLOBAL;
 function GlobalHandle(pMem:LPCVOID):HGLOBAL;
 begin
 begin
   //GlobalHandle:=LocalHandle(pMem);
   //GlobalHandle:=LocalHandle(pMem);
   GlobalHandle:=HLOCAL(pMem); //see localhandle
   GlobalHandle:=HLOCAL(pMem); //see localhandle
 end;
 end;
+}
 
 
 function GlobalReAlloc(hMem:HGLOBAL; dwBytes:DWORD; uFlags:UINT):HGLOBAL;
 function GlobalReAlloc(hMem:HGLOBAL; dwBytes:DWORD; uFlags:UINT):HGLOBAL;
 begin
 begin
@@ -3081,11 +3102,13 @@ begin
   GlobalSize:=LocalSize(hMem);
   GlobalSize:=LocalSize(hMem);
 end;
 end;
 
 
+{
 function GlobalLock(hMem:HGLOBAL):LPVOID;
 function GlobalLock(hMem:HGLOBAL):LPVOID;
 begin
 begin
   //GlobalLock:=LocalLock(hMem);
   //GlobalLock:=LocalLock(hMem);
   GlobalLock:=LPVOID(hMem);  //see locallock
   GlobalLock:=LPVOID(hMem);  //see locallock
 end;
 end;
+}
 
 
 function GlobalUnlock(hMem:HGLOBAL):WINBOOL;
 function GlobalUnlock(hMem:HGLOBAL):WINBOOL;
 begin
 begin
@@ -3462,11 +3485,12 @@ begin
   ListView_Update:=SendMessage(hwndLV,LVM_UPDATE,WPARAM(i),0);
   ListView_Update:=SendMessage(hwndLV,LVM_UPDATE,WPARAM(i),0);
 end;
 end;
 
 
-
+{
 function LocalHandle(pMem:LPCVOID):HLOCAL;
 function LocalHandle(pMem:LPCVOID):HLOCAL;
 begin
 begin
   LocalHandle:=HLOCAL(pMem);
   LocalHandle:=HLOCAL(pMem);
 end;
 end;
+}
 
 
 function LocalDiscard(hlocMem:HLOCAL):HLOCAL;
 function LocalDiscard(hlocMem:HLOCAL):HLOCAL;
 begin
 begin
@@ -3571,7 +3595,7 @@ begin
 end;
 end;
 
 
 
 
-function PropSheet_SetCurSelByID(hPropSheetDlg : HWND; id : longint) : LRESULT;
+function PropSheet_SetCurSelByID(hPropSheetDlg : HWND; id : longint) : LRESULT; inline;
 begin
 begin
   PropSheet_SetCurSelByID:=SendMessage(hPropSheetDlg,PSM_SETCURSELID,0,LPARAM(id));
   PropSheet_SetCurSelByID:=SendMessage(hPropSheetDlg,PSM_SETCURSELID,0,LPARAM(id));
 end;
 end;

+ 313 - 0
rtl/wince/wininc/defines.inc

@@ -2228,6 +2228,7 @@
      MOD_CONTROL = 2;
      MOD_CONTROL = 2;
      MOD_SHIFT = 4;
      MOD_SHIFT = 4;
      MOD_WIN = 8;
      MOD_WIN = 8;
+     MOD_KEYUP = $1000;
      IDHOT_SNAPDESKTOP = -(2);
      IDHOT_SNAPDESKTOP = -(2);
      IDHOT_SNAPWINDOW = -(1);
      IDHOT_SNAPWINDOW = -(1);
   { RegNotifyChangeKeyValue  }
   { RegNotifyChangeKeyValue  }
@@ -2657,6 +2658,9 @@
      TPM_HORIZONTAL = 0;
      TPM_HORIZONTAL = 0;
      TPM_BOTTOMALIGN = $20;
      TPM_BOTTOMALIGN = $20;
      TPM_VERTICAL = $40;
      TPM_VERTICAL = $40;
+     TPM_NONOTIFY        = $0080;     //* Don't send any notification msgs */
+     TPM_RETURNCMD       = $0100;
+
   { TranslateCharsetInfo  }
   { TranslateCharsetInfo  }
      TCI_SRCCHARSET = 1;
      TCI_SRCCHARSET = 1;
      TCI_SRCCODEPAGE = 2;
      TCI_SRCCODEPAGE = 2;
@@ -3866,6 +3870,7 @@
      ACS_AUTOPLAY = 4;
      ACS_AUTOPLAY = 4;
      ACS_CENTER = 1;
      ACS_CENTER = 1;
      ACS_TRANSPARENT = 2;
      ACS_TRANSPARENT = 2;
+     ACS_TIMER       = 8;  // don't use threads... use timers
   { MODEMDEVCAPS structure  }
   { MODEMDEVCAPS structure  }
      DIALOPTION_BILLING = 64;
      DIALOPTION_BILLING = 64;
      DIALOPTION_QUIET = 128;
      DIALOPTION_QUIET = 128;
@@ -5799,6 +5804,254 @@ const
       MSGSRC_SOFTWARE_POST        = 1;
       MSGSRC_SOFTWARE_POST        = 1;
       MSGSRC_HARDWARE_KEYBOARD    = 2;
       MSGSRC_HARDWARE_KEYBOARD    = 2;
 
 
+// define dwFlag values for LoadFSDEx function...
+const
+      LOADFSD_ASYNCH        = $0000;
+      LOADFSD_SYNCH        = $0001;
+
+// flag values for ResourceRequestEx()
+const
+      RREXF_REQUEST_EXCLUSIVE         = $0001;
+
+
+{* File:    ResMgr.h
+ *
+ * Purpose: Resource manager definitions
+ * The resource manager itself is part of the device manager (device.exe)
+ * and its affliated entry points are declared in winbase.h.
+ *
+ *}
+// Resource ids less than BASE_OEM are reserved by Microsoft;
+// Resource ids between these limits are for OEM use.
+const
+      RESMGR_BASE_OEM     = $00080000;
+      RESMGR_MAX_OEM      = $000FFFFF;
+// Resource ids greater than MAX_OEM are reserved for future use by Microsoft.
+
+// --- FIVE hex digits (not four) in these constants!
+const
+      RESMGR_IRQ          = $00001;
+      RESMGR_IOSPACE      = $00002;
+// End-of-file ResMgr.h
+
+const
+      MONITOR_DEFAULTTONULL    = $00000000;
+      MONITOR_DEFAULTTOPRIMARY = $00000001;
+      MONITOR_DEFAULTTONEAREST = $00000002;
+
+const
+      MONITORINFOF_PRIMARY        = $00000001;
+
+const
+      ENUM_CURRENT_SETTINGS  = DWORD(-1);
+      ENUM_REGISTRY_SETTINGS = DWORD(-2);
+
+// For EnumDisplayDevices
+const
+      DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = $00000001;
+      DISPLAY_DEVICE_MULTI_DRIVER        = $00000002;
+      DISPLAY_DEVICE_PRIMARY_DEVICE      = $00000004;
+      DISPLAY_DEVICE_MIRRORING_DRIVER    = $00000008;
+      DISPLAY_DEVICE_VGA_COMPATIBLE      = $00000010;
+      DISPLAY_DEVICE_REMOVABLE           = $00000020;
+      DISPLAY_DEVICE_MODESPRUNED         = $08000000;
+      DISPLAY_DEVICE_REMOTE              = $04000000;
+      DISPLAY_DEVICE_DISCONNECT          = $02000000;
+
+// Child device state
+const
+      DISPLAY_DEVICE_ACTIVE              = $00000001;
+      DISPLAY_DEVICE_ATTACHED            = $00000002;
+
+// winuserm.h
+// Mobile extensions to winuser.h
+
+//***  VK_T* Virtual keycodes for telephone keyboard
+{
+// the phone keypad maps to VK_* as shown below.
+// some keys might not be present, e.g. VK_TFLIP
+    sofkey1     softkey2    VK_TSOFT1, VK_TSOFT2
+            ^               VK_TUP
+        <   +   >           VK_TLEFT, VK_TACTION, VK_TRIGHT
+            v               VK_TDOWN
+    home        back        VK_THOME, VK_TBACK
+    talk        end         VK_TTALK, VK_TEND
+    1       2       3       VK_T0..VK_T9
+    4       5       6       ...
+    7       8       9       ...
+    *       0       #       VK_TSTAR, VK_TPOUND
+// other buttons include
+    VK_TRECORD
+    VK_TPOWER, VK_TVOLUMEUP, VK_TVOLUMEDOWN
+    VK_TFLIP
+}
+const
+      VK_TSOFT1               = VK_F1;               // Softkey 1
+      VK_TSOFT2               = VK_F2;               // Softkey 2
+      VK_TTALK                = VK_F3;               // Talk
+      VK_TEND                 = VK_F4;               // End
+      VK_THOME                = VK_LWIN;             // Home
+      VK_TBACK                = VK_ESCAPE;           // Back
+
+      VK_TACTION              = VK_RETURN;       // Action
+      VK_TRECORD              = VK_F10;          // Record
+      VK_TFLIP                = VK_F17;          // Flip
+      VK_TPOWER               = VK_F18;          // Power
+      VK_TVOLUMEUP            = VK_F6;           // Volume Up
+      VK_TVOLUMEDOWN          = VK_F7;           // Volume Down
+
+      VK_TSPEAKERPHONE_TOGGLE = VK_F16;
+      VK_END_ALL_DATA_CALLS   = VK_F15;
+
+
+      VK_TUP                  = VK_UP;               // Up
+      VK_TDOWN                = VK_DOWN;             // Down
+      VK_TLEFT                = VK_LEFT;             // Left
+      VK_TRIGHT               = VK_RIGHT;            // Right
+
+      VK_T0                   = longint(WideChar('0'));                // 0 .. 9 keys
+      VK_T1                   = longint(WideChar('1'));
+      VK_T2                   = longint(WideChar('2'));
+      VK_T3                   = longint(WideChar('3'));
+      VK_T4                   = longint(WideChar('4'));
+      VK_T5                   = longint(WideChar('5'));
+      VK_T6                   = longint(WideChar('6'));
+      VK_T7                   = longint(WideChar('7'));
+      VK_T8                   = longint(WideChar('8'));
+      VK_T9                   = longint(WideChar('9'));
+      VK_TSTAR                = VK_F8;               // *
+      VK_TPOUND               = VK_F9;               // #
+
+      VK_SYMBOL               = VK_F11;              // Symbol (SYM) key
+
+      VK_REDKEY               = VK_F19;              // Sent by a keypad that has a special red function key
+      VK_ROCKER               = VK_F20;              // Arrow keys came from a Rocker
+      VK_DPAD                 = VK_F21;              // Arrow keys came from a DPAD
+      VK_ACTION               = VK_F23;              // Sent with VK_RETURN when doing Action on PPC rockers
+
+      VK_VOICEDIAL            = VK_F24;            // Key used to kick off voice dial recognition
+      VK_KEYLOCK              = VK_F22;            // Key used to lock the device
+
+// Chorded keys.  DONE is VK_RWIN + VK_F6 and MOJI is VK_RWIN + VK_F7
+const
+      VK_DONE     = VK_F6;                 // <OK/Close> hotkey code
+      MOD_DONE    = MOD_WIN or MOD_KEYUP; // <OK/Close> hotkey modifiers
+
+      VK_MOJI     = VK_F7;                 // Key used to switch between FE language layouts
+      MOD_MOJI    = MOD_WIN or MOD_KEYUP;  //Modifiers so MOJI goes to the shell
+
+
+// App keys
+const
+      VK_APP_FIRST    = $C1;
+      VK_APP1         = $C1;
+      VK_APP2         = $C2;
+      VK_APP3         = $C3;
+      VK_APP4         = $C4;
+      VK_APP5         = $C5;
+      VK_APP6         = $C6;
+      VK_APP_LAST     = $C6;
+
+// Specifies keys whose autorepeats should be silent. (Used by the keyboard driver.)
+// All keys except the nav keys should have silent autorepeats.
+// #define SILENT_REPEAT(uVKey) (uVKey < VK_LEFT || uVKey > VK_DOWN)
+function SILENT_REPEAT(uVKey:longint):BOOL; inline;
+
+// #define Edit_GetInputMode(hwndCtl, fActual)     ((int)(DWORD)SNDMSG((hwndCtl), EM_GETINPUTMODE, 0L, (LPARAM)(BOOL)(fActual)))
+function Edit_GetInputMode(hwndCtl:HWND; fActual:BOOL):longint;
+// #define Edit_SetInputMode(hwndCtl, nInputMode)  ((BOOL)(DWORD)SNDMSG((hwndCtl), EM_SETINPUTMODE, 0L, (LPARAM)(int)(nInputMode)))
+function Edit_SetInputMode(hwndCtl:HWND; nInputMode:longint):Bool;
+
+// #define Edit_SetSymbols(hwndCtl, pszSymbols)    ((BOOL)(DWORD)SNDMSG((hwndCtl), EM_SETSYMBOLS, 0L, (LPARAM)(LPCTSTR)(pszSymbols)))
+function Edit_SetSymbols(hwndCtl:HWND; pszSymbols:LPCTSTR):BOOL;
+
+// #define Edit_SetExtendedStyle(hwndCtl, dwMask, dwExStyle)    ((DWORD)SNDMSG((hwndCtl), EM_SETEXTENDEDSTYLE, (WPARAM)(DWORD)(dwMask), (LPARAM)(DWORD)(dwExStyle)))
+function Edit_SetExtendedStyle(hwndCtl:HWND; dwMask:DWORD; dwExStyle:DWORD):DWORD;
+
+// #define Edit_GetExtendedStyle(hwndCtl)                       ((DWORD)SNDMSG((hwndCtl), EM_GETEXTENDEDSTYLE, 0L, 0L))
+function Edit_GetExtendedStyle(hwndCtl:HWND):DWORD;
+
+// Edit control extended styles
+const
+      ES_EX_CLEARONBACKPRESSHOLD      = $00000001;  // Clear all contents when user does Press&Hold of Back key.
+      ES_EX_FOCUSBORDERDISABLED       = $00000002;  // Prevent control from drawing a border when it gains focus.
+
+// IME Input Modes
+const
+      IM_SPELL           = 0;
+      IM_AMBIG           = 1;
+      IM_NUMBERS         = 2;
+      IM_LAST            = IM_NUMBERS;
+      IM_MASK            = $0000FFFF;       // Mask to access mode.
+
+// IME Input Mode Modifier Flags
+      IMMF_SETCLR_SHIFT       = $00010000;  // In. Used to set/clear Shift.
+      IMMF_SETCLR_CAPSLOCK    = $00020000;  // In. Used to set/clear Capslock.
+      IMMF_SHIFT              = $01000000;  // In/Out. Shift state.
+      IMMF_CAPSLOCK           = $02000000;  // In/Out. CapsLock state.
+      IMMF_MASK               = $FFFF0000;  // Mask to access modifier flags.
+
+// Input modes for EM_SETINPUTMODE/EM_GETINPUTMODE
+      EIM_SPELL                   = IM_SPELL;       // Spell input mode
+      EIM_AMBIG                   = IM_AMBIG;       // Ambiguous mode if input engine supports this mode. Else defaults to Spell mode.
+      EIM_NUMBERS                 = IM_NUMBERS;     // Numbers mode.
+      EIM_TEXT                    = IM_LAST + 1;    // User's preferred mode. This is the user's last Spell or Ambig mode selection
+                                                    // in an EIM_TEXT edit control.
+      EIM_MASK                    = IM_MASK;        // Mask to access mode.
+
+// Macro to access mode
+// #define EIM_MODE(x)                 (x & EIM_MASK)
+function EIM_MODE(x:DWORD):DWORD;
+
+// Input mode modifier flags
+const
+      EIMMF_SETCLR_SHIFT          = IMMF_SETCLR_SHIFT;       // In. Used to set/clear Shift.
+      EIMMF_SETCLR_CAPSLOCK       = IMMF_SETCLR_CAPSLOCK;    // In. Used to set/clear Capslock.
+      EIMMF_SHIFT                 = IMMF_SHIFT;              // In/Out. Shift state.
+      EIMMF_CAPSLOCK              = IMMF_CAPSLOCK;           // In/Out. CapsLock state.
+      EIMMF_MASK                  = IMMF_MASK;               // Mask to access modifier flags.
+
+// Macro to access modifier flags
+// #define EIM_MODIFIERS(x)            (x & EIMMF_MASK)
+function EIM_MODIFIERS(x:DWORD):DWORD;
+
+
+// #define ListBox_GetInputMode(hwndCtl, fActual)              ((int)(DWORD)SNDMSG((hwndCtl), LB_GETINPUTMODE, 0L, (WPARAM)(BOOL)(fActual)))
+function ListBox_GetInputMode(hwndCtl:HWND; fActual:BOOL):longint;
+
+// #define ListBox_SetInputMode(hwndCtl, nInputMode)           ((BOOL)(DWORD)SNDMSG((hwndCtl), LB_SETINPUTMODE, 0L, (LPARAM)(int)(nInputMode)))
+function ListBox_SetInputMode(hwndCtl:HWND; nInputMode:longint):BOOL;
+
+// Input modes for LB_SETINPUTMODE/LB_GETINPUTMODE
+const
+      LIM_SPELL                   = IM_SPELL;                // Spell input mode
+      LIM_NUMBERS                 = IM_NUMBERS;              // Numbers mode.
+
+// wParam of  WM_IME_REQUEST. Extension for Mobile.
+const
+      IMR_ISIMEAWARE           = $1000;  // Is window IME aware?
+
+// Return values of IMR_ISIMEAWARE
+const
+      IMEAF_AWARE         = $00000001; // Window is IME aware
+      IMEAF_SMART_CAPS    = $00000002; // Window uses smart caps.
+
+// Extension of WM_HOTKEY MOD_* values for Mobile
+const
+      MOD_HOLD                = $8000; // Was WM_HOTKEY caused by Press&Hold
+
+const
+      MIIM_FULLSTR            = $10000000;
+
+const
+      SS_REALSIZEIMAGE    = $00000800;
+      
+// End-of-winuserm.h
+
+const
+      MAXINTATOM = ATOM($C000);
+      INVALID_ATOM = ATOM(0);
+
 {$endif read_interface}
 {$endif read_interface}
 
 
 
 
@@ -5985,6 +6238,66 @@ const
        GetFirstChild:=GetWindow(h,GW_CHILD);
        GetFirstChild:=GetWindow(h,GW_CHILD);
     end;
     end;
 
 
+// winuserm.h
+// Mobile extensions to winuser.h
+
+// Specifies keys whose autorepeats should be silent. (Used by the keyboard driver.)
+// All keys except the nav keys should have silent autorepeats.
+// #define SILENT_REPEAT(uVKey) (uVKey < VK_LEFT || uVKey > VK_DOWN)
+function SILENT_REPEAT(uVKey:longint):BOOL; inline;
+begin
+  SILENT_REPEAT:=(uVKey<VK_LEFT) or (uVKey>VK_DOWN);
+end;
+
+
+function Edit_GetInputMode(hwndCtl:HWND; fActual:BOOL):longint; inline;
+begin
+  Edit_GetInputMode:=longint(SendMessage(hwndCtl,EM_GETINPUTMODE,WPARAM(0),LPARAM(fActual)));
+end;
+
+function Edit_SetInputMode(hwndCtl:HWND; nInputMode:longint):Bool; inline;
+begin
+  Edit_SetInputMode:=BOOL(DWORD(SendMessage(hwndCtl,EM_SETINPUTMODE,WPARAM(0),LPARAM(nInputMode))));
+end;
+
+function Edit_SetSymbols(hwndCtl:HWND; pszSymbols:LPCTSTR):BOOL; inline;
+begin
+  Edit_SetSymbols:=BOOL(SendMessage(hwndCtl,EM_SETSYMBOLS,WPARAM(0),LPARAM(pszSymbols)));
+end;
+
+function Edit_SetExtendedStyle(hwndCtl:HWND; dwMask:DWORD; dwExStyle:DWORD):DWORD; inline;
+begin
+  Edit_SetExtendedStyle:=DWORD(SendMessage(hwndCtl,EM_SETEXTENDEDSTYLE,WPARAM(dwMask),LPARAM(dwExStyle)));
+end;
+
+function Edit_GetExtendedStyle(hwndCtl:HWND):DWORD; inline;
+begin
+  Edit_GetExtendedStyle:=DWORD(SendMessage(hwndCtl,EM_GETEXTENDEDSTYLE,WPARAM(0),LPARAM(0)));
+end;
+
+
+function EIM_MODE(x:DWORD):DWORD; inline;
+begin
+  EIM_MODE:=x and EIM_MASK;
+end;
+
+function EIM_MODIFIERS(x:DWORD):DWORD; inline;
+begin
+  EIM_MODIFIERS:=x and EIMMF_MASK;
+end;
+
+function ListBox_GetInputMode(hwndCtl:HWND; fActual:BOOL):longint; inline;
+begin
+  ListBox_GetInputMode:=longint(SendMessage(hwndCtl,LB_GETINPUTMODE,WPARAM(0),LPARAM(fActual)));
+end;
+
+function ListBox_SetInputMode(hwndCtl:HWND; nInputMode:longint):BOOL; inline;
+begin
+  ListBox_SetInputMode:=BOOL(SendMessage(hwndCtl,LB_SETINPUTMODE,WPARAM(0),LPARAM(nInputMode)));
+end;
+
+// End-of-winuserm.h
+
 {$ifdef WINCE}
 {$ifdef WINCE}
 {$endif WINCE}
 {$endif WINCE}
 
 

+ 49 - 0
rtl/wince/wininc/messages.inc

@@ -1132,6 +1132,55 @@
      WM_XBUTTONUP     = 524;
      WM_XBUTTONUP     = 524;
      WM_XBUTTONDBLCLK = 525;
      WM_XBUTTONDBLCLK = 525;
 
 
+// winuserm.h
+// Mobile extensions to winuser.h
+
+// Edit control extensions for Mobile
+const
+     // If lParam is FALSE, gets default input mode.
+     // If lParam is TRUE, gets actual input mode if control has focus, else
+     // gets default input mode. Returns EIM_*|EIMMF_*
+      EM_GETINPUTMODE       = $00DD;
+
+     // Sets default input mode when control gets focus. lParam should be be EIM_*|EIMMF_*.
+      EM_SETINPUTMODE       = $00DE;
+
+     // Sets symbols that are displayed when the user presses the 1 key in
+     // Multipress mode. lParam is a null-teminated string containing the symbols
+     // or NULL to revert to standard symbols.
+      EM_SETSYMBOLS         = $00DF;
+
+     // Sets extended styles. wParam = Mask. lParam = Extended styles. Returns old styles.
+      EM_SETEXTENDEDSTYLE   = $00E0;
+
+     // Gets extended styles.
+      EM_GETEXTENDEDSTYLE   = $00E1;
+
+
+// Listbox control extensions for Mobile. Supported only for single selection listboxes.
+const
+     // If lParam is FALSE, gets default input mode.
+     // If lParam is TRUE, gets actual input mode if control has focus, else
+     // gets default input mode. Returns LIM_*
+      LB_GETINPUTMODE       = $01C0;
+
+     // Sets default input mode when control gets focus. lParam should be be LIM_*.
+      LB_SETINPUTMODE       = $01C1;
+
+// Dialog message extensions
+//
+// Reset scroll info. To be sent by a dialog if it does a relayout of child
+// controls after WM_INITDIALOG. Supported only if the dialog returns DLGC_SCROLL
+// on WM_GETDLGCODE.
+// wParam: TRUE to scroll back to top if user scrolled dialog. FALSE to leave
+// dialog in position that user scrolled to.
+// lParam: TRUE to recompute scroll information. FALSE to use previously computed
+// scroll information.
+const
+      DM_RESETSCROLL          = WM_USER + 2;
+
+// End-of-winuserm.h
+
 Type
 Type
 {$ifdef MESSAGESUNIT}
 {$ifdef MESSAGESUNIT}
 
 

+ 1 - 0
rtl/wince/wininc/redef.inc

@@ -20,6 +20,7 @@
 type
 type
   PIID = PGUID;
   PIID = PGUID;
   TIID = TGUID;
   TIID = TGUID;
+  REFIID = ^TIID;
   THANDLE = HANDLE;
   THANDLE = HANDLE;
 
 
   PSmallRect = ^TSmallRect;
   PSmallRect = ^TSmallRect;

+ 48 - 0
rtl/wince/wininc/struct.inc

@@ -280,6 +280,7 @@
              1: (TopLeft,BottomRight : TPoint);
              1: (TopLeft,BottomRight : TPoint);
        end;
        end;
      LPRECT = ^RECT;
      LPRECT = ^RECT;
+     LPCRECT = ^RECT;
      _RECT = RECT;
      _RECT = RECT;
      TRECT = RECT;
      TRECT = RECT;
      PRECT = ^RECT;
      PRECT = ^RECT;
@@ -5347,11 +5348,18 @@
      _GUID = GUID;
      _GUID = GUID;
      TGUID = GUID;
      TGUID = GUID;
      PGUID = ^GUID;
      PGUID = ^GUID;
+     REFGUID = ^GUID;
 
 
      CLSID = GUID;
      CLSID = GUID;
      LPCLSID = ^CLSID;
      LPCLSID = ^CLSID;
      TCLSID = CLSID;
      TCLSID = CLSID;
      PCLSID = ^CLSID;
      PCLSID = ^CLSID;
+     REFCLSID = ^CLSID;
+
+     FMTID = GUID;
+     LPFMTID = ^FMTID;
+     REFFMTID = ^FMTID;
+
 
 
      SERVICE_INFO = record
      SERVICE_INFO = record
           lpServiceType : LPGUID;
           lpServiceType : LPGUID;
@@ -7721,6 +7729,46 @@ type
     PINPUT = ^tagINPUT;
     PINPUT = ^tagINPUT;
     LPINPUT = ^tagINPUT;
     LPINPUT = ^tagINPUT;
 
 
+
+// For EnumDisplayMonitors
+type
+     MONITORENUMPROC = function(_hMonitor:HMONITOR; hdcMonitor:HDC; lprcMonitor:LPRECT; dwData:LPARAM):BOOL;
+
+// For GetMonitorInfo
+type
+     tagMONITORINFO = record
+       cbSize:DWORD;
+       rcMonitor:RECT;
+       rcWork:RECT;
+       dwFlags:DWORD;
+     end;
+     MONITORINFO = tagMONITORINFO;
+     LPMONITORINFO = ^tagMONITORINFO;
+
+     tagMONITORINFOEX = record
+       cbSize:DWORD;
+       rcMonitor:RECT;
+       rcWork:RECT;
+       dwFlags:DWORD;
+        szDevice:array[0..CCHDEVICENAME-1] of TCHAR;
+     end;
+     MONITORINFOEX = tagMONITORINFOEX;
+     LPMONITORINFOEX = ^tagMONITORINFOEX;
+
+// For EnumDisplayDevices
+type
+     _DISPLAY_DEVICE = record
+       cb:DWORD;
+       DeviceName:array[0..31] of TCHAR;
+       DeviceString:array[0..127] of TCHAR;
+       StateFlags:DWORD;
+       DeviceID:array[0..127] of TCHAR;
+       DeviceKey:array[0..127] of TCHAR;
+     end;
+     DISPLAY_DEVICE = _DISPLAY_DEVICE;
+     PDISPLAY_DEVICE = ^_DISPLAY_DEVICE;
+     LPDISPLAY_DEVICE = ^_DISPLAY_DEVICE;
+
 {$endif read_interface}
 {$endif read_interface}