VB 之 第三課 VB API 字型函式的應用

2022-07-29 09:15:08 字數 3755 閱讀 7267

先來介紹三個個api函式

addfontresource,sendmessage,removefontresource。

addfontresource
這是乙個新增字型資源到系統字體表中,原型如下:

int addfontresource(

lpctstrlpszfilename   // pointer to font-resource filename);lpszfilename 指向字型資源的檔名

返回值:如果函式呼叫成功,則返回值為增加的字型數;如果函式呼叫失敗,返回值是0。

sendmessage
該函式將指定的訊息傳送到乙個或多個視窗。此函式為指定的視窗呼叫視窗程式,直到視窗程式處理完訊息再返回。而和函式postmessage不同,postmessage是將乙個訊息寄送到乙個執行緒的訊息佇列後就立即返回。

lresult sendmessage(

hwnd

hwnd,// handle of destination windowuintmsg,// message to sendwparamwparam,// first message parameterlparamlparam // 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

如圖所示:

python第三課答案 python第三課

字串操作 s alexwusir s1 s.capitalize 首字母大寫 print s1 全大寫,全小寫 s2 s.upper s21 s.lower print s2,s21 大小寫翻轉 s3 s.swapcase print s3 每個隔開 特殊字元或數字 的單詞首字母大寫 s alex ...

python第三課答案 python第三課筆記

以下哪個變數的命名不正確?為什麼?a mm 520 b mm520 c 520 mm d 520 mm 答 c不正確,不能數字開頭 在不上機的情況下,以下 你能猜到螢幕會列印什麼內容嗎?myteacher 小甲魚 yourteacher myteacher yourteacher 黑夜 print ...

python第三課答案 python第三課

1.迴圈物件,主要呼叫next 2.迭代器iterator 在理解上可以和迴圈物件理解為乙個東西。3.生成器 generator 自定義的迴圈物件。4.表推導 list comprehension 是快速生成表的方法。表推導用中括號。l x 2 for x in range 10 練習 f open...