آموزش توابع API ویندوز گروه: Fonts
منبع: انجمن تخصصی برنامه نویسان ایران
'used with fnWeight
Const FW_DONTCARE = 0
Const FW_THIN = 100
Const FW_EXTRALIGHT = 200
Const FW_LIGHT = 300
Const FW_NORMAL = 400
Const FW_MEDIUM = 500
Const FW_SEMIBOLD = 600
Const FW_BOLD = 700
Const FW_EXTRABOLD = 800
Const FW_HEAVY = 900
Const FW_BLACK = FW_HEAVY
Const FW_DEMIBOLD = FW_SEMIBOLD
Const FW_REGULAR = FW_NORMAL
Const FW_ULTRABOLD = FW_EXTRABOLD
Const FW_ULTRALIGHT = FW_EXTRALIGHT
'used with fdwCharSet
Const ANSI_CHARSET = 0
Const DEFAULT_CHARSET = 1
Const SYMBOL_CHARSET = 2
Const SHIFTJIS_CHARSET = 128
Const HANGEUL_CHARSET = 129
Const CHINESEBIG5_CHARSET = 136
Const OEM_CHARSET = 255
'used with fdwOutputPrecision
Const OUT_CHARACTER_PRECIS = 2
Const OUT_DEFAULT_PRECIS = 0
Const OUT_DEVICE_PRECIS = 5
'used with fdwClipPrecision
Const CLIP_DEFAULT_PRECIS = 0
Const CLIP_CHARACTER_PRECIS = 1
Const CLIP_STROKE_PRECIS = 2
'used with fdwQuality
Const DEFAULT_QUALITY = 0
Const DRAFT_QUALITY = 1
Const PROOF_QUALITY = 2
'used with fdwPitchAndFamily
Const DEFAULT_PITCH = 0
Const FIXED_PITCH = 1
Const VARIABLE_PITCH = 2
'used with SetBkMode
Const OPAQUE = 2
Const TRANSPARENT = 1
Const LOGPIXELSY = 90
Const COLOR_WINDOW = 5
Const Message = "Hello !"
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" (ByVal nHeight As Long, ByVal nWidth As Long, ByVal nEscapement As Long, ByVal nOrientation As Long, ByVal fnWeight As Long, ByVal fdwItalic As Boolean, ByVal fdwUnderline As Boolean, ByVal fdwStrikeOut As Boolean, ByVal fdwCharSet As Long, ByVal fdwOutputPrecision As Long, ByVal fdwClipPrecision As Long, ByVal fdwQuality As Long, ByVal fdwPitchAndFamily As Long, ByVal lpszFace As String) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Private Declare Function MulDiv Lib "kernel32" (ByVal nNumber As Long, ByVal nNumerator As Long, ByVal nDenominator As Long) As Long
Private Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, ByVal nBkMode As Long) As Long
Private Declare Function GetSysColorBrush Lib "user32" (ByVal nIndex As Long) As Long
Private Declare Function FillRect Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long
Private Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Dim mDC As Long, mBitmap As Long
Private Sub Form_Click()
Unload Me
End Sub
Private Sub Form_Load()
Dim mRGN As Long, Cnt As Long, mBrush As Long, R As RECT
'Create a device context, compatible with the screen
mDC = CreateCompatibleDC(GetDC(0))
'Create a bitmap, compatible with the screen
mBitmap = CreateCompatibleBitmap(GetDC(0), Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY)
'Select the bitmap nito the device context
SelectObject mDC, mBitmap
'Set the bitmap's backmode to transparent
SetBkMode mDC, TRANSPARENT
'Set the rectangles' values
SetRect R, 0, 0, Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY
'Fill the rect with the default window-color
FillRect mDC, R, GetSysColorBrush(COLOR_WINDOW)
For Cnt = 0 To 350 Step 30
'Select the new font into the form's device context and delete the old font
DeleteObject SelectObject(mDC, CreateMyFont(24, Cnt))
'Print some text
TextOut mDC, (Me.Width / Screen.TwipsPerPixelX) / 2, (Me.Height / Screen.TwipsPerPixelY) / 2, Message, Len(Message)
Next Cnt
'Create an elliptical region
mRGN = CreateEllipticRgn(0, 0, Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY)
'Set the window region
SetWindowRgn Me.hWnd, mRGN, True
'delete our elliptical region
DeleteObject mRGN
End Sub
Function CreateMyFont(nSize As Integer, nDegrees As Long) As Long
'Create a specified font
CreateMyFont = CreateFont(-MulDiv(nSize, GetDeviceCaps(GetDC(0), LOGPIXELSY), 72), 0, nDegrees * 10, 0, FW_NORMAL, False, False, False, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH, "Times New Roman")
End Function
Private Sub Form_Paint()
'Copy the picture to the form
BitBlt Me.hdc, 0, 0, Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY, mDC, 0, 0, vbSrcCopy
End Sub
Private Sub Form_Unload(Cancel As Integer)
'clean up
DeleteDC mDC
DeleteObject mBitmap
End Sub 'In general section
Private Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Const LF_FACESIZE = 32
Private Type LOGFONT
lfHeight As Long
lfWidth As Long
lfEscapement As Long
lfOrientation As Long
lfWeight As Long
lfItalic As Byte
lfUnderline As Byte
lfStrikeOut As Byte
lfCharSet As Byte
lfOutPrecision As Byte
lfClipPrecision As Byte
lfQuality As Byte
lfPitchAndFamily As Byte
lfFaceName(LF_FACESIZE) As Byte
End Type
'In form
Private Sub Form_Load()
Dim RotateMe As LOGFONT
'Set graphic-mode to 'persistent graphic'
Me.AutoRedraw = True
'Rotate degrees
Deg = 270
'Size (in points)
Size = 20
'Set the rotation degree
RotateMe.lfEscapement = Deg * 10
'Set the height of the font
RotateMe.lfHeight = (Size * -20) / Screen.TwipsPerPixelY
'Create the font
rFont = CreateFontIndirect(RotateMe)
'Select the font n the Form's device context
Curent = SelectObject(Me.hdc, rFont)
'Print some text ...
Me.CurrentX = 500
Me.CurrentY = 200
Me.Print ":-)"
End Sub 'In a module
Public Const NTM_REGULAR = &H40&
Public Const NTM_BOLD = &H20&
Public Const NTM_ITALIC = &H1&
Public Const TMPF_FIXED_PITCH = &H1
Public Const TMPF_VECTOR = &H2
Public Const TMPF_DEVICE = &H8
Public Const TMPF_TRUETYPE = &H4
Public Const ELF_VERSION = 0
Public Const ELF_CULTURE_LATIN = 0
Public Const RASTER_FONTTYPE = &H1
Public Const DEVICE_FONTTYPE = &H2
Public Const TRUETYPE_FONTTYPE = &H4
Public Const LF_FACESIZE = 32
Public Const LF_FULLFACESIZE = 64
Type LOGFONT
lfHeight As Long
lfWidth As Long
lfEscapement As Long
lfOrientation As Long
lfWeight As Long
lfItalic As Byte
lfUnderline As Byte
lfStrikeOut As Byte
lfCharSet As Byte
lfOutPrecision As Byte
lfClipPrecision As Byte
lfQuality As Byte
lfPitchAndFamily As Byte
lfFaceName(LF_FACESIZE) As Byte
End Type
Type NEWTEXTMETRIC
tmHeight As Long
tmAscent As Long
tmDescent As Long
tmInternalLeading As Long
tmExternalLeading As Long
tmAveCharWidth As Long
tmMaxCharWidth As Long
tmWeight As Long
tmOverhang As Long
tmDigitizedAspectX As Long
tmDigitizedAspectY As Long
tmFirstChar As Byte
tmLastChar As Byte
tmDefaultChar As Byte
tmBreakChar As Byte
tmItalic As Byte
tmUnderlined As Byte
tmStruckOut As Byte
tmPitchAndFamily As Byte
tmCharSet As Byte
ntmFlags As Long
ntmSizeEM As Long
ntmCellHeight As Long
ntmAveWidth As Long
End Type
Declare Function EnumFontFamilies Lib "gdi32" Alias "EnumFontFamiliesA" (ByVal hDC As Long, ByVal lpszFamily As String, ByVal lpEnumFontFamProc As Long, LParam As Any) As Long
Function EnumFontFamProc(lpNLF As LOGFONT, lpNTM As NEWTEXTMETRIC, ByVal FontType As Long, LParam As Long) As Long
Dim FaceName As String
'convert the returned string to Unicode
FaceName = StrConv(lpNLF.lfFaceName, vbUnicode)
'print the form on Form1
Form1.Print Left$(FaceName, InStr(FaceName, vbNullChar) - 1)
'continue enumeration
EnumFontFamProc = 1
End Function
'In a form
Private Sub Form_Load()
Dim hDC As Long
'set graphics mode to persistent
Me.AutoRedraw = True
'enumerates the fonts
EnumFontFamilies Me.hDC, vbNullString, AddressOf EnumFontFamProc, ByVal 0&
End Sub 'In a module
Public Const NTM_REGULAR = &H40&
Public Const NTM_BOLD = &H20&
Public Const NTM_ITALIC = &H1&
Public Const TMPF_FIXED_PITCH = &H1
Public Const TMPF_VECTOR = &H2
Public Const TMPF_DEVICE = &H8
Public Const TMPF_TRUETYPE = &H4
Public Const ELF_VERSION = 0
Public Const ELF_CULTURE_LATIN = 0
Public Const RASTER_FONTTYPE = &H1
Public Const DEVICE_FONTTYPE = &H2
Public Const TRUETYPE_FONTTYPE = &H4
Public Const LF_FACESIZE = 32
Public Const LF_FULLFACESIZE = 64
Type LOGFONT
lfHeight As Long
lfWidth As Long
lfEscapement As Long
lfOrientation As Long
lfWeight As Long
lfItalic As Byte
lfUnderline As Byte
lfStrikeOut As Byte
lfCharSet As Byte
lfOutPrecision As Byte
lfClipPrecision As Byte
lfQuality As Byte
lfPitchAndFamily As Byte
lfFaceName(LF_FACESIZE) As Byte
End Type
Type NEWTEXTMETRIC
tmHeight As Long
tmAscent As Long
tmDescent As Long
tmInternalLeading As Long
tmExternalLeading As Long
tmAveCharWidth As Long
tmMaxCharWidth As Long
tmWeight As Long
tmOverhang As Long
tmDigitizedAspectX As Long
tmDigitizedAspectY As Long
tmFirstChar As Byte
tmLastChar As Byte
tmDefaultChar As Byte
tmBreakChar As Byte
tmItalic As Byte
tmUnderlined As Byte
tmStruckOut As Byte
tmPitchAndFamily As Byte
tmCharSet As Byte
ntmFlags As Long
ntmSizeEM As Long
ntmCellHeight As Long
ntmAveWidth As Long
End Type
Declare Function EnumFontFamiliesEx Lib "gdi32" Alias "EnumFontFamiliesExA" (ByVal hdc As Long, lpLogFont As LOGFONT, ByVal lpEnumFontProc As Long, ByVal LParam As Long, ByVal dw As Long) As Long
Function EnumFontFamProc(lpNLF As LOGFONT, lpNTM As NEWTEXTMETRIC, ByVal FontType As Long, LParam As Long) As Long
Dim FaceName As String
'convert the returned string to Unicode
FaceName = StrConv(lpNLF.lfFaceName, vbUnicode)
'print the form on Form1
Form1.Print Left$(FaceName, InStr(FaceName, vbNullChar) - 1)
'continue enumeration
EnumFontFamProc = 1
End Function
'In a form
Private Sub Form_Load()
Dim LF As LOGFONT
'set graphics mode to persistent
Me.AutoRedraw = True
'enumerates the fonts
EnumFontFamiliesEx Me.hdc, LF, AddressOf EnumFontFamProc, ByVal 0&, 0
End Sub
نام تابع: CreateFont
اعلان: Declare Function CreateFont Lib "gdi32.dll" Alias "CreateFontA" (ByVal nHeight As Long, ByVal nWidth As Long, ByVal nEscapement As Long, ByVal nOrientation As Long, ByVal fnWeight As Long, ByVal fdwItalic As Long, ByVal fdwUnderline As Long, ByVal fdwStrikeOut As Long, ByVal fdwCharSet As Long, ByVal fdwOutputPrecision As Long, ByVal fdwClipPrecision As Long, ByVal fdwQuality As Long, ByVal fdwPitchAndFamily As Long, ByVal lpszFace As String) As Long
سيستم عامل: NT , 2000 , 98 , 95
توضيحات: اين تابع جهت ايجاد يك فونت بكار ميرود ، فونت كارش كشيدن يك متن يا نوشته روي يك ديوايس(با خواص خودش اعم از سايز، ذخيم يا نازك ، ايتاكيك و ... ميباشد .فونت ايجاد شده توسط اين دستور فونت لاجيكال ميباشد به اين مفهوم كه شكل فونت به وسيله يك سري اعداد ارسال شده كشيده ميشود . پس از پايان برنامه بايد بااستفاده از تابع DeleteObject فونت حذف شود.
مقدار بازگشتي: اگر با اشكال مواجه شود مقدار برگشتي صفراست (در ويندوز NTو2000 براي نوع خطا از تابع GetLastError استفاده نماييد) و اگر موفق باشد هندل فونت را برميگرداند.
پارامترها: nHeight ارتفاع فونت براي فونت هاي يك واحد كاراكتري ،اگر مقدار مثبت باشد فونت مپر(FontMapper) مستقيما آن را با ارتفاع فونتهاي داخل ديوايس هماهنگ ميكند اگر مقدار صفر ارسال گردد فونت مپر ارتفاع پيش فرض را در نظر ميگيرد. و اگر منفي ارسال گردد فونت مپرقدرمطلق آن را مستقيما با ارتفاع فونتهاي داخل ديوايس هماهنگ ميكند. nWidth ميانگين درازاي فونت ، اگر صفر ارسال شود سيستم خود بهترين حالت را درنظر ميگيرد. nEscapement زاويه ميان خط پايه فونت با بردار پايه مقياس برحسب يك دهم درجه و در ويندوز 95و98 بايد با مقدار پارامتر lfOrientation يكسان باشد nOrientation زاويه ميان خط پايه فونت و محور x ها مقياس واحد برحسب 10/1 درجه ميباشد. در ويندوز 95و98 بايد با مقدار پارامتر nEscapement يكسان باشد fnWeight يك فلگ براي مقدار ضخامت فونت جهت اطلاعات بيشتر به جدول زير توجه نماييد. نوع ضخامت توضيحات FW_DONTCARE ضخامت پيش فرض FW_THIN ضخامت نازك FW_EXTRALIGHT ضخامت بسيار باريك FW_ULTRALIGHT همانند بالا FW_LIGHT ضخامت باريك FW_NORMAL ضخامت معمولي FW_REGULAR همانند بالا FW_MEDIUM ضخامت متوسط FW_SEMIBOLD كمي ضخيم FW_DEMIBOLD همانند بالا FW_BOLD ضخيم FW_EXTRABOLD ضخامت بسيار FW_ULTRABOLD همانند بالا FW_HEAVY بسيار بسيار ضخيم FW_BLACK همانند بالا fdwItalic مقدار غير صفر باشد فونت به صورت ايتاليك خواهد بود ، صفر باشد فونت معمولي است fdwUnderline مقدار غير صفر فونت با زيرخط و صفر بدون آن fdwStrikeOut مقدار غير صفر با كشيدن خط پايه و صفر بدون آن fdwCharSet يكي از فلگ هاي زير براي تعيين كاراكتر ست مورد نياز(به جدول توجه نماييد) نام كاراكتر ست توضيحات ANSI_CHARSET كاراكتر ست ANSI ARABIC_CHARSET كاراكتر ست عربي (در NTو2000) BALTIC_CHARSET كاراكتر ست بالتيك(در 95و98) CHINESEBIG5_CHARSET كاراكتر ست چيني DEFAULT_CHARSET كاراكتر ست پيش فرض EASTEUROPE_CHARSET كاراكتر ست اروپاي شرقي(در 95و98) GB2312_CHARSET كاراكتر ست GB2312 GREEK_CHARSET كاراكتر ست يوناني (در 95و98) HANGEUL_CHARSET كاراكتير ست HANDEUL HEBREW_CHARSET كاراكتر ست عبري(در NTو2000) JOHAB_CHARSET كاراكتر ست Johab(در 95و98) MAC_CHARSET كاراكتر ست MAC(در 95و98) OEM_CHARSET كاراكتر ست OEM RUSSIAN_CHARSET كاراكتر ست روسي(در 95و98) SHIFTJIS_CHARSET كاراكتر ست ShiftJis SYMBOL_CHARSET كاراكتر ست سمبول THAI_CHARSET كاراكتر ست تايلندي (در NTو2000) TURKISH_CHARSET كاراكتر ست تركيه اي(در 95و98) fdwOutPrecision اين متغير ميتواند يكي از فلگهاي زير باشد كه مقدار آن براي فونت مپر نوع فونت منطقي را مشخص ميكند.به جدول زير توجه كنيد نام توضيحات OUT_DEFAULT_PRECIS پيش فرض فونت مپر OUT_DEVICE_PRECIS انتخاب يك ديوايس فونت اگر روي سيستم شما چندين فونت هم نام وجود دارد. OUT_OUTLINE_PRECIS انتخاب يك فونت تروتايپ(TrueType) يا هر فونت توخالي ديگر(در NTو2000) OUT_RASTER_PRECIS انتخاب يك فونت از نوع رستر اگر داخل سيستم شما فونتهايي با نام مشابه باشد. OUT_STRING_PRECIS فونت رستر OUT_STROKE_PRECIS فونت برداري(Vector Font) براي ويندوز 95و98 و براي ويندوز NTو2000 بمعني فونت تروتايپ يا اوتلاين بيس ويا فونت برداري OUT_TT_ONLY_PRECIS فقط فونت تروتايپ OUT_TT_PRECIS انتخاب فونت تروتايپ اگر چندين فونت در سيستم با نام مشابه وجود دارد. fdwClipPrecision يكي از فلگ هاي زير كه وقتي استفاده ميشوند كه كاراكترهاي فونت چيده شده باشند CLIP_DEFAULT_PRECIS چيده شده بصورت پيش فرض CLIP_EMBEDDED براي فونت امبدد(Embedded) فقط خواندي استفاده ميگردد. CLIP_LH_ANGLES مسير چرخش را در دستگاه مختصات سيستم تعيين ميكند(يا درغير آن چرخش در جهت مخالف عقربه ساعت خواهد بود) CLIP_STROKE_PRECIS رستري ، برداري ، ويا تروتايپ فونت fdwQuality كيفيت فونت را با براي فونت لاجيكال با يك فونت ايده آل مقايسه ميكند(يكي از فلگ هاي زير است) ANTIALIASED_QUALITY براي ويندوز 95و98وNT4.00وبالاتر و 2000 : ANTIALIASED در صورت امكان DEFAULT_QUALITY با كيفيت پيش فرض ، نمود ظاهري فونت اهميت چنداني ندارد. DRAFT_QUALITY نمود ظاهري فونت با اهميت كم. NONANTIALIASED_QUALITY براي ويندوز 95و98وNT4.00وبالاتر و 2000 : ANTIALIASED نباشد. Windows 95, 98, NT 4.0 or later, 2000: The font is never antialiased. PROOF_QUALITY كيفيت نمايش فونت خيلي مهم است و بايد دقيقا همخواني با اتريبيوت فونت داشته باشد. fdwPitchAndFamily بصورت جدا يا تركيبي از يك *_PITCH وFF_* استفاده ميگردد هر فلگ در زير توضيح داده شده است.(FF مخفف Face Family است و به معني دسته و گروه نحوه نمايش است) DEFAULT_PITCH پيچ پيش فرض FIXED_PITCH پيچ ثابت VARIABLE_PITCH پيچ متغير FF_DECORATIVE زرق برق دار !(گروه فونت زينتي) FF_DONTCARE بدون توجه به گروه فونت FF_MODERN گروه فونت مدرن FF_ROMAN گروه فونت رومن FF_SCRIPT گروه فونت اسكريپت FF_SWISS گروه فونت سويس lpszFace نام كروه فونت مورد استفاده
ثابتهاي مورد استفاده: Const FW_DONTCARE = 0 Const FW_THIN = 100 Const FW_EXTRALIGHT = 200 Const FW_ULTRALIGHT = 200 Const FW_LIGHT = 300 Const FW_NORMAL = 400 Const FW_REGULAR = 400 Const FW_MEDIUM = 500 Const FW_SEMIBOLD = 600 Const FW_DEMIBOLD = 600 Const FW_BOLD = 700 Const FW_EXTRABOLD = 800 Const FW_ULTRABOLD = 800 Const FW_HEAVY = 900 Const FW_BLACK = 900 Const ANSI_CHARSET = 0 Const ARABIC_CHARSET = 178 Const BALTIC_CHARSET = 186 Const CHINESEBIG5_CHARSET = 136 Const DEFAULT_CHARSET = 1 Const EASTEUROPE_CHARSET = 238 Const GB2312_CHARSET = 134 Const GREEK_CHARSET = 161 Const HANGEUL_CHARSET = 129 Const HEBREW_CHARSET = 177 Const JOHAB_CHARSET = 130 Const MAC_CHARSET = 77 Const OEM_CHARSET = 255 Const RUSSIAN_CHARSET = 204 Const SHIFTJIS_CHARSET = 128 Const SYMBOL_CHARSET = 2 Const THAI_CHARSET = 222 Const TURKISH_CHARSET = 162 Const OUT_DEFAULT_PRECIS = 0 Const OUT_DEVICE_PRECIS = 5 Const OUT_OUTLINE_PRECIS = 8 Const OUT_RASTER_PRECIS = 6 Const OUT_STRING_PRECIS = 1 Const OUT_STROKE_PRECIS = 3 Const OUT_TT_ONLY_PRECIS = 7 Const OUT_TT_PRECIS = 4 Const CLIP_DEFAULT_PRECIS = 0 Const CLIP_EMBEDDED = 128 Const CLIP_LH_ANGLES = 16 Const CLIP_STROKE_PRECIS = 2 Const ANTIALIASED_QUALITY = 4 Const DEFAULT_QUALITY = 0 Const DRAFT_QUALITY = 1 Const NONANTIALIASED_QUALITY = 3 Const PROOF_QUALITY = 2 Const DEFAULT_PITCH = 0 Const FIXED_PITCH = 1 Const VARIABLE_PITCH = 2 Const FF_DECORATIVE = 80 Const FF_DONTCARE = 0 Const FF_ROMAN = 16 Const FF_SCRIPT = 64 Const FF_SWISS = 32
کتابخانه: GDI32
توابع مرتبط: CreateFontIndirect , DeleteObject , SelectObject
نکات: ---
کد نمونه:
اعلان: Declare Function CreateFontIndirect Lib "gdi32.dll" Alias "CreateFontIndirectA" (lplf As LOGFONT) As Long
سيستم عامل: NT , 2000 , 98 , 95 , CE
توضيحات: براي ايجاد يك شي از نوع فونت مورد استفاده قرار ميگيرد.(يك فونت با استفاده از يك سري خواص يك نوشته را روي يك ديوايس ميكشد).فونتي كه توسط اين تابع ايجاد ميگردد حتما بايد خواصش با ساختار فونت لاجيكال تعريف شده همخوان باشد. پس از پايان برنامه استفاده كننده از فونت بايد با استفاده از تابع DeleteObject فونت حذف شود.
مقدار بازگشتي: اگر تابع با اشكال مواجه شود مقدار صفر برميگرداند(در ويندوز NTو2000 بااستفاده از تابعGetLastError نوع خطا مشخص ميشود)اگر موفقيت آميز باشد هندل فونت ايجاد شده را برميگرداند.
پارامترها: lplf يك پارامتر از نوع ساختاريLOGFONT كه خواص و خصوصيات فونت مورد نياز در آن قرار دارد.
ثابتهاي مورد استفاده: ---
کتابخانه: GDI32
توابع مرتبط: CreateFont , SelectObject
نکات: ---
کد نمونه:
اعلان: Declare Function EnumFontFamilies Lib "gdi32.dll" Alias "EnumFontFamiliesA" (ByVal hdc As Long, ByVal lpszFamily As Any, ByVal lpEnumFontFamProc As Long, ByVal lParam As Long) As Long
سيستم عامل: NT , 2000 , 98 , 95
توضيحات: اين تابع همه فونتهاي موجود جهت استفاده در يك ديوايس را ميشمارد. يك ويژگي اين تابع آن است كه ميتواند فونتهاي هم نوع را نيز بشمارد بعد شمارش فونت ها (تك تك ) تابع خاص CallBack را فراخاني كرده و پردازش ميكند.
مقدار بازگشتي: مقدار برگشتي اين تابع مقداري است كه آخرين بار كه تابع CallBack برگردانده است.
پارامترها: hdc هندل يك كنتكست ديوايس كه ميخواهيم فونت هاي آن را بشماريم. lpszFamily نام يك نوع فونت از فونتهاي مورد استفاده اگر بخواهيد تك تك فونت هاي موجود را بدون توجه به نوع آن بشماريد بايد مقدار صفر را قراردهيد.(توجه كنيد در ويژوال بيسيك بجاي مقدار صفر بايد از تابع CLng(0) استفاده نماييد. lpEnumFontFamProc يك اشاره گر به تابع EnumFontFamProc كه به نام تابع CallBack شناخته ميشود. كه ميتوان بااستفاده از اين تابع اطلاعاتي راجع به هر فونت بدست آورد. lParam اطلاعات اضافي ديگري كه به تابعي كه آدرس آن در lpEnumFontFamProc قرار دارد برگردانده ميشود.
ثابتهاي مورد استفاده: ---
کتابخانه: GDI32
توابع مرتبط: EnumFontFamiliesEx
نکات: ---
کد نمونه:
اعلان: Declare Function EnumFontFamiliesEx Lib "gdi32.dll" Alias "EnumFontFamiliesExA" (ByVal hdc As Long, lpLogfont As LOGFONT, ByVal lpEnumFontFamExProc As Long, ByVal lParam As Long, ByVal dwFlags As Long) As Long
سيستم عامل: NT , 2000 , 98 , 95
توضيحات: همه فونتهاي موجود در يك ديوايس را جهت استفاده ميشمارد. اين تابع همه فونتهاي با وجه مشترك يك كاراكتر ست و يا سبك خاص( يا همه فونتها را ) ميشمارد.رفتار اين تابع براي دو فونت مشابه ولي از دو كاراكتر ست متفاوت (براي مثال فونت Times New Roman از كاراكتر ست انسي(ANSI) و همين فونت از كاراكتر ست سيريليك(Cyrillic) ) متفاوت است. البته اين نوع فونتهارا نميتوان با يك دستور مشخص شمارش نمود.
مقدار بازگشتي: مقدار برگشتي اين تابع مقداري است كه آخرين بار كه تابع CallBack برگردانده است.
پارامترها: hdc هندل يك ديوايس كنتكست كه ميخواهيم فونتهاي آن را شمارش كنيم. lpLogfont از نوع LogFont ميباشد و مشخصه نوع كاراكترست يا نوع فونت (و يا هيچ كدام) در آن قرا دارد. مقدار متغير lfCharset از LogFont مشخص كننده نوع كاراكتر ست مورد نياز است كه ميتواند نام يك كاراكتر ست يا مقدار DEFAULT_CHARSET و بدون مقدار باشد. اگر بخواهيم براساس نوع فونت باشد مقدار به lfFaceName ميدهيم و اگر بخواهيم بر اساس پيچ باشد به متغير lfPitchAndFamily مقدار ميدهيم. lpEnumFontFamExProc يك اشاره گر به يك تابع از نوع CallBack با نام EnumFontFamExProc . lParam يك متغير اضافي كه ميتواند به تابه CallBack ارسال گردد. dwFlags فعلا غير فعال است و بايد صفر باشد.
ثابتهاي مورد استفاده: ---
کتابخانه: GDI32
توابع مرتبط: EnumFontFamilies
نکات: ---
کد نمونه:
