` Creating unicode strings (Menno De Ruiter) - Icetips Article
Icetips - Templates, Tools & Utilities for Clarion Developers

Templates, Tools and Utilities
for Clarion Developers

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.



Back to article list   Search Articles   Add Comment   Printer friendly

Login

User Name:

Password: