Files
comun/utile/ctl32/ctl32_structs.vc2

1411 lines
32 KiB
Plaintext

*--------------------------------------------------------------------------------------------------------------------------------------------------------
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
*--------------------------------------------------------------------------------------------------------------------------------------------------------
*< FOXBIN2PRG: Version="1.21" SourceFile="ctl32_structs.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
*
*
DEFINE CLASS _base AS custom
*< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />
#INCLUDE "ctl32.h"
*<DefinedPropArrayMethod>
*m: ctlallocatememory
*m: ctlfreememory
*m: ctlinttostr
*m: ctlos
*m: ctlregisterfunctions
*m: ctlstrtoint
*m: ctlwritememory
*m: _struct_access
*m: _struct_assign
*p: ctlabout
*p: ctlversion
*p: _memberdata && XML Metadata for customizable properties
*p: _struct
*p: _structlen
*</DefinedPropArrayMethod>
*<PropValue>
ctlabout = ctl32_structs - Carlos Alloatti
ctlversion = 20061010
Height = 17
Name = "_base"
Width = 17
_struct =
_structlen = 0
*</PropValue>
PROCEDURE ctlallocatememory
*!* Code stolen from www.foxitaly.com/ecerlini/struttureapi_en.html
Lparameters tnBytes As Number
Local ;
lnHeap As Number, ;
lnResult As Number
m.lnHeap = GetProcessHeap()
m.lnResult = HeapAlloc(m.lnHeap, HEAP_ZERO_MEMORY, m.tnBytes) && non è necessario metterla a 0 ma ...
Return m.lnResult
ENDPROC
PROCEDURE ctlfreememory
*!* Code stolen from www.foxitaly.com/ecerlini/struttureapi_en.html
Lparameters tnMemHandle As Number
Local ;
lnHeap As Number, ;
lnResult As Number
m.lnHeap = GetProcessHeap()
m.lnResult = HeapFree(m.lnHeap, 0, m.tnMemHandle)
Return Iif(m.lnResult = 0, .F., .T.)
ENDPROC
PROCEDURE ctlinttostr
*!* Code stolen from www.foxitaly.com/ecerlini/struttureapi_en.html
Lparameters tnIntValue As Number
Local ;
lnx As Number, ;
lnChars As Number, ;
lnOper As Number, ;
lcRetVal As String
m.tnIntValue = Int(m.tnIntValue)
m.lnChars = 4
If Sign(m.tnIntValue) = -1
m.tnIntValue = m.tnIntValue + 1 + Evaluate([0x] + Replicate([FF], m.lnChars))
Endif
m.lnOper = 0
m.lcRetVal = []
m.lnx = 0
Do While m.tnIntValue > 0
m.lnOper = Mod(Int(m.tnIntValue / 256 ^ m.lnx), 256)
m.lcRetVal = m.lcRetVal + Chr(m.lnOper)
m.tnIntValue = m.tnIntValue - (m.lnOper * (256 ^ m.lnx))
m.lnx = m.lnx + 1
Enddo
Return Padr(m.lcRetVal, m.lnChars, Chr(0))
ENDPROC
PROCEDURE ctlos
*!* Returns a numeric value representing the operating system version
*!* Check ctl32.h for possible values
*!* ie CON_OS_WINXPSP2 = 5010200
Return Val(Os(3)) * 1000000 + Val(Os(4)) * 10000 + Val(Os(8)) * 100 + Val(Os(9))
ENDPROC
PROCEDURE ctlregisterfunctions
Local Array laDeclaredDlls(1,3)
Local lnLen
m.lnLen = Adlls(m.laDeclaredDlls)
If Ascan(m.laDeclaredDlls, [DeleteObject], 1, m.lnLen , 2, 15) = 0
Declare Integer DeleteObject In gdi32;
Integer hObject
ENDIF
If Ascan(m.laDeclaredDlls, [GetProcessHeap], 1, m.lnLen , 2, 15) = 0
Declare Integer GetProcessHeap In win32api
Endif
If Ascan(m.laDeclaredDlls, [HeapAlloc], 1, m.lnLen , 2, 15) = 0
Declare Integer HeapAlloc In win32api ;
Integer hHeap, ;
Integer dwFlags, ;
Integer dwBytes
Endif
If Ascan(m.laDeclaredDlls, [HeapFree], 1, m.lnLen , 2, 15) = 0
Declare Integer HeapFree In win32api ;
Integer hHeap, ;
Integer dwFlags, ;
Integer lpMem
Endif
ENDPROC
PROCEDURE ctlstrtoint
*!* Code stolen from www.foxitaly.com/ecerlini/struttureapi_en.html
Lparameters tcCharInt As Character, tlUnsigned As Logical
Local ;
lnx As Number, ;
lnRetVal As Number, ;
lnChars As Number, ;
llBig As Logical
m.lnRetVal = 0
m.lnChars = Len(m.tcCharInt)
If m.lnChars > 0 Then
For m.lnx = 1 To m.lnChars
m.lnRetVal = m.lnRetVal + (Asc(Substr(m.tcCharInt, m.lnx, 1)) * (256 ^ (m.lnx - 1)))
Next
m.llBig = m.lnRetVal > Evaluate([0x7F] + Replicate([FF], m.lnChars-1))
If m.tlUnsigned = FALSE And m.llBig
m.lnRetVal = m.lnRetVal - 1 - Evaluate([0x] + Replicate([FF], m.lnChars))
Endif
Endif
Return Int(m.lnRetVal)
ENDPROC
PROCEDURE ctlwritememory
*!* Code stolen from www.foxitaly.com/ecerlini/struttureapi_en.html
Lparameters tcMemString as Character
Local ;
lnSize As Number, ;
lnMemHandle As Number, ;
lcExErr As String
m.lnSize = Len(m.tcMemString)
m.lnMemHandle = 0
m.lnMemHandle = This.ctlAllocateMemory(m.lnSize)
*!* Write string to memory space
Sys(2600, m.lnMemHandle, m.lnSize, m.tcMemString)
Return m.lnMemHandle
ENDPROC
PROCEDURE Init
This.ctlRegisterFunctions()
ENDPROC
PROCEDURE _struct_access
*To do: Modify this routine for the Access method
RETURN THIS._struct
ENDPROC
PROCEDURE _struct_assign
LPARAMETERS vNewVal
*To do: Modify this routine for the Assign method
THIS._struct = m.vNewVal
ENDPROC
ENDDEFINE
DEFINE CLASS _iconinfo AS _base OF "ctl32_structs.vcx"
*< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />
#INCLUDE "ctl32.h"
*<DefinedPropArrayMethod>
*p: _ficon
*p: _hbmcolor
*p: _hbmmask
*p: _xhotspot
*p: _yhotspot
*</DefinedPropArrayMethod>
*<PropValue>
Name = "_iconinfo"
_ficon = 0
_hbmcolor = 0
_hbmmask = 0
_structlen = 20
_xhotspot = 0
_yhotspot = 0
*</PropValue>
PROCEDURE Destroy
With This
If ._hbmcolor <> 0 Then
DeleteObject(._hbmcolor)
Endif
If ._hbmmask <> 0 Then
DeleteObject(._hbmmask)
Endif
Endwith
ENDPROC
PROCEDURE _struct_access
*!* ICONINFO {
*!* BOOL fIcon; 4
*!* DWORD xHotspot; 4
*!* DWORD yHotspot; 4
*!* HBITMAP hbmMask; 4
*!* HBITMAP hbmColor; 4
*!* ICONINFO; 20
With This
._Struct = ;
.ctlIntToStr(._fIcon) + ;
.ctlIntToStr(._xHotspot) + ;
.ctlIntToStr(._yHotspot) + ;
.ctlIntToStr(._hbmMask) + ;
.ctlIntToStr(._hbmColor)
Endwith
Return This._Struct
ENDPROC
PROCEDURE _struct_assign
*!* ICONINFO {
*!* BOOL fIcon; 4
*!* DWORD xHotspot; 4
*!* DWORD yHotspot; 4
*!* HBITMAP hbmMask; 4
*!* HBITMAP hbmColor; 4
*!* ICONINFO; 20
Lparameters vNewVal
This._Struct = m.vNewVal
With This
._fIcon = .ctlStrToInt(Substr(m.vNewVal, 1, 4))
._xHotspot = .ctlStrToInt(Substr(m.vNewVal, 5, 4))
._yHotspot = .ctlStrToInt(Substr(m.vNewVal, 9, 4))
._hbmMask = .ctlStrToInt(Substr(m.vNewVal, 13, 4))
._hbmColor = .ctlStrToInt(Substr(m.vNewVal, 17, 4))
Endwith
ENDPROC
ENDDEFINE
DEFINE CLASS _macros AS custom
*< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />
#INCLUDE "ctl32.h"
*<DefinedPropArrayMethod>
*m: _get_x_lparam
*m: _get_x_point
*m: _get_y_lparam
*m: _get_y_point
*m: _hibyte
*m: _hiword
*m: _lobyte
*m: _loword
*m: _makelangid
*m: _makelong
*m: _makelparam
*m: _makepoint
*m: _makeword
*m: _makewparam
*m: _primarylangid
*m: _sublangid
*</DefinedPropArrayMethod>
*<PropValue>
Name = "_macros"
Width = 17
*</PropValue>
PROCEDURE _get_x_lparam
*!* int GET_X_LPARAM(
*!* LPARAM lParam
*!* );
*!* Parameters
*!* lParam
*!* Specifies the value to be converted.
*!* Return Value
*!* The return value is the low-order int of the specified value.
Lparameters m.lParam As Integer
Return Bitand(m.lParam, 0xFFFF)
ENDPROC
PROCEDURE _get_x_point
*!* POINT
*!* The POINT structure defines the x- and y- coordinates of a point.
*!* typedef struct tagPOINT {
*!* LONG x;
*!* LONG y;
*!* } POINT, *PPOINT;
*!* Members
*!* x
*!* Specifies the x-coordinate of the point.
*!* y
*!* Specifies the y-coordinate of the point.
*!* This is not a Windows Macro
Lparameters tcPoint As String
Return CToBin(Substr(m.tcPoint, 1, 4), [4RS])
ENDPROC
PROCEDURE _get_y_lparam
*!* int GET_Y_LPARAM(
*!* LPARAM lParam
*!* );
*!* Parameters
*!* lParam
*!* Specifies the value to be converted.
*!* Return Value
*!* The return value is the high-order int of the specified value.
Lparameters m.lParam As Integer
Return Bitrshift(m.lParam, 16) && Bitand(Int(m.lParam / 0x10000), 0xFFFF)
ENDPROC
PROCEDURE _get_y_point
*!* POINT
*!* The POINT structure defines the x- and y- coordinates of a point.
*!* typedef struct tagPOINT {
*!* LONG x;
*!* LONG y;
*!* } POINT, *PPOINT;
*!* Members
*!* x
*!* Specifies the x-coordinate of the point.
*!* y
*!* Specifies the y-coordinate of the point.
*!* This is not a Windows Macro
Lparameters tcPoint As String
Return CToBin(Substr(m.tcPoint, 5, 4), [4RS])
ENDPROC
PROCEDURE _hibyte
*!* BYTE HIBYTE(
*!* Word wValue
*!* );
*!* Parameters
*!* wValue
*!* Specifies the Value To be converted.
*!* Return Value
*!* the Return Value Is the High-Order BYTE Of the specified Value.
Lparameters m.lParam As Integer
Return Bitrshift(m.lParam, 8) && Bitand(Int(m.lParam / 0x10000), 0xFFFF)
ENDPROC
PROCEDURE _hiword
*!* Word HIWORD(
*!* DWORD dwValue
*!* );
*!* Parameters
*!* dwValue
*!* Specifies the Value To be converted.
*!* Return Value
*!* the Return Value Is the High-Order Word Of the specified Value.
Lparameters m.lParam As Integer
Return Bitrshift(m.lParam, 16) && Bitand(Int(m.lParam / 0x10000), 0xFFFF)
ENDPROC
PROCEDURE _lobyte
*!* BYTE LOBYTE(
*!* Word wValue
*!* );
*!* Parameters
*!* wValue
*!* Specifies the Value To be converted.
*!* Return Value
*!* the Return Value Is the low-Order BYTE Of the specified Value.
Lparameters m.lParam As Integer
Return Bitand(m.lParam, 0xFF)
ENDPROC
PROCEDURE _loword
*!* Word LOWORD(
*!* DWORD dwValue
*!* );
*!* Parameters
*!* dwValue
*!* Specifies the Value To be converted.
*!* Return Value
*!* the Return Value Is the low-Order Word Of the specified Value.
Lparameters m.lParam As Integer
Return Bitand(m.lParam, 0xFFFF)
ENDPROC
PROCEDURE _makelangid
*!* WORD MAKELANGID(
*!* USHORT usPrimaryLanguage,
*!* USHORT usSubLanguage
*!* );
*!* Parameters
*!* usPrimaryLanguage
*!* Primary language identifier. This identifier can be a predefined value or
*!* a value for a user-defined primary language. For a user-defined language,
*!* the identifier is a value in the range 0x0200 to 0x03FF. All other values
*!* are reserved for operating system use. For more information, see Language
*!* Identifier Constants and Strings.
*!* usSubLanguage
*!* Sublanguage identifier. This parameter can be a predefined sublanguage
*!* identifier or a user-defined sublanguage. For a user-defined sublanguage,
*!* the identifier is a value in the range 0x20 to 0x3F. All other values are
*!* reserved for operating system use. For more information, see Language
*!* Identifier Constants and Strings.
*!* Return Values
*!* Returns the language identifier.
Lparameters m.usPrimaryLanguage As Short, m.usSubLanguage As Short
Return Bitor(m.usPrimaryLanguage, Bitlshift(m.usSubLanguage, 10))
ENDPROC
PROCEDURE _makelong
*!* DWORD MAKELONG(
*!* Word wLow,
*!* Word wHigh
*!* );
*!* Parameters
*!* wLow
*!* Specifies the low-Order Word Of the new Value.
*!* wHigh
*!* Specifies the High-Order Word Of the new Value.
*!* Return Value
*!* the Return Value Is a Long Value.
Lparameters m.wLow As Integer, m.wHigh As Integer
Return m.wLow + m.wHigh * 0x10000 && Bitor(m.wLow, BITLSHIFT(m.wHigh, 16)
ENDPROC
PROCEDURE _makelparam
*!* LPARAM MAKELPARAM(
*!* WORD wLow,
*!* WORD wHigh
*!* );
*!* Parameters
*!* wLow
*!* Specifies the low-order word of the new value.
*!* wHigh
*!* Specifies the high-order word of the new value.
*!* Return Value
*!* The return value is an LPARAM value.
Lparameters m.wLow As Integer, m.wHigh As Integer
Return m.wLow + m.wHigh * 0x10000 && Bitor(m.wLow, BITLSHIFT(m.wHigh, 16)
ENDPROC
PROCEDURE _makepoint
*!* POINT
*!* The POINT structure defines the x- and y- coordinates of a point.
*!* typedef struct tagPOINT {
*!* LONG x;
*!* LONG y;
*!* } POINT, *PPOINT;
*!* Members
*!* x
*!* Specifies the x-coordinate of the point.
*!* y
*!* Specifies the y-coordinate of the point.
*!* This is not a Windows Macro
Lparameters tnX as integer, tnY as integer
Return BinToC(m.tnX, [4RS]) + BinToC(m.tnY, [4RS])
ENDPROC
PROCEDURE _makeword
*!* Word MAKEWORD(
*!* BYTE bLow,
*!* BYTE bHigh
*!* );
*!* Parameters
*!* bLow
*!* Specifies the low-Order BYTE Of the new Value.
*!* bHigh
*!* Specifies the High-Order BYTE Of the new Value.
*!* Return Value
*!* the Return Value Is a Word Value.
Lparameters m.wLow As Integer, m.wHigh As Integer
Return m.wLow + m.wHigh * 0x100 && Bitor(m.wLow, BITLSHIFT(m.wHigh, 8)
ENDPROC
PROCEDURE _makewparam
*!* WPARAM MAKEWPARAM(
*!* Word wLow,
*!* Word wHigh
*!* );
*!* Parameters
*!* wLow
*!* Specifies the low-Order Word Of the new Value.
*!* wHigh
*!* Specifies the High-Order Word Of the new Value.
*!* Return Value
*!* the Return Value Is a WPARAM Value.
Lparameters m.wLow As Integer, m.wHigh As Integer
Return m.wLow + m.wHigh * 0x10000 && Bitor(m.wLow, BITLSHIFT(m.wHigh, 16)
ENDPROC
PROCEDURE _primarylangid
*!* WORD PRIMARYLANGID(
*!* WORD lgid
*!* );
*!* Parameters
*!* lgid
*!* Language identifier. This value is a combination of a primary language identifier
*!* and a sublanguage identifier and is usually created by using the MAKELANGID macro.
*!* Return Values
*!* Returns the primary language identifier. It can be one of the predefined primary
*!* language identifiers or a user-defined primary language identifier.
*!* For more information, see MAKELANGID.
Lparameters m.lgid As Integer
Return Bitand(m.lgid, 0x3ff)
ENDPROC
PROCEDURE _sublangid
*!* WORD SUBLANGID(
*!* WORD lgid
*!* );
*!* Parameters
*!* lgid
*!* Language identifier. You can supply predefined values for this parameter,
*!* or create an identifier using the MAKELANGID macro.
*!* Return Values
*!* Returns a sublanguage identifier. This can be a predefined sublanguage
*!* identifier or a user-defined sublanguage identifier.
Lparameters m.lgid as integer
Return Bitrshift(m.lgid, 10)
ENDPROC
ENDDEFINE
DEFINE CLASS _nmhdr AS _base OF "ctl32_structs.vcx"
*< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />
#INCLUDE "ctl32.h"
*<DefinedPropArrayMethod>
*p: _code
*p: _hwndfrom
*p: _idfrom
*</DefinedPropArrayMethod>
*<PropValue>
Name = "_nmhdr"
_code = 0
_hwndfrom = 0
_idfrom = 0
_structlen = 12
*</PropValue>
PROCEDURE _struct_access
*!* NMHDR
*!* HWND hwndFrom; 4
*!* UINT idFrom; 4
*!* UINT code; 4
*!* NMHDR; 12
With This
._Struct = ;
.ctlIntToStr(._hwndFrom) + ;
.ctlIntToStr(._idFrom) + ;
.ctlIntToStr(._Code)
Endwith
Return This._Struct
ENDPROC
PROCEDURE _struct_assign
*!* NMHDR
*!* HWND hwndFrom; 4
*!* UINT idFrom; 4
*!* UINT code; 4
*!* NMHDR; 12
LPARAMETERS vNewVal
THIS._Struct = m.vNewVal
With This
._hwndFrom = .ctlStrToInt(Substr(m.vNewVal, 1, 4))
._idFrom = .ctlStrToInt(Substr(m.vNewVal, 5, 4))
._code = .ctlStrToInt(Substr(m.vNewVal, 9, 4))
Endwith
ENDPROC
ENDDEFINE
DEFINE CLASS _nmmouse AS _base OF "ctl32_structs.vcx"
*< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />
#INCLUDE "ctl32.h"
*<DefinedPropArrayMethod>
*p: _code
*p: _dwhitinfo
*p: _dwitemdata
*p: _dwitemspec
*p: _hwndfrom
*p: _idfrom
*p: _x
*p: _y
*</DefinedPropArrayMethod>
*<PropValue>
Name = "_nmmouse"
_code = 0
_dwhitinfo = 0
_dwitemdata = 0
_dwitemspec = 0
_hwndfrom = 0
_idfrom = 0
_structlen = 32
_x = 0
_y = 0
*</PropValue>
PROCEDURE _struct_access
*!* NMMOUSE
*!* HWND hwndFrom; 4
*!* UINT idFrom; 4
*!* UINT code; 4
*!* DWORD_PTR dwItemSpec; 4
*!* DWORD_PTR dwItemData; 4
*!* LONG x; 4
*!* LONG y; 4
*!* LPARAM dwHitInfo; 4
*!* NMMOUSE 32
With This
._Struct = ;
.ctlIntToStr(._hwndFrom) + ;
.ctlIntToStr(._idFrom) + ;
.ctlIntToStr(._Code) + ;
.ctlIntToStr(._dwItemSpec) + ;
.ctlIntToStr(._dwItemData) + ;
.ctlIntToStr(._X) + ;
.ctlIntToStr(._Y) + ;
.ctlIntToStr(._dwHitInfo)
Endwith
Return This._Struct
ENDPROC
PROCEDURE _struct_assign
Lparameters vNewVal
*!* NMMOUSE
*!* HWND hwndFrom; 4
*!* UINT idFrom; 4
*!* UINT code; 4
*!* DWORD_PTR dwItemSpec; 4
*!* DWORD_PTR dwItemData; 4
*!* LONG x; 4
*!* LONG y; 4
*!* LPARAM dwHitInfo; 4
*!* NMMOUSE 32
This._struct = m.vNewVal
With This
._hwndFrom = .ctlStrToInt(Substr(m.vNewVal, 1, 4))
._idFrom = .ctlStrToInt(Substr(m.vNewVal, 5, 4), TRUE)
._code = .ctlStrToInt(Substr(m.vNewVal, 9, 4))
._dwItemSpec = .ctlStrToInt(Substr(m.vNewVal, 13, 4))
._dwItemData = .ctlStrToInt(Substr(m.vNewVal, 17, 4))
._x = .ctlStrToInt(Substr(m.vNewVal, 21, 4))
._y = .ctlStrToInt(Substr(m.vNewVal, 25, 4))
._dwHitInfo = .ctlStrToInt(Substr(m.vNewVal, 29, 4))
Endwith
ENDPROC
ENDDEFINE
DEFINE CLASS _nmttdispinfo AS _base OF "ctl32_structs.vcx"
*< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />
#INCLUDE "ctl32.h"
*<DefinedPropArrayMethod>
*p: _code
*p: _hbmp
*p: _hinst
*p: _hwndfrom
*p: _idfrom
*p: _lparam
*p: _lpsztext
*p: _lpsztextstring
*p: _sztext
*p: _uflags
*</DefinedPropArrayMethod>
*<PropValue>
Name = "_nmttdispinfo"
_code = 0
_hbmp = 0
_hinst = 0
_hwndfrom = 0
_idfrom = 0
_lparam = 0
_lpsztext = 0
_lpsztextstring =
_structlen = 108
_sztext =
_uflags = 0
*</PropValue>
PROCEDURE Destroy
If This._lpszText <> 0 Then
This.ctlFreeMemory(This._lpszText)
Endif
ENDPROC
PROCEDURE _struct_access
*!* NMTTDISPINFO {
*!* HWND hwndFrom; 4
*!* UINT idFrom; 4
*!* UINT code; 4
*!* LPTSTR lpszText; 4
*!* char szText[80]; 80
*!* HINSTANCE hinst; 4
*!* UINT uFlags; 4
*!* #if (_WIN32_IE >= 0x0300)
*!* LPARAM lParam; 4
*!* #endif
*!* #if (_WIN32_WINNT >= 0x0600)
*!* HBITMAP hbmp;
*!* #endif
*!* } NMTTDISPINFO, *LPNMTTDISPINFO;
If This._lpszText <> 0 Then
This.ctlFreeMemory(This._lpszText)
This._lpszText = 0
Endif
If Vartype(This._lpszTextString) <> T_CHARACTER Then
This._lpszTextString = []
Endif
This._lpszTextString = Alltrim(This._lpszTextString)
If Len(This._lpszTextString) = 0 Then
This._lpszText = 0
Else
If Right(This._lpszTextString, 1) <> Chr(0) Then
This._lpszTextString = This._lpszTextString + Chr(0)
Endif
This._lpszText = This.ctlWriteMemory(This._lpszTextString)
Endif
With This
._Struct = ;
.ctlIntToStr(._hwndFrom) + ;
.ctlIntToStr(._idFrom) + ;
.ctlIntToStr(._code) + ;
.ctlIntToStr(._lpszText) + ;
.Padr(_szText, 80) + ;
.ctlIntToStr(._hinst) + ;
.ctlIntToStr(._uFlags) + ;
.ctlIntToStr(._lParam)
Endwith
Return This._Struct
ENDPROC
PROCEDURE _struct_assign
*!* typedef struct tagNMHDR {
*!* HWND hwndFrom;
*!* UINT idFrom;
*!* UINT code;
*!* } NMHDR;
*!* typedef struct tagNMTTDISPINFO {
*!* NMHDR hdr;
*!* LPTSTR lpszText;
*!* char szText[80];
*!* HINSTANCE hinst;
*!* UINT uFlags;
*!* #if (_WIN32_IE >= 0x0300)
*!* LPARAM lParam;
*!* #endif
*!* #if (_WIN32_WINNT >= 0x0600)
*!* HBITMAP hbmp;
*!* #endif
*!* } NMTTDISPINFO, *LPNMTTDISPINFO;
LPARAMETERS vNewVal
THIS._struct = m.vNewVal
With This
._hwndFrom = .ctlStrToInt(Substr(m.vNewVal, 1, 4))
._idFrom = .ctlStrToInt(Substr(m.vNewVal, 5, 4), TRUE)
._code = .ctlStrToInt(Substr(m.vNewVal, 9, 4))
._lpszText = .ctlStrToInt(Substr(m.vNewVal, 13, 4))
._szText = Substr(m.vNewVal, 17, 80)
._hinst = .ctlStrToInt(Substr(m.vNewVal, 97, 4))
._uFlags = .ctlStrToInt(Substr(m.vNewVal, 101, 4), TRUE)
._lParam = .ctlStrToInt(Substr(m.vNewVal, 105, 4))
Endwith
ENDPROC
ENDDEFINE
DEFINE CLASS _rect AS _base OF "ctl32_structs.vcx"
*< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />
#INCLUDE "ctl32.h"
*<DefinedPropArrayMethod>
*p: _bottom
*p: _height
*p: _left
*p: _right
*p: _top
*p: _width
*</DefinedPropArrayMethod>
*<PropValue>
Name = "_rect"
_bottom = 0
_height = 0
_left = 0
_right = 0
_structlen = 16
_top = 0
_width = 0
*</PropValue>
PROCEDURE _struct_access
*!* RECT
*!* LONG left; 4
*!* LONG top; 4
*!* LONG right; 4
*!* LONG bottom; 4
*!* RECT; 16
With This
._Struct = ;
.ctlIntToStr(._Left) + ;
.ctlIntToStr(._Top) + ;
.ctlIntToStr(._Right) + ;
.ctlIntToStr(._Bottom)
Endwith
Return This._Struct
ENDPROC
PROCEDURE _struct_assign
*!* RECT
*!* LONG left; 4
*!* LONG top; 4
*!* LONG right; 4
*!* LONG bottom; 4
*!* RECT; 16
Lparameters vNewVal
This._Struct = m.vNewVal
With This
._Left = .ctlStrToInt(Substr(m.vNewVal, 1, 4))
._Top = .ctlStrToInt(Substr(m.vNewVal, 5, 4))
._Right = .ctlStrToInt(Substr(m.vNewVal, 9, 4))
._Bottom = .ctlStrToInt(Substr(m.vNewVal, 13, 4))
._Width = ._Right - ._Left
._Height = ._Bottom - ._Top
Endwith
ENDPROC
ENDDEFINE
DEFINE CLASS _scrollinfo AS _base OF "ctl32_structs.vcx"
*< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />
#INCLUDE "ctl32.h"
*<DefinedPropArrayMethod>
*p: _cbsize
*p: _fmask
*p: _nmax
*p: _nmin
*p: _npage
*p: _npos
*p: _ntrackpos
*</DefinedPropArrayMethod>
*<PropValue>
Name = "_scrollinfo"
_cbsize = 0
_fmask = 0
_nmax = 0
_nmin = 0
_npage = 0
_npos = 0
_ntrackpos = 0
_structlen = 28
*</PropValue>
PROCEDURE _struct_access
*!* typedef struct tagSCROLLINFO {
*!* UINT cbSize; 4
*!* UINT fMask; 4
*!* int nMin; 4
*!* int nMax; 4
*!* UINT nPage; 4
*!* int nPos; 4
*!* int nTrackPos; 4
*!* } SCROLLINFO, *LPSCROLLINFO; 28
*!* typedef SCROLLINFO CONST *LPCSCROLLINFO;
With This
._cbSize = 28
._Struct = ;
.ctlIntToStr(._cbSize) + ;
.ctlIntToStr(._fMask) + ;
.ctlIntToStr(._nMin) + ;
.ctlIntToStr(._nMax) + ;
.ctlIntToStr(._nPage) + ;
.ctlIntToStr(._nPos) + ;
.ctlIntToStr(._nTrackPos)
Endwith
Return This._Struct
ENDPROC
ENDDEFINE
DEFINE CLASS _tcitem AS _base OF "ctl32_structs.vcx"
*< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />
#INCLUDE "ctl32.h"
*<DefinedPropArrayMethod>
*p: _cchtextmax
*p: _dwstate
*p: _dwstatemask
*p: _iimage
*p: _lparam
*p: _lpsztext
*p: _lpsztextstring
*p: _mask
*</DefinedPropArrayMethod>
*<PropValue>
Name = "_tcitem"
_cchtextmax = 0
_dwstate = 0
_dwstatemask = 0
_iimage = 0
_lparam = 0
_lpsztext = 0
_lpsztextstring =
_mask = 0
_structlen = 28
*</PropValue>
PROCEDURE Destroy
If This._lpszText <> 0 Then
This.ctlFreeMemory(This._lpszText)
Endif
ENDPROC
PROCEDURE _struct_access
*!* http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/tab/structures/tcitem.asp
*!* typedef struct tagTCITEM {
*!* UINT mask; 4
*!* #if (_WIN32_IE >= 0x0300)
*!* DWORD dwState; 4
*!* DWORD dwStateMask; 4
*!* #else
*!* UINT lpReserved1;
*!* UINT lpReserved2;
*!* #endif
*!* LPTSTR pszText; 4
*!* int cchTextMax; 4
*!* int iImage; 4
*!* LPARAM lParam; 4
*!* } TCITEM, *LPTCITEM;
If This._lpszText <> 0 Then
This.ctlFreeMemory(This._lpszText)
This._lpszText = 0
Endif
If Vartype(This._lpszTextString) <> T_CHARACTER Then
This._lpszTextString = []
Endif
This._lpszTextString = Alltrim(This._lpszTextString)
If Len(This._lpszTextString) = 0 Then
This._lpszText = 0
Else
If Right(This._lpszTextString, 1) <> Chr(0) Then
This._lpszTextString = This._lpszTextString + Chr(0)
Endif
This._lpszText = This.ctlWriteMemory(This._lpszTextString)
Endif
This._cchTextMax = Len(This._lpszTextString)
With This
._Struct = ;
.ctlIntToStr(._mask) + ;
.ctlIntToStr(._dwState) + ;
.ctlIntToStr(._dwStateMask) + ;
.ctlIntToStr(._lpszText) + ;
.ctlIntToStr(._cchTextMax) + ;
.ctlIntToStr(._iImage) + ;
.ctlIntToStr(._lParam)
Endwith
Return This._Struct
ENDPROC
ENDDEFINE
DEFINE CLASS _toolinfo AS _base OF "ctl32_structs.vcx"
*< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" />
#INCLUDE "ctl32.h"
*<DefinedPropArrayMethod>
*p: uid
*p: _bottom
*p: _cbsize
*p: _hbitmap
*p: _hinst
*p: _hwnd
*p: _left
*p: _lparam
*p: _lpreserved
*p: _lpsztext
*p: _lpsztextstring
*p: _rect
*p: _right
*p: _top
*p: _uflags
*p: _uid
*</DefinedPropArrayMethod>
*<PropValue>
Name = "_toolinfo"
uid =
_bottom = 0
_cbsize = 0
_hbitmap = 0
_hinst = 0
_hwnd = 0
_left = 0
_lparam = 0
_lpreserved = 0
_lpsztext = 0
_lpsztextstring =
_rect = 0
_right = 0
_structlen = 0
_top = 0
_uflags = 0
_uid = 0
*</PropValue>
PROCEDURE Destroy
If This._lpszText <> 0 Then
This.ctlFreeMemory(This._lpszText)
Endif
ENDPROC
PROCEDURE Init
*!* http://windowssdk.msdn.microsoft.com/en-us/library/ms650460.aspx
*!* typedef struct tagTOOLINFO{
*!* UINT cbSize; 4
*!* UINT uFlags; 4
*!* HWND hwnd; 4
*!* UINT_PTR uId; 4
*!* LONG left; 4
*!* LONG top; 4
*!* LONG right; 4
*!* LONG bottom; 4
*!* HINSTANCE hinst; 4
*!* LPTSTR lpszText; 4
*!* #if (_WIN32_IE >= 0x0300)
*!* LPARAM lParam; 4
*!* #endif
*!* #if (_WIN32_WINNT >= 0x0501)
*!* void *lpReserved; 4
*!* #endif
*!* #if (_WIN32_WINNT >= 0x0600)
*!* HBITMAP hbmp; 4
*!* #endif
*!* } TOOLINFO, NEAR *PTOOLINFO, *LPTOOLINFO;
DoDefault()
This._cbSize = 44
If This.ctlOS() >= CON_OS_WINXP Then
This._cbSize = 48
Endif
*!* Vista 5600 does not work
*If Val(Os(3)) * 100 + Val(Os(4)) >= 600 Then
* This._cbSize = 52
*Endif
ENDPROC
PROCEDURE _struct_access
*!* http://windowssdk.msdn.microsoft.com/en-us/library/ms650460.aspx
*!* typedef struct tagTOOLINFO{
*!* UINT cbSize; 4
*!* UINT uFlags; 4
*!* HWND hwnd; 4
*!* UINT_PTR uId; 4
*!* LONG left; 4
*!* LONG top; 4
*!* LONG right; 4
*!* LONG bottom; 4
*!* HINSTANCE hinst; 4
*!* LPTSTR lpszText; 4
*!* #if (_WIN32_IE >= 0x0300)
*!* LPARAM lParam; 4
*!* #endif
*!* #if (_WIN32_WINNT >= 0x0501)
*!* void *lpReserved; 4
*!* #endif
*!* #if (_WIN32_WINNT >= 0x0600)
*!* HBITMAP hbmp; 4
*!* #endif
*!* } TOOLINFO, NEAR *PTOOLINFO, *LPTOOLINFO;
If This._lpszText <> 0 Then
This.ctlFreeMemory(This._lpszText)
This._lpszText = 0
Endif
If Vartype(This._lpszTextString) <> T_CHARACTER Then
This._lpszTextString = []
Endif
This._lpszTextString = Alltrim(This._lpszTextString)
If Len(This._lpszTextString) = 0 Then
This._lpszText = 0
Else
If Right(This._lpszTextString, 1) <> Chr(0) Then
This._lpszTextString = This._lpszTextString + Chr(0)
Endif
This._lpszText = This.ctlWriteMemory(This._lpszTextString)
Endif
*This._lpszText = This.ctlWriteMemory(This._lpszTextString)
With This
._Struct = ;
.ctlIntToStr(._cbSize) + ;
.ctlIntToStr(._uFlags) + ;
.ctlIntToStr(._hwnd) + ;
.ctlIntToStr(._uId) + ;
.ctlIntToStr(._left) + ;
.ctlIntToStr(._top) + ;
.ctlIntToStr(._right) + ;
.ctlIntToStr(._bottom) + ;
.ctlIntToStr(._hinst) + ;
.ctlIntToStr(._lpszText) + ;
.ctlIntToStr(._lParam)
If This.ctlOS() >= CON_OS_WINXP Then
._Struct = ._Struct + .ctlIntToStr(._lpReserved)
Endif
*!* Vista 5600 does not work
* If Val(Os(3)) * 100 + Val(Os(4)) >= 600 Then
* ._Struct = ._Struct + .ctlIntToStr(._hBitmap)
* Endif
Endwith
Return This._Struct
ENDPROC
PROCEDURE _struct_assign
*!* http://windowssdk.msdn.microsoft.com/en-us/library/ms650460.aspx
*!* typedef struct tagTOOLINFO{
*!* UINT cbSize; 4
*!* UINT uFlags; 4
*!* HWND hwnd; 4
*!* UINT_PTR uId; 4
*!* LONG left; 4
*!* LONG top; 4
*!* LONG right; 4
*!* LONG bottom; 4
*!* HINSTANCE hinst; 4
*!* LPTSTR lpszText; 4
*!* #if (_WIN32_IE >= 0x0300)
*!* LPARAM lParam; 4
*!* #endif
*!* #if (_WIN32_WINNT >= 0x0501)
*!* void *lpReserved; 4
*!* #endif
*!* #if (_WIN32_WINNT >= 0x0600)
*!* HBITMAP hbmp; 4
*!* #endif
*!* } TOOLINFO, NEAR *PTOOLINFO, *LPTOOLINFO;
Lparameters vNewVal
This._struct = m.vNewVal
With This
._cbSize = .ctlStrToInt(Substr(m.vNewVal, 1, 4))
._uFlags = .ctlStrToInt(Substr(m.vNewVal, 5, 4))
._hwnd = .ctlStrToInt(Substr(m.vNewVal, 9, 4))
._uId = .ctlStrToInt(Substr(m.vNewVal, 13, 4))
._left = .ctlStrToInt(Substr(m.vNewVal, 17, 4))
._top = .ctlStrToInt(Substr(m.vNewVal, 21, 4))
._right = .ctlStrToInt(Substr(m.vNewVal, 25, 4))
._bottom = .ctlStrToInt(Substr(m.vNewVal, 29, 4))
._hinst = .ctlStrToInt(Substr(m.vNewVal, 33, 4))
._lpszText = .ctlStrToInt(Substr(m.vNewVal, 37, 4))
._lParam = .ctlStrToInt(Substr(m.vNewVal, 41, 4))
If This.ctlOS() >= CON_OS_WINXP Then
._lpReserved = .ctlStrToInt(Substr(m.vNewVal, 45, 4))
Endif
*!* Vista 5600 does not work
* If Val(Os(3)) * 100 + Val(Os(4)) >= 600 Then
* ._hBitmap = .ctlStrToInt(Substr(m.vNewVal, 49, 4))
* Endif
Endwith
ENDPROC
ENDDEFINE