<marquee width=358>欢迎来到月影社区,希望这里可以成为您美丽的梦幻花园,如果你觉得这里好请分享给您的朋友!- wf66.com</marquee> 北方网通线路南方电信线路将月影社区设置为您的首页将月影社区地址加入到您的收藏栏
月影社区时尚音乐音乐查询IP手机许愿之瓶最新更新文件加密访客留言爱音乐
欢迎您,首页 >> 信息中心 >> 实现平面工具栏上

请输入您关键字:


实现平面工具栏上

推荐查看本文HTML版本

流行软件的工具栏上的按钮是平的按钮,当鼠标移过时才会突起,这种效果采用贴图的方法实现十分麻烦,而利用API函数实现起来就很方便,快捷。实现的基本思路是:用SendMessage函数向工具栏发送设置显示样式TB_SETSTYLE的消息来改变工具栏的显示效果。 

我们先来声明API函数,本例中用到的两个函数声明如下: 

 Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _ (ByVal hWnd1 As Long, _ ByVal hWnd2 As Long, _ ByVal lpsz1 As String, _ ByVal lpsz2 As String) As Long 

 Private Declare Function SendMessage Lib "user32" Alias _ "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _ ByVal wParam As Integer, ByVal lParam As Any) As Long  


FindWindowEx函数的作用是在窗口列表中寻找与指定条件相符的第一个子窗口,它返回的值是找到的窗口的句柄,其中各个参数的意义如下表所示: 

参数 意义 
hWnd1 Long,查找子窗口的父窗口。如设为零,表示使用桌面窗口(一般认为它是顶级父窗口) 
hWnd2 Long,从这个窗口后开始查找。这样便可利用对FindWindowEx的多次调用找到符合条件者 
lpsz1 String,欲搜索的类名。零表示忽略 
lpsz2 String,欲搜索的类名。零表示忽略 
返回值 Long,找到的窗口的句柄。如未找到相符窗口,则返回零。 

SendMessage函数用于向某一窗口发送消息,它的各个参数的意义如下: 

参数 意义 
hwnd Long,要接收消息的那个窗口的句柄 
wMsg Long,消息的标识符,改变工具栏样式的标识为TB_SETSTYLE,它的值为 &H400 + 56 
wParam Long,具体取决于消息 
lParam String,与消息有关,平面工具栏是TBSTYLE_FLAT,它的值是&H800 
返回值 Long,找到的窗口的句柄。如未找到相符窗口,则返回零。 

我们先利用FindWindowEx函数取得Toolbar控件(是一个窗口,这里所说的窗口包括窗体、按钮、标签等各种控件)的窗口句柄,使用语法如下: 

 lngHWND = FindWindowEx(tBar.hwnd, 0&, "ToolbarWindow32", vbNullString)  
然后利用取得的句柄发送TB_GETSTYLE消息给Toolbar,此时程序中的lngStyle返回原有的Toolbar的样式。 

 lngStyle = SendMessage(lngHWND, TB_GETSTYLE, 0&, 0&)  

最后发送TB_SETSTYLE消息给Toolbar,设置新的样式: 
 lngStyle = lngStyle Or TBSTYLE_FLAT  设置工具栏的新样式
用API函数实现工具栏的新样式

 lngResult = SendMessage(lngHWND, TB_SETSTYLE, 0, lngStyle)  

通过以上的几个步骤,平面的工具栏就实现了,现在我们来运行一下程序,看看鼠标移到工具栏上的效果吧。 

为了学习方便,以下提供了源代码并附详细的中文注释: 

-------------------------------------------
实现平面工具栏
-------------------------------------------
程序说明:
流行软件的工具栏上的按钮是平的按钮,当鼠标移过时才
会突起,这种效果采用贴图的方法实现十分麻烦,而利用
API函数实现起来就很方便,快捷。
实现的基本思路是:用SendMessage函数向工具栏发送设
置显示风格STYLE的消息来改变工具栏的显示效果。 

Const WM_USER = &H400
Const TB_SETSTYLE = WM_USER + 56
Const TB_GETSTYLE = WM_USER + 57
Const TBSTYLE_FLAT = &H800
Const TBSTYLE_LIST = &H1000 

【VB声明】 
[月影社区 http://wf66.com/]
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long  


【说明】
在窗口列表中寻找与指定条件相符的第一个子窗口 

【返回值】
Long,找到的窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError

实现平面工具栏上 2006-9-18
转到本主题第:[ 1 ]
相关评论

暂无评论

总计0页 [ ]上一页 下一页
发表评论(揪错)
呢称: * 您尚未登陆,请登录
来自: *
内容:
 

(为防止非法信息,您的言论提交后需要审核才能正常显示)

文学
精品文萃 情感天地 言情小说
网络小说 玄幻小说 悬疑恐怖
武侠小说 古典品谈 外国名著
儿童文学 会员原创 学习园地
杂谈其它
娱乐
爆笑网文 星座占卜 影音动漫
娱乐新闻 影视剧情
诗词
青竹诗歌 个人诗集 宋词雅赏
全唐诗录
新闻
国际新闻 国内新闻 科技新闻
体育新闻
图片
图文专区 艺术长廊 桌面壁纸
精品素材 像素图片
漫画
单幅漫画 爆笑四格 连环漫画
电脑
电脑入门 图形图像 编程开发
游戏
我爱Q宠 最新攻略 最新秘籍
游戏新闻 技巧心得
经济
帕格节电 财经资讯 股市证券
生活
百科知识 外语学院 潮流时尚
健康医疗 宠物花卉 汽车地带
行走天下
美食
面食甜点 家常菜品 药膳食疗
美食天下 烹饪技巧 松辽风味
燕京风味 巴蜀风味 滇黔风味
赣江风味 徽皖风味 闽台风味
齐鲁风味 中州风味 岭南风味
荆楚风味 三晋风味 淞沪风味
苏扬风味 潇湘风味 钱塘风味
民族风味 素斋仿荤
营销
管理杂谈 谈经论道 培训激励
经营战略 职场生涯 公关交际
关于我们版权声明本站导航友情连结作品演示 TOP↑
本论坛言论纯属发表者个人意见,与£月影社区£立场无关。
禁止发布任何色情/政治/反动相关信息让我们共同来营造一个属于我们的梦幻家园
Copyright ©2001-2006 MoonShadow. All rights reserved.  Version 4.0  Licence 2006.4.2
建站天数:6129天 本站基于ASP+JS构建,完全自主开发,版权归属月影社区 管理员QQ:23165062 Time:101ms