diff --git a/rtl/inc/resh.inc b/rtl/inc/resh.inc index f3cf519718..d0e9c4382e 100644 --- a/rtl/inc/resh.inc +++ b/rtl/inc/resh.inc @@ -13,12 +13,14 @@ type TFPResourceHandle = PtrUInt; TFPResourceHMODULE = PtrUInt; TFPResourceHGLOBAL = PtrUInt; +{$ifndef Win16} {$ifdef FPC_OS_UNICODE} {roozbeh : maybe it shoud be moved after ifndef mswindows,as there is one declared in wince,base.inc} MAKEINTRESOURCE = pwidechar; {$else} MAKEINTRESOURCE = pchar; {$endif} +{$endif not Win16} {$ifndef MSWINDOWS } { windows has this in the windows unit. It probably would better @@ -64,6 +66,7 @@ Function HINSTANCE : TFPResourceHMODULE; Function EnumResourceTypes(ModuleHandle : TFPResourceHMODULE; EnumFunc : EnumResTypeProc; lParam : PtrInt) : LongBool; Function EnumResourceNames(ModuleHandle : TFPResourceHMODULE; ResourceType : PChar; EnumFunc : EnumResNameProc; lParam : PtrInt) : LongBool; Function EnumResourceLanguages(ModuleHandle : TFPResourceHMODULE; ResourceType, ResourceName : PChar; EnumFunc : EnumResLangProc; lParam : PtrInt) : LongBool; +{$ifndef Win16} Function FindResource(ModuleHandle: TFPResourceHMODULE; ResourceName, ResourceType: PChar): TFPResourceHandle; Function FindResourceEx(ModuleHandle: TFPResourceHMODULE; ResourceType, ResourceName: PChar; Language : word): TFPResourceHandle; Function LoadResource(ModuleHandle: TFPResourceHMODULE; ResHandle: TFPResourceHandle): TFPResourceHGLOBAL; @@ -71,6 +74,7 @@ Function SizeofResource(ModuleHandle: TFPResourceHMODULE; ResHandle: TFPResource Function LockResource(ResData: TFPResourceHGLOBAL): Pointer; Function UnlockResource(ResData: TFPResourceHGLOBAL): LongBool; Function FreeResource(ResData: TFPResourceHGLOBAL): LongBool; +{$endif Win16} {$ifdef FPC_HAS_FEATURE_ANSISTRINGS} Function FindResource(ModuleHandle: TFPResourceHMODULE; ResourceName, ResourceType: AnsiString): TFPResourceHandle; Function FindResourceEx(ModuleHandle: TFPResourceHMODULE; ResourceType, ResourceName: AnsiString; Language : word): TFPResourceHandle; diff --git a/rtl/inc/sysres.inc b/rtl/inc/sysres.inc index 4b45830537..aa5b02cab3 100644 --- a/rtl/inc/sysres.inc +++ b/rtl/inc/sysres.inc @@ -163,6 +163,7 @@ begin Result:=resourcemanager.EnumResourceLanguagesFunc(ModuleHandle,ResourceType,ResourceName,EnumFunc,lParam); end; +{$ifndef Win16} Function FindResource(ModuleHandle: TFPResourceHMODULE; ResourceName, ResourceType: PChar): TFPResourceHandle; begin Result:=resourcemanager.FindResourceFunc(ModuleHandle,ResourceName,ResourceType); @@ -197,4 +198,5 @@ Function FreeResource(ResData: TFPResourceHGLOBAL): LongBool; begin Result:=resourcemanager.FreeResourceFunc(ResData); end; +{$endif Win16} diff --git a/rtl/win16/win31.pp b/rtl/win16/win31.pp index 5bdfed4766..1b05ae8b25 100644 --- a/rtl/win16/win31.pp +++ b/rtl/win16/win31.pp @@ -156,6 +156,12 @@ const { ExitWindows values } EW_REBOOTSYSTEM = $43; +{ Predefined Resource Types } + OBM_UPARROWI = 32737; + OBM_DNARROWI = 32736; + OBM_RGARROWI = 32735; + OBM_LFARROWI = 32734; + function GetFreeSystemResources(SysResource: UINT): UINT; external 'USER'; procedure LogError(err: UINT; lpInfo: FarPointer); external 'KERNEL'; diff --git a/rtl/win16/winprocs.inc b/rtl/win16/winprocs.inc index 6e4aa68667..b2d7432853 100644 --- a/rtl/win16/winprocs.inc +++ b/rtl/win16/winprocs.inc @@ -68,3 +68,9 @@ function LocalDiscard(h: HLOCAL): HLOCAL; begin LocalDiscard := LocalReAlloc(h, 0, LMEM_MOVEABLE); end; + +function UnlockResource(hResData: HGLOBAL): BOOL; +begin + UnlockResource := GlobalUnlock(hResData); +end; + diff --git a/rtl/win16/winprocsh.inc b/rtl/win16/winprocsh.inc index 175ef86182..7451c9f191 100644 --- a/rtl/win16/winprocsh.inc +++ b/rtl/win16/winprocsh.inc @@ -205,3 +205,20 @@ function WNetAddConnection(lpszNetPath, lpszPassword, lpszLocalName: LPSTR): UIN function WNetGetConnection(lpszLocalName, lpszRemoteName: LPSTR; cbBufferSize: LPUINT): UINT; external 'USER'; function WNetCancelConnection(lpszName: LPSTR; tForce: BOOL): UINT; external 'USER'; +{ Resource Management } + +function FindResource(hInstance: HINST; lpName, lpType: LPCSTR): HRSRC; external 'KERNEL'; +function LoadResource(hInstance: HINST; hResInfo: HRSRC): HGLOBAL; external 'KERNEL'; +function FreeResource(hResData: HGLOBAL): BOOL; external 'KERNEL'; + +function LockResource(hResData: HGLOBAL): FarPointer; external 'KERNEL'; +function UnlockResource(hResData: HGLOBAL): BOOL; {$ifdef SYSTEMUNIT}forward;{$else}inline;{$endif} + +function SizeofResource(hInstance: HINST; hResInfo: HRSRC): DWORD; external 'KERNEL'; + +function AccessResource(hInstance: HINST; hResInfo: HRSRC): SmallInt; external 'KERNEL'; + +function AllocResource(hInstance: HINST; hResInfo: HRSRC; dwSize: DWORD): HGLOBAL; external 'KERNEL'; + +function SetResourceHandler(hInstance: HINST; lpType: LPCSTR; lpLoadFunc: RSRCHDLRPROC): RSRCHDLRPROC; external 'KERNEL'; + diff --git a/rtl/win16/wintypes.inc b/rtl/win16/wintypes.inc index cc78889dfe..5c7dbe5b41 100644 --- a/rtl/win16/wintypes.inc +++ b/rtl/win16/wintypes.inc @@ -248,3 +248,78 @@ const WN_DEVICE_ERROR = $0035; WN_CONNECTION_CLOSED = $0036; +type +{ Resource Management } + HRSRC = THandle; + RSRCHDLRPROC = function(hMem: HGLOBAL; hInstance: HINST; hResInfo: HRSRC): HGLOBAL;far; + MAKEINTRESOURCE = LPCSTR; + +const +{ Predefined Resource Types } + RT_CURSOR = MAKEINTRESOURCE(1); + RT_BITMAP = MAKEINTRESOURCE(2); + RT_ICON = MAKEINTRESOURCE(3); + RT_MENU = MAKEINTRESOURCE(4); + RT_DIALOG = MAKEINTRESOURCE(5); + RT_STRING = MAKEINTRESOURCE(6); + RT_FONTDIR = MAKEINTRESOURCE(7); + RT_FONT = MAKEINTRESOURCE(8); + RT_ACCELERATOR = MAKEINTRESOURCE(9); + RT_RCDATA = MAKEINTRESOURCE(10); + + RT_GROUP_CURSOR = MAKEINTRESOURCE(12); + RT_GROUP_ICON = MAKEINTRESOURCE(14); + +{ OEM Resource Ordinal Numbers } + OBM_CLOSE = 32754; + OBM_UPARROW = 32753; + OBM_DNARROW = 32752; + OBM_RGARROW = 32751; + OBM_LFARROW = 32750; + OBM_REDUCE = 32749; + OBM_ZOOM = 32748; + OBM_RESTORE = 32747; + OBM_REDUCED = 32746; + OBM_ZOOMD = 32745; + OBM_RESTORED = 32744; + OBM_UPARROWD = 32743; + OBM_DNARROWD = 32742; + OBM_RGARROWD = 32741; + OBM_LFARROWD = 32740; + OBM_MNARROW = 32739; + OBM_COMBO = 32738; + + OBM_OLD_CLOSE = 32767; + OBM_SIZE = 32766; + OBM_OLD_UPARROW = 32765; + OBM_OLD_DNARROW = 32764; + OBM_OLD_RGARROW = 32763; + OBM_OLD_LFARROW = 32762; + OBM_BTSIZE = 32761; + OBM_CHECK = 32760; + OBM_CHECKBOXES = 32759; + OBM_BTNCORNERS = 32758; + OBM_OLD_REDUCE = 32757; + OBM_OLD_ZOOM = 32756; + OBM_OLD_RESTORE = 32755; + + OCR_NORMAL = 32512; + OCR_IBEAM = 32513; + OCR_WAIT = 32514; + OCR_CROSS = 32515; + OCR_UP = 32516; + OCR_SIZE = 32640; + OCR_ICON = 32641; + OCR_SIZENWSE = 32642; + OCR_SIZENESW = 32643; + OCR_SIZEWE = 32644; + OCR_SIZENS = 32645; + OCR_SIZEALL = 32646; + OCR_ICOCUR = 32647; + + OIC_SAMPLE = 32512; + OIC_HAND = 32513; + OIC_QUES = 32514; + OIC_BANG = 32515; + OIC_NOTE = 32516; +