VB6实例.docx
《VB6实例.docx》由会员分享,可在线阅读,更多相关《VB6实例.docx(68页珍藏版)》请在冰豆网上搜索。
VB6实例
VB6如何在托盘中写入应用程序图标
1、新建立一个VB6工程,将Form1的ShowInTaskBar属性设置为False
2、菜单:
工程--添加模块按“打开”这样就添加了一个新模块,名为Module1,保存为Module1.bas
3、在Module1中写下如下代码:
OptionExplicit
PublicConstMAX_TOOLTIPAsInteger=64
PublicConstNIF_ICON=&H2
PublicConstNIF_MESSAGE=&H1
PublicConstNIF_TIP=&H4
PublicConstNIM_ADD=&H0
PublicConstNIM_DELETE=&H2
PublicConstWM_MOUSEMOVE=&H200
PublicConstWM_LBUTTONDOWN=&H201
PublicConstWM_LBUTTONUP=&H202
PublicConstWM_LBUTTONDBLCLK=&H203
PublicConstWM_RBUTTONDOWN=&H204
PublicConstWM_RBUTTONUP=&H205
PublicConstWM_RBUTTONDBLCLK=&H206
PublicConstSW_RESTORE=9
PublicConstSW_HIDE=0
PublicnfIconDataAsNOTIFYICONDATA
PublicTypeNOTIFYICONDATA
cbSizeAsLong
hWndAsLong
uIDAsLong
uFlagsAsLong
uCallbackMessageAsLong
hIconAsLong
szTipAsString*MAX_TOOLTIP
EndType
PublicDeclareFunctionShowWindowLib"user32"(ByValhWndAsLong,ByValnCmdShowAsLong)AsLong
PublicDeclareFunctionShell_NotifyIconLib"shell32.dll"Alias"Shell_NotifyIconA"(ByValdwMessageAsLong,lpDataAsNOTIFYICONDATA)AsLong
4、在Form1的Load事件中写下如下代码:
PrivateSubForm_Load()
'以下把程序放入SystemTray====================================SystemTrayBegin
WithnfIconData
.hWnd=Me.hWnd
.uID=Me.Icon
.uFlags=NIF_ICONOrNIF_MESSAGEOrNIF_TIP
.uCallbackMessage=WM_MOUSEMOVE
.hIcon=Me.Icon.Handle
'定义鼠标移动到托盘上时显示的Tip
.szTip=App.Title+"(版本"&App.Major&"."&App.Minor&"."&App.Revision&")"&vbNullChar
.cbSize=Len(nfIconData)
EndWith
CallShell_NotifyIcon(NIM_ADD,nfIconData)
'=============================================================SystemTrayEnd
Me.Hide
EndSub
5、在Form1的QueryUnload事件中写入如下代码:
PrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)
CallShell_NotifyIcon(NIM_DELETE,nfIconData)
EndSub
6、在Form1的MouseMove事件中写下如下代码:
PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
DimlMsgAsSingle
lMsg=X/Screen.TwipsPerPixelX
SelectCaselMsg
CaseWM_LBUTTONUP
'MsgBox"请用鼠标右键点击图标!
",vbInformation,"实时播音专家"
'单击左键,显示窗体
ShowWindowMe.hWnd,SW_RESTORE
'下面两句的目的是把窗口显示在窗口最顶层
'Me.Show
'Me.SetFocus
''CaseWM_RBUTTONUP
''PopupMenuMenuTray'如果是在系统Tray图标上点右键,则弹出菜单MenuTray
''CaseWM_MOUSEMOVE
''CaseWM_LBUTTONDOWN
''CaseWM_LBUTTONDBLCLK
''CaseWM_RBUTTONDOWN
''CaseWM_RBUTTONDBLCLK
''CaseElse
EndSelect
EndSub
7、现在将程序保存起来运行看看系统托盘处是否增加了一个本工程的图标。
单击此图标,Form1就自动弹出来了。
将个性化进行到底VB中打造个性进度条
2005-03-2613:
28作者:
伍学慧出处:
天极网责任编辑:
方舟
控件下载
简介
VB的第三方控件ccrpProgressBar是一个进度条的控件,可以有多种形态供选择。
比起VB中自带的进度条控件ProgressBar更有个性。
使用实例:
用ccrpProgressBar制作各式各样的进度条
在VB中自带了一个进度条控件ProgressBar,但功能简单。
我向大家推荐一个VB的第三方进度条控件ccrpProgressBar。
该控件功能强大,有多种形态供选择,而且只需要简单的设置控件的属性就能实现,非常的好用。
下面通过一个例子向大家介绍该控件的用法。
(1)加载控件
启动VisualBasic6.0,创建一个工程并保存为"工程1.vbp",同时产生一个名为"Form1"的窗口。
在工具箱的空白处单击鼠标右键,从弹出的快捷菜单中启动"部件"窗口,如图1所示。
图1
点击"浏览"按钮,从存放ccrpProgressBar控件的文件夹中找到ccrpprg.ocx文件。
点击"应用"后ccrpProgressBar控件就添加到工具箱中。
如图2。
图2
(2)设计窗体和控件
向窗体中添加9个ccrpProgressBar控件和一个Timer控件。
如图3。
图3
Timer控件属性页的设置如图4所示。
Interval的值设置为100,与ccrpProgressBar控件的默认值一致。
Enabled设置为False。
图4
(3)ccrpProgressBar控件的主要属性
·Max:
最大值。
默认100。
·Min:
最小值。
默认0。
·Value:
进度条的当前值。
·Alignment:
显示表示进度的文字的位置。
分别为vbCenter(中间),vbLeftJustify(左边),vbRightJustify(右边)。
·Appearance:
进度条的3种外观。
分别为prgFlat(平面),prg3D(立体)prg3Draised(立体凸起)。
·BackColor:
进度条的背景色。
·FillColor:
进度条的颜色。
·ForeColor:
表示进度文字的字体颜色。
·Picture:
进度条可用图片表示进度,从这里选择需要的图片。
·Shape:
进度条的形状。
有prgRectangle(默认),prgEllipse和prgRoundedRect三种。
·Smooth:
是否平滑显示进度。
True为平滑显示进度。
·Vertical:
是否垂直显示进度条。
True为垂直显示。
·Style:
进度条的风格。
当选ChkGraphical时为用图片表示进度。
·AutoCaption:
表示进度的"文字提示"所采用的表现形式。
CcrpPercentage为百分比的形式,ccrpValueOfMax为类似1of100的表现形式。
Value为数字的表现形式。
(4)本例中ccrpProgressBar控件属性的具体设置
本例中共使用了9个ccrpProgressBar控件,每个ccrpProgressBar控件的具体设置如下:
1.CcrpProgressBar1:
保持属性各项不变。
2.CcrpProgressBar2:
Appearance的值设置为prg3D(表示用立体外观)。
3.CcrpProgressBar3:
Appearance的值设置为prg3Draised(立体凸起),AutoCaption设为ccrpPercentage(百分比的形式表示进度),Alignment设为vbLeftJustify(表示进度的文字靠左)。
4.CcrpProgressBar4:
BorderStyle设置为ccrpFixedSingle,AutoCaption设为ccrpPercentage(百分比的形式表示进度),Alignment设置为vbCenter(表示进度的文字在中间)
5.CcrpProgressBar5:
Style设置为chkGraphical(用图片来表示进度)。
单击"Picture"属性,选择你准备好的图片。
同样,AutoCaption也设为百分比的形式表示进度,不过这次Alignment的值设置为vbRightJustify(进度文字靠右)。
6.CcrpProgressBar6:
Shape设置为prgEllipse(椭圆型),AutoCaption设为ccrpValueOfMax(文字以类似1of100的表现形式)
7.CcrpProgressBar7:
Shape设置为prgRoundedRect(圆角矩形),AutoCaption设为ccrpValue(数字形式)。
8.CcrpProgressBar8:
Vertical设置为True,表示垂直显示进度条。
Smooth设置为True,表示平滑显示进度。
9.CcrpProgressBar9:
Vertical属性同8的设置,不过这回给它加上百分比显示,AutoCaption设为ccrpPercentage。
然后再分别调整好9个CcrpProgressBar控件的FillColor和ForeColor属性,搭配好颜色。
使界面更协调。
(5)编写代码
设置好控件的属性后,在程序中加入以下代码,完成进度条的功能。
DimiAsInteger
PrivateSubForm_Load()
Timer1.Enabled=True
'2个垂直显示的进度条的位置
WithccrpProgressBar8
.Left=5280
.Top=360
.Height=3800
.Width=396
EndWith
WithccrpProgressBar9
.Left=6200
.Top=360
.Height=3800
.Width=396
EndWith
EndSub
PrivateSubTimer1_Timer()
Ifi=100Then
End
EndIf
ccrpProgressBar1.Value=i
ccrpProgressBar2.Value=i
ccrpProgressBar3.Value=i
ccrpProgressBar4.Value=i
ccrpProgressBar5.Value=i
ccrpProgressBar6.Value=i
ccrpProgressBar7.Value=i
ccrpProgressBar8.Value=i
ccrpProgressBar9.Value=i
i=i+1'变量i自增
EndSub
运行程序,运行中的效果如图5所示。
用VB打造“超酷”个性化菜单
众所周知,MSOffice2003推出已经有一段时间了,但我们依然不会忘记OfficeXP刚刚推出时其令人耳目一新的菜单给我们留下的深刻印象。
突起的悬浮式图标,不同寻常的菜单项填充方式,不仅让办公一族们赞不绝口,更让广大的程序员和编程爱好者对这种风格的菜单的制作产生了浓厚的兴趣。
所以,在这篇文章里,我们就来好好地研究研究用VB怎么制作这种风格的菜单,在文章的最后,我将给出源代码的下载地址。
事实上,在了解其原理以后,不论是用VB、VC还是Delphi,都能够制作出XP风格的菜单。
不仅如此,我们还可以制作出更加充满个性的另类风格的菜单,比如3D立体风格、渐变风格、多彩风格等等。
只有想不到的,没有做不到的。
Followme!
现在,我想有必要说一说我们现在要做的事情。
事实上,我们只要做一个菜单类就行了。
但谁都会明白,只做一个菜单类是不够的,我们需要一个程序,或者更详细的说,是一个窗体,来测试我们的菜单类。
在我个人的开发过程中,我是先写的菜单类,后写的测试窗体,但为了让大家先领略一下写好的菜单类在应用时是多么的方便,所以让我们先来看看测试窗体:
(1)打开VB,新建“标准EXE”工程。
(2)--下面是窗体的控件:
组件名称
属性
值
Form
Name
frmMain
Caption
菜单例子
Frame
Name
fraStyle
Caption
菜单风格
Label
Name
lblHelp
Caption
在窗体空白处单击鼠标右键
OptionButton
Name
opnStyle
Caption
Window标准
Index
0
OptionButton
Name
opnStyle
Caption
XP风格
Index
1
OptionButton
Name
opnStyle
Caption
3D立体风格
Index
2
OptionButton
Name
opnStyle
Caption
渐变风格
Index
3
OptionButton
Name
opnStyle
Caption
多彩风格
Index
4
其实就是在窗体上添加了一个Frame,然后在Frame里添加OptionButton控件数组,用来设置菜单风格,还有一个Label,上面只显示一行提示文字,非常简单。
(3)窗体代码:
OptionExplicit
PrivateDeclareFunctionGetCursorPosLib"user32.dll"(lpPointAsPOINTAPI)AsLong
PrivateTypePOINTAPI
XAsLong
YAsLong
EndType
DimmenuAscMenu
PrivateSubForm_Load()
'初始化菜单并添加菜单项
Setmenu=NewcMenu
menu.CreateMenu
menu.AddItem"open",LoadPicture("images\open.ico"),"打开",MIT_STRING
menu.AddItem"save",LoadPicture("images\save.ico"),"保存",MIT_STRING
menu.AddItem"print",LoadPicture("images\print.ico"),"打印",MIT_STRING
menu.AddItem"find",LoadPicture("images\find.ico"),"查找",MIT_STRING
menu.AddItem"sep1",LoadPicture(),"",MIT_SEPARATOR
menu.AddItem"undo",LoadPicture("images\undo.ico"),"撤消",MIT_STRING
menu.AddItem"redo",LoadPicture("images\redo.ico"),"重复",MIT_STRING
menu.AddItem"sep2",LoadPicture(),"",MIT_SEPARATOR
menu.AddItem"cut",LoadPicture("images\cut.ico"),"剪切",MIT_STRING
menu.AddItem"copy",LoadPicture("images\copy.ico"),"复制",MIT_STRING
menu.AddItem"paste",LoadPicture("images\paste.ico"),"粘贴",MIT_STRING
menu.AddItem"sep3",LoadPicture(),"",MIT_SEPARATOR
menu.AddItem"check",LoadPicture("images\check.ico"),"一个CheckBox",MIT_CHECKBOX
menu.AddItem"exit",LoadPicture("images\exit.ico"),"退出",MIT_STRING
EndSub
PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
'单击鼠标右建弹出菜单
IfButton=vbRightButtonThen
DimposAsPOINTAPI
GetCursorPospos
menu.PopupMenupos.X,pos.Y,POPUP_LEFTALIGNOrPOPUP_TOPALIGN
EndIf
EndSub
PrivateSubForm_Unload(CancelAsInteger)
'释放资源,卸载窗体
Setmenu=Nothing
DimfrmAsForm
ForEachfrmInForms
Unloadfrm
Next
EndSub
PrivateSubopnStyle_Click(IndexAsInteger)
'设置菜单风格
SelectCaseIndex
Case0'Windows标准
menu.Style=STYLE_WINDOWS
Case1'XP风格
menu.Style=STYLE_XP
Case2'3D立体风格
menu.Style=STYLE_3D
Case3'渐变风格
menu.Style=STYLE_SHADE
Case4'多彩风格
menu.Style=STYLE_COLORFUL
EndSelect
EndSub
代码中创建了一个cMenu类的对象,我们的编程重点将会放在cMenu类上,上面的代码只是简单地调用cMenu。
在后面的文章中,我们会看到其实cMenu有多达30个方法和属性供我们调用,它的Style属性只提供了5种内置风格,在实际应用中,我们可以利用cMenu类提供的方法和属性制作出各种各样风格的菜单,为自己的程序锦上添花。
(4)运行结果:
图1
图2
图3
图4
图5
下面我们来创建接收消息的窗体:
打开上面建好的工程,添加一个窗体,并将其名称设置为frmMenu(注意:
这一步是必须的)。
图5菜单左边那个黑底色的附加条,为了方便,将frmMenu的Picture属性设置成图5。
到此,这个窗体就算OK了!
对了,就这样,因为这个窗体仅仅是为了处理消息和存储那个黑底色的风格条,我们将会对它进行子类处理,处理消息的代码全部都放在了将在下面详细介绍的标准模块中。
接下来添加一个类模块,并将其名称设置为cMenu,代码如下:
'***************************************************************
'*本类模块是一个菜单类,提供了各种样式的菜单的制作方案
'*
'*版权:
LPP软件工作室
'*作者:
卢培培(goodname008)
'*(*******复制请保留以上信息*******)
'*********************************************************************
OptionExplicit
PrivateDeclareFunctionTrackPopupMenuLib"user32"(ByValhMenuAsLong,ByValwFlagsAsLong,ByValxAsLong,ByValyAsLong,ByValnReservedAsLong,ByValhwndAsLong,lprcAsAny)AsLong
PublicEnumMenuUserStyle'菜单总体风格
STYLE_WINDOWS
STYLE_XP
STYLE_SHADE
STYLE_3D
STYLE_COLORFUL
EndEnum
PublicEnumMenuSeparatorStyle'菜单分隔条风格
MSS_SOLID
MSS_DASH
MSS_DOT
MSS_DASDOT
MSS_DASHDOTDOT
MSS