如果大家用过《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).BackColor=LBL_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 Count=0 To 3 LblBtn(Count).BackColor=LBL_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() bkColor=RGB(235,235,235) Text1.BackColor=bkColor 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? <  
1/2 1 2 下一页 尾页 |