第13讲VB界面设计
- 格式:ppt
- 大小:744.50 KB
- 文档页数:46
VB界面设计现在越来越多的软件都有了很Cool的2D造型,什么×××× XP啦,×××× 2002之类的,看来争夺软件霸权的地位,2D界面是必不可少的,有很多人认为Visual Basic语言的先天不足导致它不能够很灵活的改变界面,让俺们来看看究竟吧。
如果大家用过《Windows优化大师》,肯定会被它的界面所倾倒,其实利用ActiveSkin 就可以办到,甚至更爽,但是如果要做的共享软件只是一个文件,在加上几个OCX累赘,似乎很是不爽,看看VB是怎么利用别的东东来实现的吧。
首先新建一个EXE工程,再在窗体上拖几个Label控件,看看Label 的强大功能吧,原理就是利用Label来模拟一个按钮,但是首先要将Label控件的属性要调一下,Name:LblBtn,BorderStyle: 1,Appearance: 0,Alignment: 2,这样一个按钮的雏形就已经出来了,如果工程量很大,可以将多个Label控件的Name 属性设为一样的,对于按钮的识别就要靠识别Index属性了,为了方便起见,在进入到代码编辑窗口,输入以下代码:Private Const LBL_BACK_COLOR =&HE0E0E0 ’正常时Label控件的背景色Private Const LBL_WHEN_MOUSE_MOVE =&HC0C0C0 ’鼠标移动时Label的背景色Private Const LBL_WHEN_MOUSE_DOWN =&H808080 ’鼠标按下时Label的背景色再在Form的Load事件中输入以下内容Private Sub Form_Load()Dim Count As IntegerFor Count =0 To 3 ’请将此出的3换成你的LblBtn数量的个数-1LblBtn(Count).BackColor=LBL_BACK_COLOR ’初始化LblBtn的背景Next CountEnd Sub然后再在LblBtn的MouseMove和MouseDown事件中来搞定剩余部分:Private Sub LblBtn_MouseDown(Index As Integer,Button As Integer,Shift As Integer,X As Single,Y As Single)’当鼠标按在LblBtn上时LblBtn(Index).BackColor =LBL_WHEN_MOUSE_DOWN ’临时改变LblBtn背景颜色End SubPrivate Sub LblBtn_MouseMove(Index As Integer,Button As Integer,Shift As Integer,X As Single,Y As Single)’鼠标在LblBtn上面移动时触发该事件Dim Count As IntegerDoEvents ’暂时将系统控制权教给系统If Button T hen Exit Sub ’如果按钮被按下就退出该过程For Count =0 To 3If Count <> Index Then ’如果按下的不是其它按钮LblBtn(Index).BackColor =LBL_BACK_COLOR ’将背景设为正常ElseLblBtn(Index).BackColor =LBL_WHEN_MOUSE_MOVE ’将背景设为鼠标移动的背景End IfNext CountEnd SubPrivate Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)Dim Count As IntegerDoEventsFor Count=0 To 3LblBtn(Count).BackColor=LBL_BACKCOLOR ’恢复背景Next CountEnd本来利用Windows的消息系统来完成这一“艰巨”的任务最简单,可问题就来了,Label 控件没有窗口句柄怎么办?可是此问题与题无关,写了会有骗稿费之:)OK,Label控件就讲到这里,在来说说TextBox控件,各位看关恐怕看惯了白颜色的背景,那么就换换颜色以养养俺们那和绵羊一样的眼睛(为什么说绵羊?俺也不知道),可是VB提供的RGB函数弄出来的颜色不是怎么好看,这里俺来教大家一个小Tip,RGB函数的Red,Green,Blue这三个参数若一样,则产生的颜色是灰度,当然越接近白颜色越好,但也不能让各位看不出来,俺建议TextBox的背景为RGB(235,235,235),各位还是实战一下,将一个TextBox拖到窗体上,属性设置如下Appearance 0BorderStyle 1MutilLine True千万不要设置ScrollBars属性,否则会影响效果在Form的Load事件中初始化TextBoxDim bkColor As LongPrivate Sub Form_Load()bkColor=RGB(235,235,235)Text1.BackColor=bkColorEnd Sub在Form和Text1的MouseMove事件中:Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)Text1.BorderStyle =0End SubPrivate Sub Text1_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)DoEventsText1.BorderStyle =1End Sub在按下F5试试是不是很Cool?可能各位看关玩过石器时代,一定会对里面的TextBox的效果感到很爽,VB还不是可以做到,有焦点的控件可以使用SetFocus方法来为其设置焦点,可是一个窗体上如果控件太多了,一个一个的用SetFocus是不是太傻了?这一节的主角就是--------API函数,首先声明:Private Type POINTAPIx As Longy As LongEnd TypePrivate Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI)As LongPrivate Declare Function WindowFromPoint Lib "user32" Alias "WindowFromPoint" (ByVal xPoint As Long,ByVal yPoint As Long)As LongPrivate Declare Function SetFocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long)As Long但是这里的SetFocus会和控件的SetFocus会搞混淆,改改吧,Private Declare Function nSetFocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long)As Long只要Alias指向的接口是对的前面的函数名称简直就是摆设,在建立一个过程:Public Function sSetFocus()As LongDim CPos As POINTAPI,Successfull As Boolean,hWnd As LongDoEventsSuccessfull =GetCursorPos(CPos)If Not Successfull Then Exit Sub ’如果未成功则退出该过程hWnd=WindowFromPoint(CPos.x,CPos.y)sSetFocus=nSetFocus(hWnd)End Sub在窗体上放一个Timer控件,Interval 属性设为100,就是0.1秒,在Timer1控件的Timer 事件中填入sSetFocus,在运行一下看看,效果怎么样?可是有的先生小姐要问了,TextBox难道就不能用ScrollBar吗?非也非也,选工程->部件->Microsoft Windows Common Controls-2 6.0 (SP3)就是你的答案,至于卷动TextBox 就去研究SendMessage函数吧,否则又有骗稿费之嫌,如果想作绿色软件,不想用控件,可以用俺前面讲到的Label控件,利用字体Webdings 来模拟ScrollBar,需要注意的是,如果模拟ScrollBar,上下左右箭头分别是5,6,3,4,别忘了把字体设为Webdings再来讲讲窗体的美化,其实将BorderStyle属性设为0就是很好的2D美化;)可是,这样一来,问题又来了,怎么办?凡事都要请API来帮忙,这里需要两个API,一下是该API 的声明:Public Declare Function ReleaseCapture Lib "user32" Alias "ReleaseCapture" ()As Long 注释:这个API是用来解下鼠标的追踪器,关于他的过多用法以及详细介绍可以写信向俺咨询,还有Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long,ByVal wMsg As Long,ByVal wParam As Long,lParam As Any)As Long’这个该不要俺多介绍了吧Public Const HTCAPTION =2 ’代表窗体的标题区Public Const WM_NCLBUTTONDOWN =&HA1 ’表示非工作区左键按下原理很简单,卸下鼠标追踪器后向Form发送一个移动窗体的消息,其实做到这一点的方法很多,但俺个人认为这一种最简单,添加一个过程:Public Sub MoveForm(hWnd As Long)DoEventsReleaseCaptureSendMessage hWnd,WM_NCLBUTTONDOWN,HTCAPTION,0&End Sub在Form的MouseMove事件中:Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)If Button=vbLeftButt on Then MoveForm hWnd’如果按下鼠标左键就移动窗体End Sub台下的这位小姐又纳闷了,可是光秃秃的窗体没有了标题栏也不好看,俺要向这为小姐推荐俺的东东-ActiveX控件,ToolSign,需要的人可以写信给俺联系,该控件需要在代码编辑区域内添加一下代码:’一下声明是用在ToolSign的AutoQuit属性的Public Const EXIT_FORCE =2 ’注意,在VB中运行的时候如果选用此退出方式,VB也会退出Public Const EXIT_MESSAGE =1 ’由操作系统发送关闭消息Public Const EXIT_CUSTOM =Not (EXIT_FORCE Or EXIT_MESSAGE)’自定义将其注册后在部件栏中把e-Dogkid Studio Tools Sign打钩,添加到工具箱中,双击加入到窗体中,在Form的Load事件中添加一下初始化代码:Private Sub Form_Load()With Sign1.AutoQuit =EXIT_CUSTOM.ParentsHWND =hWnd ’填了此属性可以直接用ToolSign来移动窗体而不需要前面的代码End WithEnd SubSign1的Click事件Private Sub Sign1_Click()End ’关闭程序End Sub在Form的Resize事件中添加一下代码:Private Sub Form_Resize()Sign1.Width =WidthEnd Sub如果想让窗体可以改变大小,可以修改一下属性Caption ""BorderStyle 2或5ControlBox False实际情况如图不知道各位看关见过爆炸试的窗体没有?,没有见过可以从俺要另外一个俺自己的ActiveX DLL,我的那个东东其实是给我的Software作运行库的,各位若不嫌弃,可以用用,注册后在工程->引用->e-Dogkid Runtime Library然后在窗体Load事件中输入:Private Sub Form_Load()Dim System As e_Dogkid_Runtime_Library.SystemSet System =New e_Dogkid_Runtime_Library.SystemShowSystem.BoomIt hDC,60,Width,Height,Left,TopSet System =NothingEnd Sub。
vb界面设计界面设计☆本章学习内容用户界面是一个应用程序最重要的部分,它是最直接的现实世界。
对用户而言,界面就是应用程序,它们感觉不到幕后正在执行的代码。
不论花多少时间和精力来编制和优化代码,应用程序的可用性仍然依赖于界面。
8.1 多文档界面、8.2 工具栏和状态栏、8.3 RichTextBox控件、8.4 应用程序向导8.1 多文档界面下一节多文档界面是指,一个应用程序,它提供一个桌面上的父窗口,而该窗口包含有其他该应用程序中打开的子窗口。
当该父窗口最小化或关闭时,它所包含的所有子窗口都最小化或关闭。
多文档界面 (MDI) 允许创建在单个容器窗体中包含多个窗体的应用程序。
象 Microsoft Excel 与 Microsoft Word for Windows 这样的应用程序就具有多文档界面。
MDI 应用程序允许用户同时显示多个文档,每个文档显示在它自己的窗口中。
文档或子窗口被包含在父窗口中,父窗口为应用程序中所有的子窗口提供工作空间。
例如:Microsoft Excel 允许创建并显示不同样式的多文档窗口。
每个子窗口都被限制在 Excel 父窗口的区域之内。
当最小化 Excel 时,所有的文档窗口也被最小化,只有父窗口的图标显示在任务栏中。
子窗体就是 MDIChild 属性设置为 True 的普通窗体。
一个应用程序可以包含许多相似或者不同样式的 MDI 子窗体。
在运行时,子窗体显示在 MDI 父窗体工作空间之内(其区域在父窗体边框以内及标题与菜单栏之下)。
当子窗体最小化时,它的图标显示在 MDI 窗体的工作空间之内,而不是在任务栏中,如图 8.1 所示。
图 8.1 显示在 MDI 窗体工作空间之内的子窗体注意一个应用程序也可以包括标准的、不是包含在 MDI 窗体之内的非MDI 窗体。
MDI 应用程序中标准窗体的典型用法是显示模式的对话框。
MDI窗体相似于具有一个限制条件的普通窗体。
除非控件具有 Align 属性(如 PictureBox 控件)或者具有不可见界面(如 Timer 控件),否则不能将控件直接放置在 MDI 窗体上。
VB应用程序界面设计VB应用程序界面设计是指使用Visual Basic开发工具创建应用程序时,对应用程序界面进行设计的过程。
良好的应用程序界面设计可以提高用户体验,增加用户的使用舒适度和工作效率。
下面将从功能布局、色彩搭配、图标设计、交互设计等方面详细介绍VB应用程序界面设计的要点。
首先,功能布局是VB应用程序界面设计的基础。
一个好的界面设计应该合理地组织和布置各个功能模块,使得用户能够快速、方便地找到需要的功能。
在进行功能布局时,应该考虑到各个功能的重要性和使用频率,将常用功能放置在突出醒目的位置,以方便用户的操作。
同时,应尽量避免过多的功能模块和按钮,以免给用户造成使用困扰。
其次,色彩搭配是VB应用程序界面设计的关键。
色彩对于界面的美观度和视觉体验非常重要。
在选择色彩搭配时,应选择温和、和谐的颜色,避免过于鲜艳刺眼的颜色。
同时,还应注意色彩对比度的选择,以确保用户能够清晰地看到界面上的各个元素。
对于不同的功能模块,也可以使用不同的颜色来区分,以便用户在界面上迅速辨识。
再次,图标设计是VB应用程序界面设计的亮点。
合理使用图标可以提高用户的使用效率和工作体验。
图标设计应遵循简约、直观、易懂的原则,尽量避免繁琐和复杂的图案。
同时,为了方便用户直观地了解图标的含义,应使用常见的、易识别的图标,如文件夹、打印、保存等。
图标的颜色也应与界面整体色彩搭配一致,以保持统一的美观度。
最后,交互设计是VB应用程序界面设计的核心。
好的交互设计可以提高用户的满意度和工作效率。
在进行交互设计时,应注重用户的使用习惯和习惯。
例如,将常用的功能按钮放置在易于点击的位置,设置适当的快捷键,使用直观的提示信息等。
同时,还应注意界面的反应速度,尽量避免耗时操作和界面卡顿,以增加用户的使用流畅度。
总之,VB应用程序界面设计是一个综合考量各个因素的过程,需要综合考虑功能布局、色彩搭配、图标设计、交互设计等多个因素,以实现良好的用户体验和工作效率。