📄 vb,sendmessage函数巧应用,珠江路在线.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0048)http://www.zhujiangroad.com/html/soft/s3726.html -->
<HTML><HEAD><TITLE>VB教程,VB案例:SENDMESSAGE函数巧应用,VB源码,VB代码,VB源码下载,VB实例,VB安全漏洞,</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content=,SENDMESSAGE函数巧应用 name=DESCRIPTION><LINK
href="VB,SENDMESSAGE函数巧应用,珠江路在线.files/forum.css" rel=stylesheet>
<SCRIPT language=JavaScript>
<!--
function onok(){
var check=true;
if(check){
document.form1.up_date.value="正在提交..";
document.form1.up_date.disabled=true;
return true;
}else{
return false;
}
}
//-->
</SCRIPT>
<META content="MSHTML 6.00.2900.3354" name=GENERATOR></HEAD>
<BODY vLink=#000000 link=#000000 bgColor=#ffffff leftMargin=3 topMargin=0>
<SCRIPT>
var partnerdomain=escape(document.domain);
var partnerdomain2=partnerdomain.substr(partnerdomain.indexOf("."),partnerdomain.length);
var movie_title=""
document.write("<sc"+"ript src=http://www"+partnerdomain2+"/"+partnerdomain+"_title.js></sc"+"ript>");</SCRIPT>
<SCRIPT>
document.title="VB,SENDMESSAGE函数巧应用,"+movie_title
document.write("<sc"+"ript src=http://www"+partnerdomain2+"/"+partnerdomain+"_top2.js></sc"+"ript>");
</SCRIPT>
<TABLE cellSpacing=0 cellPadding=0 width=877 background="" border=0>
<TBODY>
<TR>
<TD vAlign=top width=180 height=65 rowSpan=2><IMG height=64
src="VB,SENDMESSAGE函数巧应用,珠江路在线.files/edu.jpg" width=180></TD>
<TD class=unnamed1 height=32><A
href="http://www.zhujiangroad.com/edu/">学院首页</A> <A
href="http://www.zhujiangroad.com/edu/soft.asp" target=_blank>软件应用</A> <A
href="http://www.zhujiangroad.com/program/"><FONT
color=#ffffff><B>编程开发</B></FONT></A> <A
href="http://www.zhujiangroad.com/design/">创意设计</A> <A
href="http://www.zhujiangroad.com/school/">认证培训</A> <A
href="http://bbs.zhujiangroad.com/list.asp?s=soft"
target=_blank>软件论坛</A></TD></TR>
<TR>
<TD class=unnamed1 height=33><SPAN class=unnamed1><A class=unnamed1
href="http://www.zhujiangroad.com/program/asp.html">ASP</A> <A
href="http://www.zhujiangroad.com/program/ASPNET.html">ASP.NET</A> <A
href="http://www.zhujiangroad.com/program/PHP.html">PHP</A> <A
href="http://www.zhujiangroad.com/program/JSP.html">JSP</A> <A
href="http://www.zhujiangroad.com/program/SQL.html">SQL</A> <A
href="http://www.zhujiangroad.com/program/MySQL.html">MYSQL</A> <A
href="http://www.zhujiangroad.com/program/Java.html">Java</A> <A
href="http://www.zhujiangroad.com/program/VB.html">VB</A></SPAN></TD></TR></TBODY></TABLE>
<TABLE class=unnamed1 cellSpacing=0 cellPadding=0 width=877 border=0>
<TBODY>
<TR>
<TD vAlign=top width=627>
<SCRIPT language=JavaScript1.1
src="VB,SENDMESSAGE函数巧应用,珠江路在线.files/ad4.js"></SCRIPT>
<TABLE height=600 cellSpacing=0 borderColorDark=#eceff4 cellPadding=0
width="98%" align=center bgColor=#ffffff borderColorLight=#666666
border=1>
<TBODY>
<TR bgColor=#ffffff>
<TD vAlign=top bgColor=#ffffff>
<P class=unnamed1>您的位置:<A
href="http://www.zhujiangroad.com/edu/">学院</A> >> <A
href="http://www.zhujiangroad.com/program/">编程开发</A> >> VB
>> SENDMESSAGE函数巧应用</P>
<TABLE cellSpacing=1 cellPadding=0 width="97%" align=center
border=0>
<TBODY>
<TR>
<TD height=14>
<DIV align=center><BR><B>
<H1>SENDMESSAGE函数巧应用</H1></B></DIV></TD></TR>
<TR>
<TD vAlign=top><BR><SPAN
class=unnamed1><BR> 在这一期的SendMessage函数应用中,我将向大家介绍如何利用消息函数来扩展树型列表(TreeView)控件的功能相信对于树型列表控件大家十分的熟悉,典型的应用就是Windows资源管理器中的目录列表。在VB中,树型列表控件包含在Microsoft
Windows Common Control 6.0(也可能是5.0,视你的VB或者系统版本而定)中。在Windows
API中,有一系列的以TVM_
开头的消息值,这些消息就是扩展树型列表控件所特定的消息值,下面向大家介绍其中的一些应用。<BR><BR> <STRONG>1、设置树型列表控件的背景颜色</STRONG><BR><BR> 首先做如下的定义:<BR><BR>
<TABLE width=600 align=center bgColor=#ffffff border=0>
<TBODY>
<TR>
<TD>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<BR> Const TV-FIRST = &H1100<BR> Const
TVM-SETBKCOLOR = TV_FIRST +
29</TD></TR></TBODY></TABLE><BR> 然后再作如下调用:<BR><BR>
<TABLE width=600 align=center bgColor=#ffffff border=0>
<TBODY>
<TR>
<TD>Call SendMessage(TreeView1.hwnd, TVM-SETBKCOLOR, 0,
RGB(255, 0,
0))</TD></TR></TBODY></TABLE><BR> 上面的SendMessage调用将TreeView1的背景颜色设置为红色。<BR><BR> 大家可能注意到了。在上面的Sendmessage函数定义中,我们将lParam定义为
ByVal lParam As
Long,而不是象前面的那些范例那样定义为Any或者String类型,关于这个问题,我会在最后的一章中做介绍。<BR><BR> 2、设置树型列表控件标题行高度<BR><BR> 利用TVM_SETITEMHEIGHT消息可以设定控件的标题行的高度,该消息的定义及调用方法如下:<BR><BR> 定义:<BR><BR>
<TABLE width=600 align=center bgColor=#ffffff border=0>
<TBODY>
<TR>
<TD> Const TV_FIRST = &H1100<BR> Const
TVM-SETITEMHEIGHT = TV_FIRST + 27<BR> 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</TD></TR></TBODY></TABLE>
<BR> 调用:<BR><BR>
<TABLE width=600 align=center bgColor=#ffffff border=0>
<TBODY>
<TR>
<TD>CallSendMessage(TreeView1.hwnd, TVM-SETITEMHEIGHT,
60,
0)</TD></TR></TBODY></TABLE><BR><BR> 上面的代码将TreeView1的标题行高度设置到60像素高<BR><BR> 3、为树型列表控件中不同的标题行设置不同的提示<BR><BR> 在第一期的ListBox控件介绍中,我向大家介绍了如何为列表中的每一个标题行设置不同的提示(ToolTips),在这里为要向大家介绍如何为树型列表控件中的每一个标题设置不同的提示。<BR><BR> 同ListBox控件不通,树型列表控件中并没有根据光标位置获得标题行索引的消息,我们需要另外想办法。在TVM类消息中有一个TVM_HITTEST消息,发送该消息可以检测控件表面上的某一点,如果该点位于一个标题上,则返回该标题的句柄。而利用TVM_GETITEM消息,则可以根据标题句柄返回该标题行的文本。所以结合利用这两个消息可以获取光标所在标题行的标题文本。具体的范例代码如下:<BR><BR> <BR><BR>
<TABLE width=600 align=center bgColor=#ffffff border=0>
<TBODY>
<TR>
<TD>Option Explicit Private Type TPoint<BR> x As
Long<BR> y As Long<BR> End Type<BR> Private Type
TVHITTESTINFO<BR> pt As TPoint<BR> flags As
Long<BR> hItem As Long<BR> End Type<BR> Private Type
TVITEM<BR> mask As Long<BR> HTreeItem As
Long<BR> state As Long<BR> stateMask As
Long<BR> pszText As Long<BR> cchTextMax As
Long<BR> iImage As Long<BR> iSelectedImage As
Long<BR> cChildren As Long<BR> lParam As Long<BR> End
Type<BR> Const TV-FIRST = &H1100<BR> Const TVM_HITTEST
= TV-FIRST + 17<BR> Const TVM_GETITEM = TV-FIRST +
12<BR> Const TVHT-ONITEMLABEL = &H4<BR> Const
TVIF-TEXT = &H1<BR> Const GMEM-FIXED = &H0<BR> 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<BR> Private Declare Sub CopyMemory Lib "kernel32"
Alias "RtlMoveMemory" (ByVal Destination As String,ByVal
Source As Long,ByVal Length As Long)<BR> Private
Declare Function GlobalAlloc Lib "kernel32" (ByVal
wFlags As Long, ByVal dwBytes As Long) As
Long<BR> Private Declare Function GlobalFree Lib
"kernel32" (ByVal hMem As Long) As Long<BR> Dim
hItemPrv As Long<BR> Private Sub Form_Load()<BR> Dim
ndX As Node<BR> '加入若干Item<BR> Set ndX =
TreeView1.Nodes.Add(, , "R", "Root")<BR> Set ndX =
TreeView1.Nodes.Add("R", tvwChild, "Key1",
"Node1")<BR> Set ndX = TreeView1.Nodes.Add("Key1",
tvwChild, "SubKey1", "SubNode1")<BR> Set ndX =
TreeView1.Nodes.Add("SubKey1", tvwChild, "SubKeys1",
"SubNode1")<BR> Set ndX = TreeView1.Nodes.Add("Key1",
tvwChild, "SubKey2", "SubNode2")<BR> Set ndX =
TreeView1.Nodes.Add("Key1", tvwChild, "SubKey3",
"SubNode3")<BR> Set ndX = TreeView1.Nodes.Add("Key1",
tvwChild, "SubKey4", "SubNode4")<BR> End
Sub<BR> Private Sub TreeView1_MouseMove(Button As
Integer, Shift As Integer, x As Single, y As Single)
<BR> Dim ptA As TPoint<BR> Dim tf As
TVHITTESTINFO<BR> Dim tv As TVITEM<BR> Dim hStr As
Long<BR> Dim hItem As Long<BR> Dim astr As String *
1024<BR> Dim bstr<BR> On Error GoTo
errLab<BR> '获得当前光标所在的位置坐标<BR> ptA.x = Int(x /
Screen.TwipsPerPixelX)<BR> ptA.y = Int(y /
Screen.TwipsPerPixelY)<BR> tf.pt = ptA<BR> tf.flags =
TVHT_ONITEMLABEL<BR> '获得光标所在的Item的句柄<BR> hItem =
SendMessageRef(TreeView1.hwnd, TVM_HITTEST, 0,
tf)<BR> '如果未获得句柄或者同上一次是同一个Item的句柄则退出<BR> If ((hItem
<= 0) Or (hItem = hItemPrv)) Then Exit
Sub<BR> hItemPrv =
hItem<BR> '分配一定的内存空间用以存储Item的标题<BR> hStr =
GlobalAlloc(GMEM-FIXED, 1024)<BR> If hStr > 0
Then<BR> tv.mask = TVIF_TEXT
<BR> '获取标题文本<BR> tv.HTreeItem =
hItem<BR> 'Item句柄<BR> tv.pszText =
hStr<BR> tv.cchTextMax =
1023<BR> '发送TVM_GETITEM获得标题文本<BR> CallSendMessageRef(TreeView1.hwnd,
TVM-GETITEM, 0,
tv)<BR> '将标题文本拷贝到字符串astr中<BR> CopyMemory astr, hStr,
1024<BR> bstr = Left$(astr, (InStr(astr, Chr(0)) -
1))<BR> TreeView1.ToolTipText =
bstr<BR> '释放分配的内存空间<BR> GlobalFree hStr<BR> End
If<BR> Exit Sub<BR> errLab:<BR> Resume Next<BR> End
Sub</TD></TR></TBODY></TABLE> <BR><BR> 运行上面的程序,当光标在TreeView1上面移动时,TreeView1的ToolTips就会根据光标所在的不同标题行而变动。<BR><BR> 以上程序在Win98、Win2000,VB6下运行通过。<BR><BR></SPAN></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD>
<TD vAlign=top width=250>
<SCRIPT language=JavaScript1.1
src="VB,SENDMESSAGE函数巧应用,珠江路在线.files/ad2.js"></SCRIPT>
<TABLE cellSpacing=5 cellPadding=2 width=250 align=center bgColor=#ff9933
border=0>
<TBODY>
<TR>
<TD>
<DIV align=center><B
class=unnamed1>技术文章快速查找</B></DIV></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=1 cellPadding=2 width=250 align=center bgColor=#ff9933
border=0>
<TBODY>
<TR>
<TD bgColor=#ffffff>
<TABLE cellSpacing=0 cellPadding=0 width=240 align=center
border=0><FORM action=http://www.tools123.com.cn/search.asp
method=get target=_blank>
<TBODY>
<TR>
<TD vAlign=top noWrap align=left height=32><LABEL
style="DISPLAY: none" for=sbi></LABEL><LABEL
style="DISPLAY: none" for=sbb></LABEL>
<DIV align=center><INPUT id=sbi maxLength=200 size=16
value=关键词 name=wd> <INPUT id=sbb type=submit value=搜索 name=Submit> <INPUT
type=hidden value=web name=s> <INPUT type=hidden
value=www.zhujiangroad.com/ name=url2>
</DIV></TD></TR></FORM></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=5 cellPadding=2 width=250 align=center bgColor=#ff9933
border=0>
<TBODY>
<TR>
<TD>
<DIV align=center><B
class=unnamed1>栏目导航</B></DIV></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=1 cellPadding=2 width=250 align=center bgColor=#ff9933
border=0>
<TBODY>
<TR>
<TD bgColor=#ffffff>
<TABLE class=unnamed1 cellSpacing=0 cellPadding=1 width="100%"
border=0>
<TBODY>
<TR>
<TD bgColor=#cccccc colSpan=3>
<DIV align=center>软件应用</DIV></TD></TR>
<TR>
<TD width="31%">·<A
href="http://www.zhujiangroad.com/edu/sys.html">操作系统</A></TD>
<TD width="38%">·<A
href="http://www.zhujiangroad.com/edu/safety.html">杀毒防黑</A></TD>
<TD width="31%">·<A
href="http://www.zhujiangroad.com/edu/yingyong.html">应用软件</A></TD></TR>
<TR>
<TD width="31%">·<A
href="http://www.zhujiangroad.com/edu/chat.html">聊天软件</A></TD>
<TD width="38%">·<A
href="http://www.zhujiangroad.com/edu/net.html">网络软件</A></TD>
<TD width="31%"> </TD></TR>
<TR>
<TD bgColor=#cccccc colSpan=3>
<DIV align=center>Web开发</DIV></TD></TR>
<TR>
<TD width="31%">·<A
href="http://www.zhujiangroad.com/program/ASP.html">ASP</A></TD>
<TD>·<A
href="http://www.zhujiangroad.com/program/JavaScript.html">JavaScript</A></TD>
<TD>·<A
href="http://www.zhujiangroad.com/program/CGI.html">CGI</A></TD></TR>
<TR>
<TD width="31%">·<A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -