cbm666 cbm666
关注数: 28 粉丝数: 1,517 发帖数: 26,280 关注贴吧数: 4
【CBM666 淡进淡出的窗体制作 关于演示鼠标区间判断】 摘录自【CBM666 VB编程示例教材_窗体篇】 '本代码演示 窗体淡进与淡出 如何定位鼠标位置以及判断鼠标是否在一个指定区间内 效果图:'*************************************** AboutMe.Frm 窗体代码 '窗体命名 AboutMe.frm 添加 Timer1 Option Explicit Private Sub Form_Load() On Error Resume Next '将窗体移动到屏幕的中心位置 Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2 NowLevel = 0: FadeIO = 1: LVstep = 30 '定义透明度与步长=30 目前透明度为0, 并指明FadeIO=1为淡进特效 TransColor = vbBlue Call TransParent(Me.hwnd, TransColor, 0) '设定窗体目前透明度为 0 Timer1.Interval = 20 '定时器1 激发间隔设为20毫秒 Timer1.Enabled = True '启动定时器 SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 3 '设定总在最前 SetCursorPos (Me.Left + Me.Width \ 2) \ 15, (Me.Top + Me.Height \ 2) \ 15 '将鼠标移动到窗体中心位置 End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, y As Single) If Not IsMouseInRect(Me, X, y) Then '如果鼠标不在窗体内部 FadeIO = 2: LVstep = -30: NowLevel = 255 '定义透明度与步长=-30, 并指明FadeIO=2为淡出特效 Timer1.Enabled = True '启动定时器 End If End Sub Private Sub Form_Unload(Cancel As Integer) On Error Resume Next Set AboutMe = Nothing '释放内存 End '程序结束退出 End Sub Private Sub Timer1_Timer() On Error Resume Next '当透明度大于等于0 并且小于等于255时,将本窗体透明度设定为目前的透明度 If NowLevel >= 0 And NowLevel <= 255 Then Call TransParent(Me.hwnd, TransColor, NowLevel) '当FadeIO = 1(淡进模式)时,如果透明度累加到大于等于255时,将透明度设定为255(不得超过255否则出错) '当FadeIO = 2(淡出模式)时,如果透明度递减到小于等于0时,将透明度设定为0(不得低于0否则出错) NowLevel = IIf(FadeIO = 1, IIf(NowLevel + LVstep >= 255, 255, NowLevel + LVstep), IIf(NowLevel + LVstep <= 0, 0, NowLevel + LVstep)) If NowLevel = 0 Or NowLevel = 255 Then '当透明度等于0或等于255时,进入If...End If Timer1.Enabled = False '禁止定时器 NowLevel = IIf(FadeIO = 1, 255, 0) '当淡进模式时透明度=255 , 当淡出模式时透明度=0 Call TransParent(Me.hwnd, TransColor, NowLevel) '窗体透明度设定为目前透明度 If FadeIO = 1 Then Exit Sub '如果为淡进模式则直接退出本事件不往下运行 Me.Move Screen.Width '将本窗体移动到屏幕外 Call ReleaseTrans(Me.hwnd) '释放透明处理耗用的内存 Unload Me '退出本 关于 程序 End If End Sub '***************** Module1.bas 模块代码 Public Declare Function GdiTransparentBlt Lib "gdi32" (ByVal hdc1 As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal W1 As Long, ByVal H1 As Long, ByVal Hdc2 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal W2 As Long, ByVal H2 As Long, ByVal Color As Long) As Long Public Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
【CBM666 VB编程示例教材 控件篇_Drive Dir FileListBox】 摘录自【CBM666 VB编程示例教材 控件篇_Drive Dir FileListBox】 '***** 本代码的重点 '1.让您知道如何动态添加控件,并安排控件位置。 '2.Drive1、Dir1 与 File1 三个控件的互动关系。 '3.为何要使用 AppDisk 与 DirPath 这两个变量,因为这应该算是VB的一个臭虫(Bugs)。 'App.Path 与 Dir1.Path 在主目录下都会带“\”, 而其它次目录或子目录却不带“\”, '因此我们“统一”让它们都带“\”,如此便比较不容易产生路径上的错误。 '定义新添加控件 Option Explicit Private WithEvents Drive1 As DriveListBox Private WithEvents Dir1 As DirListBox Private WithEvents File1 As FileListBox Private WithEvents Text1 As TextBox '*********** 定义 Dir1 的变量 DirPath 为文字型态,并且为全局变量 '*********** 定义 App.path 的变量 AppDisk 为文字型态,并且为全局变量 Dim AppDisk As String, DirPath As String Private Sub Form_Load() '*********** 窗体自动重画,如没加上此行,则窗体上显示的文字将随时被遮盖的控件抹除。 Me.AutoRedraw = True '********************* 窗体置中 Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2 '*********************************** 程序运行时动态添加控件 Set Drive1 = Me.Controls.Add("VB.DriveListBox", "Drive1") Set Dir1 = Me.Controls.Add("VB.DirListBox", "Dir1") Set File1 = Me.Controls.Add("VB.fileListBox", "File1") Set Text1 = Me.Controls.Add("VB.textBox", "Text1") '************************* 新添加的控件为不可见,必需让它的 Visible 属性为 True 才可见。 Drive1.Visible = True Dir1.Visible = True File1.Visible = True Text1.Visible = True '*********************************** 安排控件位置 Drive1.Move 100, 400, 2200 Dir1.Move Drive1.Left, Drive1.Top + Drive1.Height, Drive1.Width, 2200 Text1.Move Drive1.Left + Drive1.Width + 100, Drive1.Top, 2200 File1.Move Text1.Left, Dir1.Top, Text1.Width, Dir1.Height + 100 '************************** 初始驱动路径的设置 Dir1.Path = App.Path Drive1.Drive = Left(Dir1.Path, 1) '********************** 过滤条件与隐藏档的选择 File1.Pattern = "*.mp3;*.mid;*.rm" '每一个扩展名中间以分号“;”隔开 '****************** 为 True 时能将隐藏的文件也能显示出来,False 就不显示。 File1.System = True File1.Hidden = True '*************** 定义文本匡的初始扩展名过滤条件与文件列表匡的过滤条件相同 Text1.Text = File1.Pattern '******************************** 定义 DirPath 的变量 DirPath = IIf(Right(Dir1.Path, 1) = "\", Dir1.Path, Dir1.Path & "\") '******************* 定义本地相对路径的变量 AppDisk AppDisk = Trim(App.Path) If Right(AppDisk, 1) <> "\" Then AppDisk = AppDisk & "\" End Sub Private Sub Drive1_Change() '***************************** 当盘符改变时,目录夹的路径随着同步更新。 Dir1.Path = Drive1.Drive '******************************** 定义 DirPath 的变量 DirPath = IIf(Right(Dir1.Path, 1) = "\", Dir1.Path, Dir1.Path & "\") End Sub Private Sub Dir1_Change() '********************** 当目录夹的路径改变时,文件列表匡的路径也要随着同步更新。 File1.Path = Dir1.Path DirPath = IIf(Right(Dir1.Path, 1) = "\", Dir1.Path, Dir1.Path & "\") End Sub Private Sub File1_Click() Me.Cls '******** 清除窗体画面 '********* 当点击选中文件列表匡的某一个文件时,将这个文件的完全绝对路径显示出来。 Me.Print DirPath & File1.FileName End Sub Private Sub Text1_Change() '*** 说明当一个运行时错误发生时,控件转到紧接着发生错误的语句之后的语句,并在此继续运行。 On Error Resume Next '************** 当文本匡内容改变时,文件列表匡的扩展名过滤条件也要随着同步更新。 File1.Pattern = Text1.Text End Sub
【CBM666的打印文字如何居中】 '摘录自【CBM666 VB编程示例_打印篇】 '代码重点学习 字符串居中 '当我们在制作图表或打印文件时经常需要将文字居中,尤其是打印文件标题 '居中 我们用的是TextWidth与TextHeight,字体Font属性 字体或字号粗细不同 TextWidth与TextHeight值 当然将随之改变 '本代码故意以霓虹灯闪烁的字体来演示 主要是说明 打印时文字串中的任意一个字符都可以随便改变字体字号与颜色. Option Explicit '在本窗体内 代码强制必须声明并定义变量形态 Private WithEvents Timer1 As Timer '自定义定时器,名称为 Timer1 Dim TmpStr$, i&, j& '本窗体内使用到的变量定义与声明 Private Sub Form_Load() '窗体载入初始化环境 TmpStr = "能否设置部分文字的颜色呢?" '将欲显示的文字赋值给变量 TmpStr Me.Caption = "窗体与图片框字体宽度高度" '设定窗体标题 Me.AutoRedraw = True '设定窗体自动重画刷新 Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2 '窗体移动到屏幕中间 Me.FontSize = 16 '窗体字体字号设为16 Set Timer1 = Controls.Add("vb.timer", "Timer1") '自定义添加Timer1定时器 Timer1.Interval = 100 '定时器激发间隔时间100毫秒 Randomize '随机数种子初始化 End Sub Private Sub Form_Unload(Cancel As Integer) '窗体卸载 Controls.Remove ("Timer1") '结束程序退出时必须将自定义的控件销毁 Set Form1 = Nothing '结束退出时清空本程序占用内存 End '结束程序 End Sub Private Sub Timer1_Timer() '定时器事件 '我们使用窗体内部的宽度与高度 ScaleWidth ScaleHeight Me.CurrentX = (Me.ScaleWidth - Me.TextWidth(TmpStr)) / 2 '窗体内部宽度减掉变量TmpStr内容占用的宽度后再除以2 让打印的文字横向居中 Me.CurrentY = (Me.ScaleHeight - Me.TextHeight(TmpStr)) / 2 '窗体内部高度减掉变量TmpStr内容占用的高度后再除以2 让打印的文字垂直居中 '****************************************** For i = 1 To Len(TmpStr) '循环变量TmpStr字符串每一个字节 Me.ForeColor = QBColor(Int(Rnd * 16)) '随机获取窗体的前景颜色(0-15)共16色, QBcolor函数只支援前16色 '使用Mid函数逐一抓取 i 对应的字节并打印出来 (i在循环中会不断的自动 +1), 注意:最后面使用分号; 目的是打印一个字节后不让它换行 Me.Print Mid(TmpStr, i, 1); Next i 'For 循环对应的结束循环 End Sub 效果图:
【CBM666 提醒您网购陷阱】 花钱事小 窝囊气难消 购买联通3G无线全国漫游网卡 受骗经过如下 敬请大家留意 1.2012年12月21日网上订购 联通3G无线上网卡 网址:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.85gw.cn%2F&urlrefer=96b3f088bfb54f9f263fa8370af840c6 2.2012年12月24日收货后,验货没有问题,付了款1098元,只使用10分钟即断网线再也无法上线. 3.电话询问 他们告知 2013年1月1日才能正式开通使用,要我耐心等候. 4.苦等到2013年1月1日仍然无法使用,1月1日开始到1月5日天天打电话, 答复是 数据刷新中 ,早上说下午可以修好,下午说晚上可以修好,晚上说明天可以修好,每天如此. 后来电话打了数十通(移动公司有记录可查),不是通了没人接,就是放音乐无人接听或关机中,偶尔接通了便要我申请退货,还没来得及询问如何办理退货,三言两语立刻挂断电话,网址上的客服,发了无数次的信息,最后终于得知他们的邮箱,要我发邮件申请退货. 5.2013年1月5日发了邮件申请退货,1月8日回复 要我将我的帐号 姓名 地址等全部信息告诉他们, 我将所有资料回复了. 6.1月8日回复后 我天天咨询他们的客服 回答都是 耐心等 7.1月11日客服告诉我 难道你没看到我们网站声明的收到货后 7天内才能退货吗? 我回答:汉字与数字我看得懂,问题在你们身上不在我身上 8.我故意要我的两个外地朋友假装订购他们同款的产品,他们依然准备发货给我那两个朋友,并告知货 到付款. 9.又过了一星期还是没见到任何回复,我最后于1月15日发了邮件,再不处理我只能寻求法律途径解决 10.至今没任何回复, 因此我怀疑这个完全是个骗局,敬请 立案调查, 谢谢关注, 该网站至今仍在继续营业,希望能尽速察查,防止其他大众继续上当受骗.
首页 1 2 下一页