首页 >> 读书频道 >> 电脑 >> 实现平面工具栏上
 
· 用API制作图形窗体
· 本章小结
· VB托盘程序详解中
· 有声样式单
· VB托盘程序详解上
· SENDMESSAGE函
· 计数器和自动编号
· 向控件发送系统热键
· SENDMESSAGE函
· 格式化页面
· 在VB中终止Win9X
· CSS2中有哪些新特点?
 
· 电视剧《刁蛮公主》下载和
· 美容养颜手册
· 加油金顺剧情分集介绍完整
· 红楼梦:120回全本[清
· 素质教育在美国
· 全唐诗卷四十六
· 韩剧《布拉格恋人》剧情介
· 夜航船[作者:明·张岱]
· 局外人[作者:韩·可爱淘
· 现场流行病学
· 源氏物语[日本:紫式部]
· 武林寓言故事
 
· (出租)中动商场部分及写
· (出租)中动动漫基地&#
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

实现平面工具栏上


查看有无更新版本

关键字:VB 2006-9-18

 

流行软件的工具栏上的按钮是平的按钮,当鼠标移过时才会突起,这种效果采用贴图的方法实现十分麻烦,而利用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声明】 

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

实现平面工具栏上

[ 1 ]
实现平面工具栏上 num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑