Login
`
Templates, Tools and Utilities
|
||
Icetips Article
Back to article list
Search Articles
Add Comment
Printer friendly
Direct link
Windows API: Creating unicode strings 2004-03-17 -- Menno De Ruiter Newsgroups: softvelocity.public.clarion6
What you also can do is subclassing the window and write it by Api to the
device context of a window which is more for writing chinese in the unicode (like character 50392) and so
on ...
The unicode should be in a String.. NOT a Cstring in this case due the fact
the chr(0) is used to delimiter the character and thus if it's a cstring it
will not work in case of above char(255).. the unicode byte pairs you
calculate with something like..:
MakeBitS16 PROCEDURE(ULONG GivenValue)
ReturnString STRING(16)
code
ReturnString = '0000000000000000'
If BAND(GivenValue,1000000000000000b) > 0 then ReturnString[1] = '1'.
If BAND(GivenValue,0100000000000000b) > 0 then ReturnString[2] = '1'.
If BAND(GivenValue,0010000000000000b) > 0 then ReturnString[3] = '1'.
If BAND(GivenValue,0001000000000000b) > 0 then ReturnString[4] = '1'.
If BAND(GivenValue,0000100000000000b) > 0 then ReturnString[5] = '1'.
If BAND(GivenValue,0000010000000000b) > 0 then ReturnString[6] = '1'.
If BAND(GivenValue,0000001000000000b) > 0 then ReturnString[7] = '1'.
If BAND(GivenValue,0000000100000000b) > 0 then ReturnString[8] = '1'.
If BAND(GivenValue,0000000010000000b) > 0 then ReturnString[9] = '1'.
If BAND(GivenValue,0000000001000000b) > 0 then ReturnString[10] = '1'.
If BAND(GivenValue,0000000000100000b) > 0 then ReturnString[11] = '1'.
If BAND(GivenValue,0000000000010000b) > 0 then ReturnString[12] = '1'.
If BAND(GivenValue,0000000000001000b) > 0 then ReturnString[13] = '1'.
If BAND(GivenValue,0000000000000100b) > 0 then ReturnString[14] = '1'.
If BAND(GivenValue,0000000000000010b) > 0 then ReturnString[15] = '1'.
If BAND(GivenValue,0000000000000001b) > 0 then ReturnString[16] = '1'.
RETURN(ReturnString)
Yhis is what I wrote, but I used winevent from Capesoft for subclassing.
The window:
UnicodeWindow WINDOW,AT(,,211,26),|
FONT('Arial Unicode MS',8,COLOR:Black,FONT:regular,CHARSET:ANSI),|
COLOR(COLOR:White), |
TIMER(1),NOFRAME,MDI
END
On window open event:
UNICODEWINDOW{Prop:Pixels} = 1
Timer event : (at least I chained it with a some other global variable with
the unicode in it..)
Tijd = Clock()
UNICODEWINDOW{Prop:XPos} = DT_ImageXPOS + 8
UNICODEWINDOW{Prop:YPos} = DT_ImageYPOS + 4
UNICODEWINDOW{Prop:Width} = DT_ImageWidth - 16
UNICODEWINDOW{Prop:Height} = DT_ImageHeight - 8
If Clip(CurrentUniInBytes) <> Clip(CurrentUnitextLocal)
CurrentUnitextLocal = Clip(CurrentUniInBytes)
Do PaintFF_R
!Post(Event:Paint)
End
Catching the WM_PAINT on WinAlert Message Processing from winevent template
(capesoft)
Case winevent()
Of WM_PAINT
Do PaintFF_R
end
The painting on the screen routine :
PaintFF_R routine
!winmesevent = WinParam1()
winmesevent = winevent()
Keer = Keer + 1
wHandle = UnicodeWindow{Prop:Handle}
hWDC = GetWindowDC(wHandle)
CurrentUniTextLocal = Left(CurrentUniTextLocal)
XLF:lfHeight = TextHeight
XLF:lfWidth = TextWidth
XLF:lfEscapement = 0
XLF:lfOrientation = 0
XLF:lfWeight = TextWeight
XLF:lfItalic = 0
XLF:lfUnderline = 0
XLF:lfStrikeOut = 0
XLF:lfCharSet = 0
XLF:lfOutPrecision = TextOutPercision
XLF:lfClipPrecision = 0
XLF:lfQuality = 2
XLF:lfPitchAndFamily = 2
XLF:lfFaceName = 'Arial Unicode MS' !& Chr(0)
logbrush.lpstyle = bs_solid
logbrush.lpcolor = color:white
logbrush.lpdummy = 0
hbrush = createbrushIndirect(address(logbrush))
If hbrush
holdbrush = selectobject(hWDC,hbrush)
end
Rectangle(hWDC,1,1,UNICODEWINDOW{Prop:Width},UNICODEWINDOW{Prop:Height})
SetBkMode(hWDC,color:white)
SetTextColor(hWDC,color:black)
hfontD = CreateFontIndirectA(Address(XLOGFONT))
holdfont# = selectobject(hWDC,hfontD)
Textout(hWDC,5,5,Address(CurrentUniTextLocal),CurrentUniLength)
If holdbrush
hbrush = selectobject(hWDC,holdbrush)
If hbrush
deleteobject(hbrush)
End
End
If holdfont#
hfont# = selectobject(hWDC,holdfont#)
deleteobject(hfontD)
End
ReleaseDC(wHandle,hWDC)
And forgot the local data to paste :
The local data :
[SCREENCONTROLS]
! PROMPT('Tijd:'),USE(?Tijd:Prompt)
! STRING(@T4_),USE(Tijd)
[REPORTCONTROLS]
! STRING(@T4_),USE(Tijd)
Tijd TIME
!!> IDENT(4294966849),PROMPT('Tijd:'),HEADER('Tijd'),PICTURE(@T4_)
[SCREENCONTROLS]
! PROMPT('Current Unitext Local:'),USE(?CurrentUnitextLocal:Prompt)
! ENTRY(@s200),USE(CurrentUnitextLocal)
[REPORTCONTROLS]
! STRING(@s200),USE(CurrentUnitextLocal)
CurrentUnitextLocal STRING(200)
!!> IDENT(4294966848),PROMPT('Current Unitext Local:'),HEADER('Current
Unitext Local'),PICTURE(@s200)
[SCREENCONTROLS]
! PROMPT('Paints:'),USE(?Paints:Prompt)
! ENTRY(@n13),USE(Paints)
[REPORTCONTROLS]
! STRING(@n13),USE(Paints)
Paints ULONG
!!> IDENT(4294966847),PROMPT('Paints:'),HEADER('Paints'),PICTURE(@n13)
[SCREENCONTROLS]
! PROMPT('Keer:'),USE(?Keer:Prompt)
! STRING(@n-14),USE(Keer),RIGHT(1)
[REPORTCONTROLS]
! STRING(@n-14),USE(Keer),RIGHT(1)
Keer LONG
!!>
IDENT(4294966846),PROMPT('Keer:'),HEADER('Keer'),PICTURE(@n-14),JUSTIFY(RIGH
T,1)
[SCREENCONTROLS]
! PROMPT('winmesevent:'),USE(?winmesevent:Prompt)
! STRING(@s19),USE(winmesevent)
[REPORTCONTROLS]
! STRING(@s19),USE(winmesevent)
winmesevent CSTRING(20)
!!>
IDENT(4294966845),PROMPT('winmesevent:'),HEADER('winmesevent'),PICTURE(@s19)
[SCREENCONTROLS]
! PROMPT('w Handle:'),USE(?wHandle:Prompt)
! STRING(@n-14),USE(wHandle)
[REPORTCONTROLS]
! STRING(@n-14),USE(wHandle)
wHandle LONG
!!> IDENT(4294966844),PROMPT('w Handle:'),HEADER('w Handle'),PICTURE(@n-14)
[SCREENCONTROLS]
! PROMPT('h WDC:'),USE(?hWDC:Prompt)
! STRING(@n-14),USE(hWDC)
[REPORTCONTROLS]
! STRING(@n-14),USE(hWDC)
hWDC LONG
!!> IDENT(4294966843),PROMPT('h WDC:'),HEADER('h WDC'),PICTURE(@n-14)
[SCREENCONTROLS]
! ENTRY(@s12),USE(logbrush)
[REPORTCONTROLS]
! STRING(@s12),USE(logbrush)
logbrush GROUP,PRE()
!!> IDENT(4294966842),PROMPT('logbrush:'),HEADER('logbrush'),PICTURE(@s12)
[SCREENCONTROLS]
! ENTRY(@n-14),USE(lpstyle)
[REPORTCONTROLS]
! STRING(@n-14),USE(lpstyle)
lpstyle LONG
!!> IDENT(4294966841),PROMPT('lpstyle:'),HEADER('lpstyle'),PICTURE(@n-14)
[SCREENCONTROLS]
! ENTRY(@n-14),USE(lpcolor)
[REPORTCONTROLS]
! STRING(@n-14),USE(lpcolor)
lpcolor LONG
!!> IDENT(4294966840),PROMPT('lpcolor:'),HEADER('lpcolor'),PICTURE(@n-14)
[SCREENCONTROLS]
! ENTRY(@n-14),USE(lpdummy)
[REPORTCONTROLS]
! STRING(@n-14),USE(lpdummy)
lpdummy LONG
!!> IDENT(4294966839),PROMPT('lpdummy:'),HEADER('lpdummy'),PICTURE(@n-14)
END
!!> IDENT(4294966838)
[SCREENCONTROLS]
! ENTRY(@n-14),USE(holdbrush)
[REPORTCONTROLS]
! STRING(@n-14),USE(holdbrush)
holdbrush LONG
!!>
IDENT(4294966837),PROMPT('holdbrush:'),HEADER('holdbrush'),PICTURE(@n-14)
[SCREENCONTROLS]
! ENTRY(@n-14),USE(hbrush)
[REPORTCONTROLS]
! STRING(@n-14),USE(hbrush)
hbrush LONG
!!> IDENT(4294966836),PROMPT('hbrush:'),HEADER('hbrush'),PICTURE(@n-14)
[SCREENCONTROLS]
! ENTRY(@s58),USE(XLOGFONT)
[REPORTCONTROLS]
! STRING(@s58),USE(XLOGFONT)
XLOGFONT GROUP,PRE(XLF)
!!> IDENT(4294966835),PROMPT('XLOGFONT:'),HEADER('XLOGFONT'),PICTURE(@s58)
[SCREENCONTROLS]
! ENTRY(@n-14),USE(XLF:lfHeight)
[REPORTCONTROLS]
! STRING(@n-14),USE(XLF:lfHeight)
lfHeight LONG
!!> IDENT(4294966834),PICTURE(@n-14)
[SCREENCONTROLS]
! ENTRY(@n-14),USE(XLF:lfWidth)
[REPORTCONTROLS]
! STRING(@n-14),USE(XLF:lfWidth)
lfWidth LONG
!!> IDENT(4294966833),PICTURE(@n-14)
[SCREENCONTROLS]
! ENTRY(@n-14),USE(XLF:lfEscapement)
[REPORTCONTROLS]
! STRING(@n-14),USE(XLF:lfEscapement)
lfEscapement LONG
!!> IDENT(4294966832),PICTURE(@n-14)
[SCREENCONTROLS]
! ENTRY(@n-14),USE(XLF:lfOrientation)
[REPORTCONTROLS]
! STRING(@n-14),USE(XLF:lfOrientation)
lfOrientation LONG
!!> IDENT(4294966831),PICTURE(@n-14)
[SCREENCONTROLS]
! ENTRY(@n-14),USE(XLF:lfWeight)
[REPORTCONTROLS]
! STRING(@n-14),USE(XLF:lfWeight)
lfWeight LONG
!!> IDENT(4294966830),PICTURE(@n-14)
[SCREENCONTROLS]
! ENTRY(@n3),USE(XLF:lfItalic)
[REPORTCONTROLS]
! STRING(@n3),USE(XLF:lfItalic)
lfItalic BYTE
!!> IDENT(4294966829),PICTURE(@n3)
[SCREENCONTROLS]
! ENTRY(@n3),USE(XLF:lfUnderline)
[REPORTCONTROLS]
! STRING(@n3),USE(XLF:lfUnderline)
lfUnderline BYTE
!!> IDENT(4294966828),PICTURE(@n3)
[SCREENCONTROLS]
! ENTRY(@n3),USE(XLF:lfStrikeOut)
[REPORTCONTROLS]
! STRING(@n3),USE(XLF:lfStrikeOut)
lfStrikeOut BYTE
!!> IDENT(4294966827),PICTURE(@n3)
[SCREENCONTROLS]
! ENTRY(@n3),USE(XLF:lfCharSet)
[REPORTCONTROLS]
! STRING(@n3),USE(XLF:lfCharSet)
lfCharSet BYTE
!!> IDENT(4294966826),PICTURE(@n3)
[SCREENCONTROLS]
! ENTRY(@n3),USE(XLF:lfOutPrecision)
[REPORTCONTROLS]
! STRING(@n3),USE(XLF:lfOutPrecision)
lfOutPrecision BYTE
!!> IDENT(4294966825),PICTURE(@n3)
[SCREENCONTROLS]
! ENTRY(@n3),USE(XLF:lfClipPrecision)
[REPORTCONTROLS]
! STRING(@n3),USE(XLF:lfClipPrecision)
lfClipPrecision BYTE
!!> IDENT(4294966824),PICTURE(@n3)
[SCREENCONTROLS]
! ENTRY(@n3),USE(XLF:lfQuality)
[REPORTCONTROLS]
! STRING(@n3),USE(XLF:lfQuality)
lfQuality BYTE
!!> IDENT(4294966823),PICTURE(@n3)
[SCREENCONTROLS]
! ENTRY(@n3),USE(XLF:lfPitchAndFamily)
[REPORTCONTROLS]
! STRING(@n3),USE(XLF:lfPitchAndFamily)
lfPitchAndFamily BYTE
!!> IDENT(4294966822),PICTURE(@n3)
[SCREENCONTROLS]
! ENTRY(@s29),USE(XLF:lfFaceName)
[REPORTCONTROLS]
! STRING(@s29),USE(XLF:lfFaceName)
lfFaceName CSTRING(30)
!!> IDENT(4294966821),PICTURE(@s29)
END
!!> IDENT(4294966820)
[SCREENCONTROLS]
! ENTRY(@s64),USE(TheUniText)
[REPORTCONTROLS]
! STRING(@s64),USE(TheUniText)
TheUniText STRING(64)
!!> IDENT(4294966819),PROMPT('The Uni Text:'),HEADER('The Uni
Text'),PICTURE(@s64)
[SCREENCONTROLS]
! ENTRY(@s64),USE(TheUniTextW)
[REPORTCONTROLS]
! STRING(@s64),USE(TheUniTextW)
TheUniTextW STRING(64)
!!> IDENT(4294966818),PROMPT('The Uni Text W:'),HEADER('The Uni Text
W'),PICTURE(@s64)
[SCREENCONTROLS]
! ENTRY(@s31),USE(TypeFace)
[REPORTCONTROLS]
! STRING(@s31),USE(TypeFace)
TypeFace CSTRING(32)
!!> IDENT(4294966817),PROMPT('Type Face:'),HEADER('Type Face'),PICTURE(@s31)
[SCREENCONTROLS]
! ENTRY(@s99),USE(GetTextFaceOutput)
[REPORTCONTROLS]
! STRING(@s99),USE(GetTextFaceOutput)
GetTextFaceOutput CSTRING(100)
!!> IDENT(4294966816),PROMPT('Get Text Face Output:'),HEADER('Get Text Face
Output'),PICTURE(@s99)
[SCREENCONTROLS]
! ENTRY(@n-7),USE(TheUniDimText)
[REPORTCONTROLS]
! STRING(@n-7),USE(TheUniDimText)
TheUniDimText SHORT
!!> IDENT(4294966815),PROMPT('The Uni Dim Text:'),HEADER('The Uni Dim
Text'),PICTURE(@n-7)
The API stuff
Module('win32.lib')
rectangle(long,long,long,long,long),long,pascal,name('rectangle'),proc
TextOut(long, long, long,long,long),long,PASCAL,RAW,NAME('TextOutW'),proc
createbrushindirect(long),long,pascal,raw,name('createbrushindirect'),proc
setbkmode(long,long),long,raw,pascal,name('setbkmode'),proc
setTextAlign(long,long),long,raw,pascal,name('settextalign'),proc
settextcolor(long,long),long,raw,pascal,name('settextcolor'),proc
GetDeviceCaps(LONG, SIGNED),SIGNED,PASCAL
GetDesktopWindow(),LONG,PASCAL
DeleteObject(LONG),LONG,PASCAL,proc
SelectObject(LONG, LONG),LONG,PASCAL,proc
ReleaseDC(LONG, LONG),SIGNED,PASCAL,Proc
GetDC(LONG),LONG,PASCAL
CreateFontA( SIGNED, SIGNED, SIGNED, SIGNED, SIGNED, long,LONG, LONG,|
LONG, LONG, LONG,LONG, LONG, long),long,PASCAL,RAW
CreateFontIndirectA(long),long,PASCAL,RAW
MultiByteToWideChar(UNSIGNED,long,long,SIGNED,long,SIGNED),SIGNED,PASCAL,RAW
memcpy(long,long,signed),long,proc,name('_Memcpy')
lstrlenW(long lpWString),signed,proc,pascal
widecharToMultibyte(ulong,ulong,Long,long,long,Long,long,long),bool,pascal,raw,proc
SysFreeString(long),long,pascal,proc
SysAllocString(long lpwstr),long,pascal
GetTextFace(long, SIGNED, long),SIGNED,PASCAL,RAW,NAME('GetTextFaceA')
EnumFontFamiliesEx(UNSIGNED hdc, | handle to DC
*LOGFONT lpLogfont, | font information
*EnumFontFamExProc lpEnumFontFamExProc, | callback function
LONG lParam, | additional data to pass to callback
LONG dwFlags=0 | not used; must be 0
),SIGNED,PROC,PASCAL,RAW,NAME('EnumFontFamiliesExA')
MoveMemory(*? pDest, UNSIGNED pSrc, UNSIGNED BytesToCopy),PASCAL,RAW,NAME('RtlMoveMemory')
ZeroMemory(*? pBlock, UNSIGNED SizeBlock),PASCAL,RAW,NAME('RtlZeroMemory')
GetWindowRect(long, *RECT),BOOL,PASCAL,RAW
SetWindowRgn(long,long,BOOL),SIGNED,PASCAL
DrawCaption(long,long,long,long),long,pascal
SetWindowLong(UNSIGNED,SIGNED,LONG),LONG,PASCAL,NAME('SetWindowLongA')
GetWindowLong(LONG,SIGNED),LONG,PASCAL,NAME('GetWindowLongA')
CallWindowProc(LONG,UNSIGNED,UNSIGNED,UNSIGNED,LONG),LONG,PASCAL,NAME('CallWindowProcA')
SetWindowPos(UNSIGNED,UNSIGNED,SHORT,SHORT,SHORT,SHORT,USHORT),SHORT,PASCAL
SetWindowText(LONG,Long),BOOL,PASCAL,NAME('SetWindowTextA')
SetLastError(Byte),PASCAL
!CreatePolygonRgn(*POINT, SIGNED, SIGNED),HRGN,PASCAL,RAW
CombineRgn(HRGN, HRGN, HRGN, SIGNED),SIGNED,PASCAL
! Combines two regions and stores the result in a third region.
CreateEllipticRgn( SIGNED, SIGNED, SIGNED, SIGNED),LONG,PASCAL
! Creates an elliptical region.
CreateEllipticRgnIndirect(*RECT),long,PASCAL,RAW
! Creates an elliptical region.
CreatePolygonRgn(long, SIGNED, SIGNED),long,PASCAL,RAW
! Creates a polygonal region.
CreatePolyPolygonRgn(*POINT, *SIGNED, SIGNED,SIGNED),long,PASCAL,RAW
! Creates a region consisting of a series of polygons.
CreateRectRgn(SIGNED, SIGNED, SIGNED, SIGNED),long,PASCAL
! Creates a rectangular region.
CreateRectRgnIndirect(*RECT),long,PASCAL,RAW
! Creates a rectangular region with rounded corners.
CreateRoundRectRgn( SIGNED, SIGNED, SIGNED, SIGNED, SIGNED, SIGNED),long,PASCAL
! Creates a rectangular region with rounded corners.
EqualRgn(HRGN, HRGN),BOOL,PASCAL
! Checks the two specified regions to determine whether they are identical.
ExtCreateRegion(*XFORM, DWORD,*RGNDATA),long,PASCAL,RAW
! Creates a region from the specified region and transformation data.
FillRgn(HDC, HRGN, HBRUSH),BOOL,PASCAL
! Fills a region by using the specified brush.
FrameRgn(HDC, HRGN, HBRUSH, SIGNED, SIGNED),BOOL,PASCAL
! Draws a border around the specified region by using the specified brush.
GetPolyFillMode(HDC),SIGNED,PASCAL
! Retrieves the current polygon fill mode.
GetRegionData(HRGN, DWORD, *RGNDATA),long,PASCAL,RAW
! Fills the specified buffer with data describing a region.
GetRgnBox(HRGN, *RECT),SIGNED,PASCAL,RAW
! Retrieves the bounding rectangle of the specified region.
InvertRgn(HDC, HRGN),BOOL,PASCAL
! Inverts the colors in the specified region.
OffsetRgn(HRGN, SIGNED, SIGNED),SIGNED,PASCAL
! Moves a region by the specified offsets.
PaintRgn(HDC, HRGN),BOOL,PASCAL
! Paints the specified region by using the brush currently selected into the device context.
PtInRegion(HRGN, SIGNED, SIGNED),BOOL,PASCAL
! Determines whether the specified point is inside the specified region.
RectInRegion(HRGN, *RECT),BOOL,PASCAL,RAW
! Determines whether any part of the specified rectangle is within the boundaries of a region.
SetPolyFillMode(HDC, SIGNED),SIGNED,PASCAL
! Sets the polygon fill mode for functions that fill polygons.
SetRectRgn(HRGN, SIGNED, SIGNED, SIGNED, SIGNED),BOOL,PASCAL
! Converts a region into a rectangular region with the specified coordinates.
MonitorFromRectA(unsigned,unsigned),long,PASCAL,raw,name('MonitorFromRect')
MonitorFromWindow(long,long),long,pascal
SetClassLong(LONG,SIGNED,LONG),LONG,PASCAL,NAME('SetClassLongA')
GetClassLong(LONG,SIGNED),LONG,PASCAL,NAME('GetClassLongA')
SetForegroundWindow(long), BOOL, PASCAL
GetClassName(LONG,LONG,SIGNED),SIGNED,PASCAL,RAW,NAME('GetClassNameA')
CreateWindowEx(LONG,LONG,LONG, LONG, SIGNED, SIGNED, SIGNED, SIGNED, |
LONG, LONG, LONG, LONG), LONG, PASCAL, RAW, name('CreateWindowExA')
SendMessage(LONG,UNSIGNED,LONG,LONG),LONG,PASCAL,NAME('SendMessageA')
InitCommonControls(), PASCAL, NAME('InitCommonControls')
DefWindowProc(LONG,UNSIGNED,LONG,LONG),LONG,PASCAL,NAME('DefWindowProcA')
RegisterClass(LONG),long,pascal,raw,name('RegisterClassA')
RegisterClassEx(LONG),long,pascal,raw,name('RegisterClassExA')
UnRegisterClass(Long, LONG),bool,raw,pascal,name('UnRegisterClassA')
GetClassInfo(Long, Long , Long),bool,raw,pascal,name('GetClassInfoA')
GetClassInfoEx(Long, Long , Long),bool,raw,pascal,name('GetClassInfoExA')
LoadCursor(Long, long ),long,pascal,name('LoadCursorA')
ShowCursor(bool),long,pascal
_SetCursor(long),long,name('SetCursor')
SetCursorPos(signed , signed ),bool,pascal,proc
GetCursorPos(Long),bool,raw,pascal,proc
GetLastError(),long,pascal
SizeofResource(LONG, LONG),long,PASCAL
FindResourceA(LONG,LONG,LONG),LONG,PASCAL,RAW,NAME('FindResourceA')
ShowWindow(long,long),long,pascal,raw,name('ShowWindow')
SetActiveWindow(long),long,pascal,raw,name('SetActiveWindow')
GetActiveWindow(),long,pascal,raw,name('GetActiveWindow')
GetVersion,RAW,PASCAL,USHORT
! Gets version info
SystemParametersInfo(UNSIGNED,UNSIGNED,LONG,UNSIGNED),BOOL,PASCAL,RAW,NAME('SystemParametersInfoA')
GetWindowDC(long),long,pascal,raw,name('GetWindowDC')
GetTextExtentPoint32A(LONG,LONG, SIGNED, LONG),BOOL,PASCAL,RAW
mouse_event(long,long,long,long,long),PASCAL
GetSystemMetrics(SHORT),RAW,PASCAL,SHORT ! Gets info on devices
End
And the GLOBAL DATA :
hfontd LONG,STATIC
bs_solid EQUATE(0)
!transparent equate(1)
opague EQUATE(2)
translucent EQUATE(3)
CurrentChar ULONG
Char ULONG,DIM(256)
!ANSI_CHARSET EQUATE(0)
!DEFAULT_CHARSET EQUATE(1)
!SYMBOL_CHARSET EQUATE(2)
!SHIFTJIS_CHARSET EQUATE(128)
!HANGEUL_CHARSET EQUATE(129)
!HANGUL_CHARSET EQUATE(129)
!GB2312_CHARSET EQUATE(134)
!CHINESEBIG5_CHARSET EQUATE(136)
!OEM_CHARSET EQUATE(255)
!
!JOHAB_CHARSET EQUATE(130)
!HEBREW_CHARSET EQUATE(177)
!ARABIC_CHARSET EQUATE(178)
!GREEK_CHARSET EQUATE(161)
!TURKISH_CHARSET EQUATE(162)
!VIETNAMESE_CHARSET EQUATE(163)
!THAI_CHARSET EQUATE(222)
!EASTEUROPE_CHARSET EQUATE(238)
!RUSSIAN_CHARSET EQUATE(204)
!
!MAC_CHARSET EQUATE(77)
!BALTIC_CHARSET EQUATE(186)
!
!!/* EnumFonts Masks */
!RASTER_FONTTYPE EQUATE(1h)
!DEVICE_FONTTYPE EQUATE(2h)
!TRUETYPE_FONTTYPE EQUATE(4h)
LOGFONT GROUP,TYPE
lfHeight LONG
lfWidth LONG
lfEscapement LONG
lfOrientation LONG
lfWeight LONG
lfItalic BYTE
lfUnderline BYTE
lfStrikeOut BYTE
lfCharSet BYTE
lfOutPrecision BYTE
lfClipPrecision BYTE
lfQuality BYTE
lfPitchAndFamily BYTE
lfFaceName CSTRING(32)
END
ENUMLOGFONTEX GROUP,TYPE
elfLogFont LIKE(LOGFONT)
elfFullName CSTRING(64)
elfStyle CSTRING(32)
elfScript CSTRING(32)
END
TEXTMETRIC GROUP,TYPE
tmHeight LONG
tmAscent LONG
tmDescent LONG
tmInternalLeading LONG
tmExternalLeading LONG
tmAveCharWidth LONG
tmMaxCharWidth LONG
tmWeight LONG
tmOverhang LONG
tmDigitizedAspectX LONG
tmDigitizedAspectY LONG
tmFirstChar BYTE
tmLastChar BYTE
tmDefaultChar BYTE
tmBreakChar BYTE
tmItalic BYTE
tmUnderlined BYTE
tmStruckOut BYTE
tmPitchAndFamily BYTE
tmCharSet BYTE
END
NEWTEXTMETRIC GROUP(TEXTMETRIC),TYPE
ntmFlags ULONG
ntmSizeEM UNSIGNED
ntmCellHeight UNSIGNED
ntmAvgWidth UNSIGNED
END
FONTSIGNATURE GROUP,TYPE
fsUsb ULONG,DIM(4)
fsCsb ULONG,DIM(2)
END
NEWTEXTMETRICEX GROUP,TYPE
ntmTm LIKE(NEWTEXTMETRIC)
ntmFontSig LIKE(FONTSIGNATURE)
END
FONTSQTYPE QUEUE,TYPE
FaceName CSTRING(32)
elfex LIKE(ENUMLOGFONTEX)
tm LIKE(TEXTMETRIC)
END
Sync BYTE
CurrentUniLength ULONG
Do_BuildFolderList_R BYTE
hexMask STRING(16)
Today is November 21, 2024, 3:54 am This article has been viewed 35350 times. Google search has resulted in 236 hits on this article since January 25, 2004.
|
|