狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當(dāng)前位置:系統(tǒng)之家 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

SENDMESSAGE函數(shù)巧應(yīng)用

SENDMESSAGE函數(shù)巧應(yīng)用

更新時(shí)間:2024-04-10 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

在這一期的SendMessage函數(shù)應(yīng)用中,我將向大家介紹如何利用消息函數(shù)來擴(kuò)展樹型列表(TreeView)控件的功能相信對于樹型列表控件大家十分的熟悉,典型的應(yīng)用就是Windows資源管理器中的目錄列表。在VB中,樹型列表控件包含在Microsoft Windows Common Control 6.0(也可能是5.0,視你的VB或者系統(tǒng)版本而定)中。在Windows API中,有一系列的以TVM_ 開頭的消息值,這些消息就是擴(kuò)展樹型列表控件所特定的消息值,下面向大家介紹其中的一些應(yīng)用。
1、設(shè)置樹型列表控件的背景顏色
首先做如下的定義:
Private Declare Function SendMessage Lib "user32" Alias "Send MessageA" (ByVal hwnd As Long,ByVal wMsg As Long, ByVal wParam As Long,ByVal lParam As Long) As Long
Const TV-FIRST = &H1100
Const TVM-SETBKCOLOR = TV_FIRST + 29
然后再作如下調(diào)用:
Call SendMessage(TreeView1.hwnd, TVM-SETBKCOLOR, 0, RGB(255, 0, 0))
上面的SendMessage調(diào)用將TreeView1的背景顏色設(shè)置為紅色。
大家可能注意到了。在上面的Sendmessage函數(shù)定義中,我們將lParam定義為 ByVal lParam As Long,而不是象前面的那些范例那樣定義為Any或者String類型,關(guān)于這個(gè)問題,我會(huì)在最后的一章中做介紹。
2、設(shè)置樹型列表控件標(biāo)題行高度
利用TVM_SETITEMHEIGHT消息可以設(shè)定控件的標(biāo)題行的高度,該消息的定義及調(diào)用方法如下:
定義:
Const TV_FIRST = &H1100
Const TVM-SETITEMHEIGHT = TV_FIRST + 27
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
調(diào)用:
CallSendMessage(TreeView1.hwnd, TVM-SETITEMHEIGHT, 60, 0)
上面的代碼將TreeView1的標(biāo)題行高度設(shè)置到60像素高
3、為樹型列表控件中不同的標(biāo)題行設(shè)置不同的提示
在第一期的ListBox控件介紹中,我向大家介紹了如何為列表中的每一個(gè)標(biāo)題行設(shè)置不同的提示(ToolTips),在這里為要向大家介紹如何為樹型列表控件中的每一個(gè)標(biāo)題設(shè)置不同的提示。
同ListBox控件不通,樹型列表控件中并沒有根據(jù)光標(biāo)位置獲得標(biāo)題行索引的消息,我們需要另外想辦法。在TVM類消息中有一個(gè)TVM_HITTEST消息,發(fā)送該消息可以檢測控件表面上的某一點(diǎn),如果該點(diǎn)位于一個(gè)標(biāo)題上,則返回該標(biāo)題的句柄。而利用TVM_GETITEM消息,則可以根據(jù)標(biāo)題句柄返回該標(biāo)題行的文本。所以結(jié)合利用這兩個(gè)消息可以獲取光標(biāo)所在標(biāo)題行的標(biāo)題文本。具體的范例代碼如下:
Option Explicit Private Type TPoint
x As Long
y As Long
End Type
Private Type TVHITTESTINFO
pt As TPoint
flags As Long
hItem As Long
End Type
Private Type TVITEM
mask As Long
HTreeItem As Long
state As Long
stateMask As Long
pszText As Long
cchTextMax As Long
iImage As Long
iSelectedImage As Long
cChildren As Long
lParam As Long
End Type
Const TV-FIRST = &H1100
Const TVM_HITTEST = TV-FIRST + 17
Const TVM_GETITEM = TV-FIRST + 12
Const TVHT-ONITEMLABEL = &H4
Const TVIF-TEXT = &H1
Const GMEM-FIXED = &H0
Private Declare Function Send MessageRef Lib"user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long,ByVal wParam As Long,lParam As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As String,ByVal Source As Long,ByVal Length As Long)
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
Dim hItemPrv As Long
Private Sub Form_Load()
Dim ndX As Node
`加入若干Item
Set ndX = TreeView1.Nodes.Add(, , "R", "Root")
Set ndX = TreeView1.Nodes.Add("R", tvwChild, "Key1", "Node1")
Set ndX = TreeView1.Nodes.Add("Key1", tvwChild, "SubKey1", "SubNode1")
Set ndX = TreeView1.Nodes.Add("SubKey1", tvwChild, "SubKeys1", "SubNode1")
Set ndX = TreeView1.Nodes.Add("Key1", tvwChild, "SubKey2", "SubNode2")
Set ndX = TreeView1.Nodes.Add("Key1", tvwChild, "SubKey3", "SubNode3")
Set ndX = TreeView1.Nodes.Add("Key1", tvwChild, "SubKey4", "SubNode4")
End Sub
Private Sub TreeView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim ptA As TPoint
Dim tf As TVHITTESTINFO
Dim tv As TVITEM
Dim hStr As Long
Dim hItem As Long
Dim astr As String * 1024
Dim bstr
On Error GoTo errLab
`獲得當(dāng)前光標(biāo)所在的位置坐標(biāo)
ptA.x = Int(x / Screen.TwipsPerPixelX)
ptA.y = Int(y / Screen.TwipsPerPixelY)
tf.pt = ptA
tf.flags = TVHT_ONITEMLABEL
`獲得光標(biāo)所在的Item的句柄
hItem = SendMessageRef(TreeView1.hwnd, TVM_HITTEST, 0, tf)
`如果未獲得句柄或者同上一次是同一個(gè)Item的句柄則退出
If ((hItem <= 0) Or (hItem = hItemPrv)) Then Exit Sub
hItemPrv = hItem
`分配一定的內(nèi)存空間用以存儲(chǔ)Item的標(biāo)題
hStr = GlobalAlloc(GMEM-FIXED, 1024)
If hStr > 0 Then
tv.mask = TVIF_TEXT
`獲取標(biāo)題文本
tv.HTreeItem = hItem
`Item句柄
tv.pszText = hStr
tv.cchTextMax = 1023
`發(fā)送TVM_GETITEM獲得標(biāo)題文本
CallSendMessageRef(TreeView1.hwnd, TVM-GETITEM, 0, tv)
`將標(biāo)題文本拷貝到字符串a(chǎn)str中
CopyMemory astr, hStr, 1024
bstr = Left$(astr, (InStr(astr, Chr(0)) - 1))
TreeView1.ToolTipText = bstr
`釋放分配的內(nèi)存空間
GlobalFree hStr
End If
Exit Sub
errLab:
Resume Next
End Sub
運(yùn)行上面的程序,當(dāng)光標(biāo)在TreeView1上面移動(dòng)時(shí),TreeView1的ToolTips就會(huì)根據(jù)光標(biāo)所在的不同標(biāo)題行而變動(dòng)。
以上程序在Win98、Win2000,VB6下運(yùn)行通過

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
一区二区日韩免费看| 99精品视频网| 狠狠入ady亚洲精品| 免费在线成人网| 亚洲精品高清在线观看| 国产欧美日本一区视频| 日韩欧美在线网站| 7777精品伊人久久久大香线蕉超级流畅 | 日韩免费电影一区| 欧美日韩三级在线| 91成人国产精品| 久久精品卡一| 国产精品一区在线播放| 亚洲国产精品综合| 亚洲国产精品久久久久婷婷老年 | 欧美成人一区二区三区在线观看| 玖玖国产精品视频| 亚洲影音一区| 国产偷自视频区视频一区二区| 国产精品国产精品| 国产成人丝袜美腿| 国产精品一卡二卡在线观看| 久久疯狂做爰流白浆xx| 男男视频亚洲欧美| 久久se这里有精品| 国产一区在线观看视频| 国产一区二三区| 亚洲一区二区在线观看视频| 亚洲精品视频免费看| 亚洲欧美电影院| 日本中文在线一区| 大尺度一区二区| 亚洲特色特黄| 色婷婷av一区二区三区gif| 日韩欧美的一区| 亚洲视频小说图片| 久久精品理论片| 欧美1区2区| 久久久天天操| 精品国产一区久久| 亚洲综合网站在线观看| 国产精品一区二区在线观看不卡| 欧美一区三区二区在线观看| 男女精品网站| 久久久久久9999| 亚洲成人综合网站| 不卡电影一区二区三区| 国产亚洲午夜| 欧美一区二区久久| 亚洲卡通动漫在线| 国产成人99久久亚洲综合精品| 亚洲大胆av| 欧美一卡在线观看| 亚洲国产综合人成综合网站| 国产v综合v亚洲欧| 国产亚洲成人一区| 久久综合五月天婷婷伊人| 婷婷一区二区三区| 国产精品hd| 欧美一卡二卡三卡| 国产乱国产乱300精品| 国产三区精品| 久久女同精品一区二区| 日本va欧美va瓶| 欧美先锋影音| 日韩免费视频一区二区| 五月天久久比比资源色| 欧美一区免费视频| 91精品国产91综合久久蜜臀| 一区二区高清免费观看影视大全| 国产露脸91国语对白| 国产亚洲欧美另类一区二区三区| 日韩欧美一二三区| 秋霞国产午夜精品免费视频| 红桃视频亚洲| 精品国产成人系列| 久久精品国产**网站演员| 亚洲人成久久| 国产欧美视频在线观看| 丁香婷婷综合网| 欧美在线观看视频在线| 一区二区三区在线免费| 91视频观看视频| 69堂亚洲精品首页| 蜜臀精品一区二区三区在线观看 | 亚洲成人av资源| 亚洲欧洲一区| 综合激情网...| 欧美日韩亚洲一区三区 | 国内一区二区在线| 欧美日精品一区视频| 亚洲bt欧美bt精品777| 99热这里只有精品8| 国产精品美女久久久久aⅴ国产馆| 国产成人精品综合在线观看 | 性做久久久久久免费观看欧美| 一区二区精品在线观看| 亚洲黄色小视频| 夜夜爽99久久国产综合精品女不卡| 中文字幕av一区二区三区高| 色综合久久中文综合久久97| 久久精品综合网| 女女同性女同一区二区三区91| 久久一区二区三区四区| 91视频91自| 国产精品色眯眯| 亚洲欧洲日夜超级视频| 亚洲国产综合91精品麻豆| 亚洲欧美视频一区二区三区| 亚洲第一主播视频| 色婷婷精品大在线视频| 久久精工是国产品牌吗| 欧美一区二区大片| av在线播放成人| 国产精品美女久久久久aⅴ| 在线成人黄色| 亚洲成人黄色小说| 欧美性欧美巨大黑白大战| 极品美女销魂一区二区三区免费| 欧美日韩免费电影| 暴力调教一区二区三区| 久久久久久久久久美女| 1024精品一区二区三区| 天天综合色天天| 91精品国产色综合久久ai换脸| caoporm超碰国产精品| 国产精品嫩草影院com| 国产日韩欧美精品| 精品一二线国产| 久久久久青草大香线综合精品| 国内一区二区三区| 免费在线欧美视频| 欧美大胆人体bbbb| 99pao成人国产永久免费视频| 日本欧美在线看| 欧美精品一区二| 亚洲综合国产激情另类一区| 国内成人精品2018免费看| 久久久久久免费| 美女亚洲精品| 成人av资源在线| 亚洲韩国精品一区| 欧美va亚洲va在线观看蝴蝶网| 在线不卡视频| 国内成人精品2018免费看| 亚洲视频在线一区观看| 欧美乱妇15p| 雨宫琴音一区二区在线| 韩国在线一区二区| 一区二区三区加勒比av| 日韩欧美亚洲另类制服综合在线| 亚洲精品人人| 国产成人精品1024| 亚洲成人精品一区二区| 久久久精品黄色| 欧美性色欧美a在线播放| 黑人巨大精品欧美一区二区小视频| 免费人成在线不卡| 国产精品嫩草影院av蜜臀| 在线播放日韩导航| 国产偷国产偷亚洲高清97cao| www.欧美色图| 久久99日本精品| 一区二区三区日韩欧美精品 | 久久99精品一区二区三区三区| 亚洲欧美偷拍三级| 日韩精品影音先锋| 在线影视一区二区三区| 日韩一级大片| 欧美 日韩 国产 一区| 精品中文av资源站在线观看| 亚洲欧美精品午睡沙发| 国产日韩精品视频一区| 欧美一级久久久久久久大片| 色94色欧美sute亚洲线路二| 一本久久综合| 欧美天天视频| av电影在线观看完整版一区二区| 老司机午夜精品| 亚洲444eee在线观看| 亚洲欧洲精品一区二区三区 | 天堂资源在线中文精品| 亚洲精品国产a| 国产精品久久久久久久久免费樱桃| 91精品国产色综合久久ai换脸| 日本丶国产丶欧美色综合| 亚洲精品123区| 国产综合网站| 国产综合久久| 你懂的国产精品| 99久久精品情趣| 成人av电影在线播放| 国产精品亚洲一区二区三区在线| 蜜桃视频在线观看一区| 亚洲国产日产av| 亚洲一区二区三区免费视频| 一区二区三区高清| 亚洲人被黑人高潮完整版| 亚洲欧美日韩精品久久久久| 中文字幕一区二区三区蜜月|