如何实现那种流行的平面按钮

如何实现那种流行的平面按钮


编号:QA000029
建立日期: 1998年10月1日 最后修改日期:2000年10月15日
所属类别:

张立斌:
    时下流行的那种按钮(平时是平面,鼠标移上去后突起,按下去是凹陷状,移开后又成为平面)在VB5中是如何实现的?

回答:

    如果你想要在单独的按钮上实现这种效果,可以使用微软提供的一个叫Soft Button的例子,你可以从http://msdn.microsoft.com/vbasic/downloads/samples.asp免费下载,也可以下载SoftBttn.exe。安装这个例子之后你可以将其编译成ocx,然后在自己的程序中使用。这个例子提供了完整的源程序,你可以详细地研究其工作原理。你也可以下载类似的免费控件FlashButtonv2.zip
    如果你想使自己的工具条也变成这种风格,可以从微软的站点上下载免费的控件CoolBar,下载地址是:http://premium.microsoft.com/vbasic/updates/coolbar.asp。(这个控件也包括在VB6中)如果你还没有在微软的站点上注册过,你需要先按照主页上的说明进行免费注册(需要提供合法的VB系列号)。这个控件虽然存在一些缺陷,但总体感觉还可以,它不但支持凹陷/平面效果,还支持船坞式(dockable)效果,也就是允许最终用户调整工具条的布局。如果你只想要凹陷/平面效果,而不需要船坞式效果,那么只要你的Win95系统中的Comctl32.dll的版本号高于4.70,再加上几行简单的VB代码就够了。
    首先建立一个模块(.BAS),输入以下代码:
    Public Const WM_USER = &H400
    Public Const TB_SETSTYLE = WM_USER + 56
    Public Const TB_GETSTYLE = WM_USER + 57
    Public Const TBSTYLE_FLAT = &H800
    Public Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" _
     (ByVal hwnd As Long, _
     ByVal wMsg As Long, _
     ByVal wParam As Long, _
     ByVal lParam As Long) As Long
    Public 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
     然后在窗体中输入以下代码(这里假定你的工具条叫做Toolbar1):
    Private Sub MakeFlat()
     Dim style As Long
     Dim hToolbar As Long
     Dim r As Long
     hToolbar = FindWindowEx(Toolbar1.hwnd, 0&, "ToolbarWindow32", vbNullString)
     style = SendMessageLong(hToolbar, TB_GETSTYLE, 0&, 0&)
     If style And TBSTYLE_FLAT Then
     style = style Xor TBSTYLE_FLAT
     Else: style = style Or TBSTYLE_FLAT
     End If
     r = SendMessageLong(hToolbar, TB_SETSTYLE, 0, style)
     Toolbar1.Refresh
    End Sub
    再在Form_Load过程中调用MakeFlat就行了。
    shawn cao的意见:
    VB6.0中的Toolbar提供了这种功能.(在部件 Microsoft Windows common control 6.0中)。在Form中放置一个Toolbar,然后打开其属性页. 将"通用"页中最后一项"式样"改为"1-tbrFlat", 在该Toolbar上的按钮即为平面按钮。(也可直接改变Toolbar的Style属性为"1-tbrFlat")。

此问题由李海回答。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值