




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2010-11-02 22:45 【转】vb界面美化vb界面如何美化 一、网上搜索VB皮肤控件,一般为了更加美化都是做异性窗体,用图片做背景,然后去掉窗体边框,设置窗体颜色为透明,这个在这里就不详细说,还要加上拖动无边框窗体的代码,这样就可以了 ,至于其他按钮也可以用图片代替下面这个图片是我做的仿酷狗播放器,全是由图片构成的 二、利用做美化界面如果大家用过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 Integer For Count 0 To 3 请将此出的3换成你的LblBtn数量的个数1 LblBtn(Count).BackColorLBL_BACK_COLOR 初始化LblBtn的背景 Next Count End 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 Sub Private Sub LblBtn_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) 鼠标在LblBtn上面移动时触发该事件 Dim Count As Integer DoEvents 暂时将系统控制权教给系统 If Button Then Exit Sub 如果按钮被按下就退出该过程 For Count 0 To 3 If Count Index Then 如果按下的不是其它按钮 LblBtn(Index).BackColor LBL_BACK_COLOR 将背景设为正常 Else LblBtn(Index).BackColor LBL_WHEN_MOUSE_MOVE 将背景设为鼠标移动的背景 End If Next Count End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim Count As Integer DoEvents For Count0 To 3 LblBtn(Count).BackColorLBL_BACKCOLOR 恢复背景 Next Count End 本来利用Windows的消息系统来完成这一“艰巨”的任务最简单,可问题就来了,Label控件没有窗口句柄怎么办?可是此问题与题无关,写了会有骗稿费之:) OK,Label控件就讲到这里,在来说说TextBox控件, 各位看关恐怕看惯了白颜色的背景,那么就换换颜色以养养俺们那和绵羊一样的眼睛(为什么说绵羊?俺也不知道),可是VB提供的RGB函数弄出来的颜色不是怎么好看,这里俺来教大家一个小Tip,RGB函数的Red,Green,Blue这三个参数若一样,则产生的颜色是灰度,当然越接近白颜色越好,但也不能让各位看不出来,俺建议TextBox的背景为RGB(235,235,235),各位还是实战一下,将一个TextBox拖到窗体上,属性设置如下 Appearance 0 BorderStyle 1 MutilLine True 千万不要设置ScrollBars属性,否则会影响效果 在Form的Load事件中初始化TextBox Dim bkColor As Long Private Sub Form_Load() bkColorRGB(235,235,235) Text1.BackColorbkColor End Sub 在Form和Text1的MouseMove事件中: Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Text1.BorderStyle 0 End Sub Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) DoEvents Text1.BorderStyle 1 End Sub 在按下F5试试是不是很Cool? 可能各位看关玩过石器时代,一定会对里面的TextBox的效果感到很爽,VB还不是可以做到,有焦点的控件可以使用SetFocus方法来为其设置焦点,可是一个窗体上如果控件太多了,一个一个的用SetFocus是不是太傻了?这一节的主角就是API函数, 首先声明: Private Type POINTAPI x As Long y As Long End Type Private Declare Function GetCursorPos Lib user32 Alias GetCursorPos (lpPoint As POINTAPI) As Long Private Declare Function WindowFromPoint Lib user32 Alias WindowFromPoint (ByVal xPoint As Long, ByVal yPoint As Long) As Long Private 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 Long Dim CPos As POINTAPI,Successfull As Boolean,hWnd As Long DoEvents Successfull GetCursorPos(CPos) If Not Successfull Then Exit Sub 如果未成功则退出该过程 hWndWindowFromPoint(CPos.x,CPos.y) sSetFocus=nSetFocus(hWnd) End Sub 在窗体上放一个Timer控件,Interval 属性设为100,就是0.1秒,在Timer1控件的Timer事件中填入sSetFocus,在运行一下看看,效果怎么样? 可是有的先生小姐要问了,TextBox难道就不能用ScrollBar吗?非也非也,选 工程部件Microsoft Windows Common Controls2 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) DoEvents ReleaseCapture SendMessage 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 ButtonvbLeftButton 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) 自定义 将其注册后在部件栏中把eDogkid Studio Tools Sign打钩,添加到工具箱中,双击加入到窗体中, 在Form的Load事件中添加一下初始化代码: Private Sub Form_Load() With Sign1 .AutoQuit EXIT_CUSTOM .ParentsHWND hWnd 填了此属性可以直接用ToolSign来移动窗体而不需要前面的代码 End With End Sub Sign1的Click事件 Private Sub Sign1_Click() End 关闭程序 End Sub 在Form的Resize事件中添加一下代码: Private Sub Form_Resize() Sign1.Width Width End Sub 如果想让窗体可以改变大小,可以修改一下属性 Caption BorderStyle 2或5 ControlBox False 不知道各位看关见过爆炸试的窗体没有?,没有见过可以从俺要另外一个俺自己的ActiveX DLL,我的那个东东其实是给我的Software作运行库的,各位若不嫌弃,可以用用,注册后在工程引用eDogkid Runtime Library 然后在窗体Load事件中输入: Private Sub Form_Load() Dim System As e_Dogkid_Runtime_Library.System Set System New e_Dogkid_Runtime_Library.System Show System.BoomIt hDC, 60, Width, Height, Left, Top S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年小微企业创业扶持资金申请申报指南与政策解读报告
- 2025年生物制药资金申请报告
- 公司章程及经营管理制度
- lng运输救援管理制度
- 家具公司无合同管理制度
- 东莞大朗药品店管理制度
- mdr感染手术管理制度
- 公司精细化财务管理制度
- 公司档案室安全管理制度
- 监理部上墙安全管理制度
- 卸料平台(落地搭设)验收记录表
- 水利水能规划课程设计
- 留仙洞总部基地城市设计
- 2020新版个人征信报告模板
- FBI教你破解身体语言(完整版)(54页)ppt课件
- 国际道路货物运单
- 装饰装修工程质量管理体系与措施
- 云南省用人单位人员就业录用登记表-就业登记
- 《文殊真实名经》
- 患者身份识别混乱分析鱼刺图
- 煤矿安全生产隐患的识别与治理.ppt
评论
0/150
提交评论