第三课 VB API 字体函数的应用

先来介绍三个个API函数

AddFontResource,SendMessage,RemoveFontResource。

AddFontResource
这是一个添加字体资源到系统字体表中,原型如下:

int AddFontResource(
  LPCTSTR lpszFilename   // pointer to font-resource filename
);
lpszfilename 指向字体资源的文件名返回值:如果函数调用成功,则返回值为增加的字体数;如果函数调用失败,返回值是0。
SendMessage
该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而和函数PostMessage不同,PostMessage是将一个消息寄送到一个线程的消息队列后就立即返回。LRESULT SendMessage(
  HWND hWnd,      // handle of destination window
  UINT Msg,       // message to send
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
);

参数

hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。

Msg:指定被发送的消息。

wParam:指定附加的消息特定信息。

IParam:指定附加的消息特定信息。

返回值:返回值指定消息处理的结果,依赖于所发送的消息。

RemoveFontResource

功能:该函数从系统字体表中除去在指定文件里的字体。

BOOL RemoveFontResource(
  LPCTSTR lpFileName   // pointer to font-resource filename
);

参数

lpFileName:指向以\0结束的字符串的指针,该字符串表示字体资源文件的名字。

返回值:如果函数调用成功,返回值非零,如果函数调用失败,返回值是0。

接下来我们在VB6.0中用到2个Command控件,1个Text控件和一个List控件如图:

介绍完之后直接上代码:

Option Explicit
Private Declare Function AddFontResource Lib "gdi32" Alias "AddFontResourceA" (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 Declare Function RemoveFontResource Lib "gdi32" Alias "RemoveFontResourceA" (ByVal lpFileName As String) As Long
Private Const HWND_BROADCAST = &HFFFF&
Private Const WM_FONTCHANGE = &H1D
Dim s As String

Private Sub Command1_Click()
Dim i, j As Long
s = InputBox("请输入字体文件的路径及名称:", "添加字体")
j = AddFontResource(s)
If j = 0 Then
MsgBox "添加字体失败,请检查路径及文件名是否正确"
Exit Sub
End If
Call SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0)
Me.List1.Clear
For i = 0 To Screen.FontCount - 1
Me.List1.AddItem Screen.Fonts(i)
Next i
End Sub

Private Sub Command2_Click()
Dim i, K As Long
s = InputBox("请输入字体的路径及名称:", "删除字体")
K = RemoveFontResource(s)
If K = 0 Then
MsgBox "删除字体失败,请检查路径及文件名是否正确"
Exit Sub
End If
Call SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0)
Me.List1.Clear
For i = 0 To Screen.FontCount - 1
Me.List1.AddItem Screen.Fonts(i)
Next i
End Sub

Private Sub List1_Click()
Me.Text1.FontName = Me.List1.List(List1.ListIndex)
End Sub
Private Sub Form_Load()
Dim i As Integer
Me.Text1.Text = ""
Me.Text1.Text = "因为爱着你的爱" + Chr(13) + Chr(10) _
+ "因为梦着你的梦" + Chr(13) + Chr(10) _
+ "所以着你的快乐" + Chr(13) + Chr(10) _
+ "幸福着你的幸福" + Chr(13) + Chr(10)
For i = 0 To Screen.FontCount - 1
Me.List1.AddItem Screen.Fonts(i)
Next i
End Sub

 
时间: 2024-10-05 05:21:14

第三课 VB API 字体函数的应用的相关文章

Spark 3000门徒第三课scala高阶函数总结

今晚听了王家林老师3000门徒spark系列课程的第三课,讲述了scala函数,下面写一下心得: 普通函数:def fun1(name:String){println(name)} 函数赋值给变量:val fun1 = functionName _ 匿名函数:val fun2 = (name:String) => prinln(name) 高阶函数:def bigData(func:(String) => Unit, content: String){func(content)} 返回值是函数

第三课 文件处理和函数

一.文件处理: 1.文件操作的必要条件: 1,打开文件,产生文件句柄. 2,操作文件句柄. 3,关闭文件. 例子: 护士主妇空姐老师联系方式.txt 1,文件路径 2,编码方式:utf-8. 3,动作mode,读,读写,写读..... f1 = open('D:\空姐护士老师主妇.txt', encoding='utf-8', mode='r') content = f1.read() print(content) f1.close() f1,文件句柄,文件对象,file,f_handle,fi

【C语言探索之旅】第三部分第三课:SDL开发游戏之显示图像

内容简介 1.第三部分第三课: SDL开发游戏之显示图像 2.第三部分第四课预告: SDL开发游戏之事件处理 第三部分第三课:SDL开发游戏之显示图像 上一课中,我们学习了如何加载SDL库(SDL_Init),释放SDL库(SDL_Quit),如何打开一个窗口(Window),如何使用表面(Surface). 这些都是SDL库最最基本的操作.暂时,我们只会给窗口自带的表面上点颜色,好像挺乏味的. 这一课我们来学习如何插入图片.上一课我们说过,SDL中绘制图样需要在Surface上进行.Surfa

【C++探索之旅】第一部分第三课:第一个C++程序

 内容简介 1.第一部分第三课:第一个C++程序 2.第一部分第四课预告:内存的使用 第一个C++程序 经过上两课之后,我们已经知道了什么是编程,编程的语言,编程的必要软件,C++是什么,我们也安装了适合自己的一个IDE(Integrated Development Environment,就是"集成开发环境"的意思). 如果你真的要开始在Linux下编写程序,除了使用IDE之外(IDE集成了文本编辑器,编译器,调试器,运行程序等),也可以选择另一种难一些的方式:自己用某一种文本编辑

第三课 文件系统(上)

unix_c_03.txt====================第三课 文件系统(上)====================一.系统调用------------应用程序 -----------+| |v |各种库 |(C/C++标准库.Shell命令和脚本. |X11图形程序及库) || |v |系统调用 <----------+(内核提供给外界访问的接口函数,调用这些函数将使进程进入内核态)|v内核(驱动程序.系统功能程序)1. Unix/Linux大部分系统功能是通过系统调用实现的.如o

【C语言探索之旅】 第二部分第三课:数组

内容简介 1.课程大纲 2.第二部分第三课: 数组 3.第二部分第四课预告:字符串 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型 文件读写 动态分配

VB中DateDiff 函数解释

VB中DateDiff 函数使用方法 DateDiff (interval, Date1 , Date2[,firstweekofyear[,firstweekofyear]]) 返回一个Variant(long) 的值,表示两个指定日期间的时间间隔数目 interval:设定两个日期之间的期间计算之单位.譬如 >interval="m" 表示计算的单位为月. >interval 的设定值如: yyyy > Year 年 q Quarter 季 m Month 月 d

NeHe OpenGL教程 第十四课:图形字体

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第十四课:图形字体 图形字体: 在一课我们将教你绘制3D的图形字体,它们可像一般的3D模型一样被变换. 这节课继续上一节课课的内容.在第13课我们学习了如何使用位图字体,这节课,我们将学习如何使用轮廓字体. 创建轮廓字体的方法类似于

PHP第三课 PHP的基本数据类型

学习纲要: 1.php七种变量类型 2.isset和empty两个函数的区分 3.类型测试 4.类型的自动转换 5.类型强制转换 注意: 1.对象中调用方法是通过 变量->方法名 来调用.  $user1 = new per(); $user1->say(); 2.更改页面的编码: header ("content-type:text/html;charset=gbk"); 3.header头信息不能有输出 1.php八种变量类型 整型 浮点型 字符型 布尔型 //以上四种