如何用vb6建立带光栅的菜单
2008-04-09 04:40:02来源:互联网 阅读 ()
![新老客户大回馈,云服务器低至5折](/info/templets/default/images/760x90_D.jpg)
(一)编程原理;
由于windows自身并未提供这项接口函数,因此我们必须从分析菜单的实质入手,我认为任何菜单实质上是一个没有标题栏的窗体,菜单项目是某些控件(如标签控件),通过监测鼠标是否移动到控件上而相应的改变控件的背景色和填充色,从而达到相应的目的,当然另外一项关键是如何制造出那一个倒立着的写着“windows98”字样的标题,这需要我们调用复杂的系统函数来实现。
(二)编程实践;
(第一步)建立工程;
(1)运行vb6,建立一个标准exe工程,添加命名为form1的窗体,放上一个command控件“command1”,caption=“开始”,调整到适当的位置,双击窗体,写入以下代码:
Private
Sub Command1_Click()
frmTest.Show ‘当开始按钮被点击时激活超级菜单
End Sub
Private Sub Form_Load()
Me.left = (Screen.Width - Me.Width) / 2
Me.tOp
= (Screen.Height - Me.Height) / 2 ‘窗体位置居中
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single,
Y As Single)
If frmTest.Visible = True Then
Unload frmTest
End If
‘当鼠标离开菜单时卸载菜单
End Sub
Private Sub Form_Unload(Cancel As Integer)
End ‘结束程序
End Sub
(2)
添加命名为frmtest的窗体,添加一个picturebox控件,命名为piclogo,采用默认值就行了,添加控件数组label1(1--6)(读者可以根据自己的需要添加),caption=“菜单项目”,添加一个image控件,将它的图片设计为自己喜欢的图片,移动窗体和图片到适当位置,双击窗体,写入以下代码:
Option
Explicit
Dim cL As New cLogo ‘引用类模块
Private Sub Form_Load()
Me.left = Form1.left
Me.tOp = Form1.tOp -
Form1.Height ‘指定窗体位置
Me.Caption = App.Title ‘窗体标题
cL.DrawingObject =
picLogo ‘指定piclogo为载体
cL.Caption = " 欢迎使用国产软件! --zouhero 2000
"‘文本
cL.StartColor = vbBlue ‘前段颜色-蓝色
cL.EndColor = vbRed ‘后段颜色-红色
E
Sub
Private Sub Form_Resize()
On Error Resume Next
picLogo.Height =
Me.ScaleHeight
cL.Draw
End Sub
Private Sub Label1_Click(Index As Integer)
MsgBox "你选择了菜单" & Index,
vbExclamation
在这里添加你的相应代码
End Sub
Private Sub Label1_MouseMove(Index As Integer, Button As Integer, Shift As
Integer, X As Single, Y As Single)
Dim i As Integer
‘当鼠标移动标签控件时,前景色变成白色
,背景色变成蓝色
Label1(Index).BackColor =
vbBlue
Label1(Index).ForeColor = &HFFFFFF
For i = 0 To Label1.Count -
1 ‘其他标签颜色恢复原状
If i = Index Then GoTo aa
Label1(i).BackColor =
vbButtonFace
Label1(i).ForeColor = &H0
aa:
Next
‘恢复除选定标签外的所有标签的前景色和背景色
End Sub
‘代码结束
(3)选择“工程”菜单-“添加类模块”,命名为clogo,写入以下代码:
Option Explicit 以下是令人眼花缭乱的win
api引用
Private Type RECT
left As Long
tOp As Long
Right As Long
Bottom
As Long
End Type
Private Declare Function FillRect Lib "user32" (ByVal hDC As Long, lpRect As RECT, ByVal hBrush As Long) As Long
Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, ByVal nIndex As Long) As Long
Private Const LOGPIXELSX = 88
Private Const LOGPIXELSY = 90
Private Declare Function MulDiv Lib "kernel32" (ByVal nNumber As Long, ByVal nNumerator As Long, ByVal nDenominator As Long) As Long
Private Const LF_FACESIZE = 32
Private Type LOGFONT
lfHeight As Long
lfWidth As Long
lfEscapement
As Long
lfOrientation As Long
lfWeight As Long
lfItalic As
Byte
lfUnderline As Byte
lfStrikeOut As Byte
lfCharSet As
Byte
lfOutPrecision As Byte
lfClipPrecision As Byte
lfQuality As
Byte
lfPitchAndFamily As Byte
lfFaceName(LF_FACESIZE) As Byte
End
Type
Private Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal
hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32"
(ByVal hObject As Long) As Long
Private Const FW_NORMAL = 400
Private Const FW_BOLD = 700
Private Const
FF_DONTCARE = 0
Private Const DEFAULT_QUALITY = 0
Private Const
DEFAULT_PITCH = 0
Private Const DEFAULT_CHARSET = 1
Private Declare Function OleTranslateColor Lib "OLEPRO32.DLL" (ByVal OLE_COLOR As Long, ByVal HPALETTE As Long, pccolorref As Long) As Long
Private Const CLR_INVALID = -1
Private m_picThis As PictureBox
Private
m_sCaption As String
Private m_bRGBStart(1 To 3) As Integer
Private
m_oStartColor As OLE_COLOR
Private m_bRGBEnd(1 To 3) As Integer
Private
m_oEndColor As OLE_COLOR ’api声明结束
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:如何设计图象切换效果
下一篇:自动选择 Text 的内容
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash