VB 5/6-Tipp 0189: Schriftart anmelden und abmelden
von ActiveVB
Beschreibung
Es ist nicht gewährleistet, daß eine neu in den Schriftartenordner kopierte Schriftart direkt ansprechbar ist. Somit sollte man seine mitgebrachten Fonts temporär registrieren lassen.
Update von Manfred am 19. August 2003: Nun sollte die Schriftart auch in allen Subcontrols funktionieren.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: AddFontResourceA (AddFontResource), RemoveFontResourceA (RemoveFontResource), SendMessageA (SendMessage) | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Project1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Textfeld "Text1" ' Steuerelement: Schaltfläche "Command1" Option Explicit Private Declare Function AddFontResource Lib "gdi32" _ Alias "AddFontResourceA" (ByVal lpFileName As _ String) As Long Private Declare Function RemoveFontResource Lib "gdi32" _ Alias "RemoveFontResourceA" (ByVal lpFileName As _ String) As Long Private Declare Function SendMessage Lib "user32" Alias _ "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As _ Long, ByVal wParam As Long, lParam As Any) As Long Private Const HWND_BROADCAST As Long = &HFFFF& Private Const WM_FONTCHANGE As Long = &H1D& Private Sub Command1_Click() Dim Result As Long Result = AddFontResource(App.Path & _ IIf(Right(App.Path, 1) = "\", "", "\") & "marvosym.ttf") SendMessage HWND_BROADCAST, WM_FONTCHANGE, 0, 0 Text1.FontName = "MarVoSym" End Sub Private Sub Form_Load() Text1.Text = "Klicken Sie auf die Schaltflaeche um " _ & "die neue Schriftart temporaer zu " _ & "registrieren" Text1.FontSize = 16 End Sub Private Sub Form_Unload(Cancel As Integer) Dim Result As Long Result = RemoveFontResource(App.Path & _ IIf(Right(App.Path, 1) = "\", "", "\") & "marvosym.ttf") SendMessage HWND_BROADCAST, WM_FONTCHANGE, 0, 0 End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Project1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 4 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Matthias Tieben am 21.02.2007 um 07:49
Funktioniert bei mir (VB 6 mit SP 6; WinXP Prof. mit SP 2) nur, wenn ich das SendMessage weglasse. Sonst friert das Programm sowohl in der IDE als auch als EXE ein!
MfG
Matthias Tieben
Kommentar von Norbert Müller am 18.01.2007 um 17:17
Der Code funktioniert wunderbar, aber zu was brauche ich eigentlich die SendMessage Lib?
MfG
N. Müller
Kommentar von Reiner Doerr am 23.05.2005 um 22:43
Die Umsetzung des o.g. Codes hat wunderbar geklappt. Für einen Hinweis darauf, wie ich eine dauerhaufte Einbindung eines Fonts zur Laufzeit in die Registry mittels SaveSettings bewältigen könnte, wäre ich sehr dankbar. Die theoretische Vorgehensweise ist mir dabei schon präsent, mir wäre vor allem an einem Beispiel mit Syntax gelegen.
MfG und herzlichen Dank
Reiner Dörr
Kommentar von SCHASCH am 05.02.2004 um 10:31
Habe die "remove"-Funktion unter win98 getestet und gemerkt daß sie nicht fehlerlos funktioniert.
Ich konnte unter win98 die .ttf-Datei nicht löschen nach aufruf der Function.