如何实现那种流行的平面按钮
编号:QA000029 建立日期: 1998年10月1日 最后修改日期:2000年10月15日 所属类别: Visual Basic - 第三方控制 Visual Basic - Windows 9x控件 Visual Basic - 标准控件
张立斌: 时下流行的那种按钮(平时是平面,鼠标移上去后突起,按下去是凹陷状,移开后又成为平面)在VB5中是如何实现的? 回答: 如果你想要在单独的按钮上实现这种效果,可以使用微软提供的一个叫Soft Button的例子,你可以从http://msdn.microsoft.com/vbasic/downloads/samples.asp免费下载,也可以下载 SoftBttn.exe。 安装这个例子之后你可以将其编译成ocx,然后在自己的程序中使用。这个例子提供了完整的源程序,你可以详细地研究其工作原理。你也可以下载类似的免费控件 FlashButtonv2.zip。 如果你想使自己的工具条也变成这种风格,可以从微软的站点上下载免费的控件CoolBar,下载地址是:http://divmium.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")。 此问题由李海回答。 本文来源:http://blog.csdn.net/lanman/archive/2007/08/28/1761821.aspx
|