⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9921.txt

📁 关于编程技术技巧的文章
💻 TXT
📖 第 1 页 / 共 4 页
字号:
===========================================================

                         《编 程 技 术》

               一份属于广大编程爱好者的电子杂志

             这是一份完全关于探讨编程的免费电子杂志 
             您可以任意传播本刊,但必须保持它的完整
            本刊承诺绝不向订户发送任何形式的垃圾邮件!
===========================================================
             第21期 99/08/15          本期发送数: 3115 
===========================================================

◆本期栏目◆
 *刊首语*
 *技术文档*
    在VB中取得Windows的当前目录详解
    VB中的时间处理问题
    自己的IE——用VB制作浏览器
    用VC++6.0制作图片屏幕保护程序
    如何实现PB应用程序的屏幕保护功能
    用DELPHI设计屏幕保护程序
    退出 DOS 死循环的小程序
    简单计算函数的编写过程
 *服务台*
    三个最新编程工具

===========================================================

◆刊首语◆
    
    首先有一个好消息要宣布:《编程技术》1999年合订本(上)抢鲜
推出。由于近期本刊订阅者人数成倍增加,而且又不断有朋友向我索取
以前的刊物,为此本人特地把第二十期以前所有刊物内容统统打包,就
权且当作1999年合订本(上)吧。其中有近百篇各类编程语言的应用文
章,方便各位新老读者保存查阅,还等什么呢,赶快来我主页下载吧。
    
**********************************************************
***********************************************************

◆技术文档◆

                在VB中取得Windows的当前目录详解 

                         江苏 the.Sea

  很多情况下我们需要在程序中确定当前Windows的目录,VB中自身并没
有这样的函数,但我们可以借助Windows API来达到目的,这个关键的函数
就是:Kernel32中的GetWindowsDirectory。
  首先要在新建的程序中加入一个Module,在该Module中作如下声明:
  Declare Function GetWindowsDirectory Lib “kernel32” 
Alias “GetWindowsDirectoryA” (ByVal lpBuffer As String, 
ByVal nSize As Long) As Long
  这里的几个参数说明一下:lpBuffer是一个字符串,用以返回Windows
的目录值(实际上是一个指针),这个目录值不带反斜杠的,比如
C:\Windows,但有一种情况例外:当Windows安装在根目录下时返回反斜杠,
比如C:\;第二个参数是前一个字串的长度,你得告诉系统为返回值预留的
字串的最大长度(其实这个参数实在有些鸡肋的感觉);函数的返回值,
在成功的情况下是目录字符串的长度,在不成功时返回NULL值,还有一种
情况,就是返回值超出预留的串长度,那么该函数就返回实际值应有的长
度。
  函数说明完毕,可以看到,为了防止出错情况,函数引入了nSize参数,
但只要使用下述经典的取目录代码,可保证程序平稳运行。
  Public Function MyGetWinDirectory() As String
  Dim sBuffer As String
  Dim lSize As Long
   sBuffer = String(255, 0)
   lSize = GetWindowsDirectory (sBuffer, Len(sBuffer))
   sBuffer = Left(sBuffer, lSize)
   sBuffer = sBuffer + “\”
   MyGetWinDirectory = sBuffer 
  End Function
  这里程序首先为字符预留了255Bytes,应该是足够了,不会有人用这么
长的Windows目录名的,更重要的是超出255的长文件名Windows是不支持的;
然后调用GetWindowsDirectory函数,通过返回值lSize截取缓冲区中有用的
部分重新定义sBuffer;最后再加上反斜杠,形成完整的路径名。
  现在你可以试一下你的新函数:在窗体Form1中加入一个文本框Text1,
然后再加入一个命令键Command1,在Command1_Click()事件中加入以下代码:
  Private Sub Command1_Click() 
   Text1 = MyGetWinDirectory
   MsgBox Text1
  End Sub
  最后运行程序,占击一下Command1,看一下实际的运行效果。(以上程
序在中文Windows98,VB6中通过。)

***********************************************************

                     VB中的时间处理问题 

                          武汉 罗程

  编程中常常会与时间打交道,VB编程自然也不例外。以下就谈谈我在这
方面的一点经验。
  VB中提供了很多变量类型,DATE型就是专门用了存储时间的。
  1、DATE型变量及其相关函数。
  在内部,一个Date占8个字节的内存,你可以方便地用它来存储日期和时
间。给Date变量赋值是很容易的。但请保证输入顺序与系统默认的时间表示
顺序相同。例如:
  Dim d As Date
  d = #5/23/99 11:45:34 AM#
  DateSerial函数可以把年、月、日的数字组合成一个Date值。TimeSerial
函数可把小时、分、秒的数字组合成一个Date值。且两函数可以叠加。
  d = DateSerial(1999, 5, 23) + TimeSerial(11, 45, 34)
  而DateValue 和TimeValue 函数则可将代表日期和时间的字符串转化为
Date型,并且也可以叠加。
  d = DateValue(“1999/ 5/ 23”) + TimeValue(“11: 45: 34”)
  Format函数可按预定的格式显示或打印一个Date变量。如:
  Print Format(d, “general date”) '99-5-23 11:45:34
  Print Format(d, “long date”) '1999年5月23日
  Print Format(d, “medium date”) '99-05-23
  Print Format(d, “short date”) '99-5-23
  Print Format(d, “long time”) '11:45:34
  Print Format(d, “medium time”) '11:45 AM
  Print Format(d,“short time”) '11:45
  Format函数也允许你自己规定显示格式。如:
  Print Format(d, “mmmm”) 'may 产生日期中月份的英文
  以以上日期为例,如想显示其中的一部分信息可使用以下函数:
  Print Month(d) '5
  Print Day(d) '23
  Print Year(d) '1999
  Print Hour(d) '11
  Print Minute(d) '45
  Print Second(d) '34
  Print WeekDay(d)'1 
  Weekday 提供了一组内部常量,vbSunday代表1,直到 vbSaturday代表7。
  Now 函数可返回今天的日期及时间。如:
  Private Sub Form_Click()
  Dim d As Date
  d = Now
  Print d
  End Sub
  灵活地应用以上的函数,可以大大地简化你的程序。例如想计算10000秒等
于几小时几分几秒可写为:
  Private Sub Form_Click()
  Dim d As Date
  d = TimeSerial(0, 0, 10000)
  Print d
  End Sub
   结果为2:46:40。
  2、与时间相关的常用控件。
  Timer控件是一个奇特的控件。Timer 控件会在固定时间间隔中运行Timer
事件。此间隔是由Interval属性决定的,其单位为千分之一秒。但不要以为将
其值设为0事件就可不间断地运行了。结果恰恰相反,事件将一次也不运行。同
时还要注意变量的声明。如:
  Private Sub Timer1_Timer()
  Dim a As Integer
  a = a + 1
  Print a
  End Sub
  
  Dim a As Integer
  Private Sub Timer1_Timer()
  a = a + 1
  Print a
  End Sub
  试试看,其结果是完全不同的。
  当需要用户输入时间时,为避免出现错误的时间,可以使用日历控件。它
只允许用户在日历表中选择日期,避免了错误的发生。
  3、记录时间的API函数。
  GetTickCount Windows API函数可返回 Windows 启动以来消失的毫秒数。
其精度高于VB的Timer 函数。且Timer 函数会在午夜清零,而GetTickCount 函
数只有当机器连续使用49.7天后才返回零。这为我们编程提供了很大的方便。
例如想知道你的电脑连续工作多久了,可新建一工程,然后添加以下代码:
  Private Declare Function GetTickCount Lib “kernel32" () As Long
  Private Sub Form_Load()
  Dim d As Date
  Dim t As Integer
  Form1.Show
  t = GetTickCount \ 1000
  d = TimeSerial(0, 0, t)
  Print d
  End Sub
  
***********************************************************
 
                     自己的IE——用VB制作浏览器 

                            上海 钱可栋

  自己做浏览器?有没有搞错?不要说像IE这样的庞然大物,就是小巧的
Opera,我们大多数普通人也决计搞不出来。但如果你的机器里装有VB5.0专
业版,那么事情就好办多了,想试试吗?那好,Let's go!
  程序的主角是一个ActiveX控件:WebBrowser。当然,缺省状态下VB的
工具箱中并没有它,我们得手工加入,方法是:右击工具箱,在出现的快捷
菜单中选择“部件...”,确保在弹出的对话框中选中“控件”标签,找到
Microsoft Internet Controls,在它前面的小框中打钩,然后确定。此时
你会发现工具箱中多了两个小图标,其中,地球图标代表的控件正是我们需
要的WebBrowser。
  由于许多人对WebBrowser控件不是很熟悉,VB的帮助中也没有有关它的
内容(反正我没有找到),因此有必要介绍一下它的属性、方法和事件,限
于篇幅,我们只涉及程序中用到的:
  属性:LocationURL 返回控件显示WEB页面的URL。
  方法:Navigate 转移到指定的URL或打开指定HTML文件。
  事件:1.DownloadBegin 下载操作开时触发。
  2.DownloadComplete 下载操作完成、终止或失败时触发。
  3.ProgressChange WebBrowser控件跟踪下载操作的过程,并定期触发
此事件。其语法为:Sub WebBrowser_ProgressChange (ByVal Progress As Long, 
ByVal ProgressMax As Long)。Progress变元是当前已下载的数据总量,
ProgressMax变元是将要下载的数据总量。
  4.TitleChange 当前文档标题改变时触发
  除了WebBrowser控件外,程序还需要一个Label控件:Label1;一个
ComboBox控件:combo1,用来显示URL地址;一个StatusBar控件:StatusBar1;
一个ProgressBar控件:ProgressBar1,用来显示下载进度(StatusBar控件和
ProgressBar控件是ActiveX控件Microsoft Windows Common Controls5.0的成
员,加入工具箱的方法同WebBrowser控件),这些控件的属性值都用缺省值。
  以下是程序清单:
  Option Explicit
  
  Private Sub Form_Load()
  Me.Caption =“My Explorer”
  Label1.Caption = “URL”
  Combo1.Text = “”
  Combo1.Top = Label1.Height
  Combo1.Left = 0
  WebBrowser1.Top = Combo1.Top + Combo1.Height
  WebBrowser1.Left = 0
  Form_Resize
  StatusBar1.Style = sbrSimple
  ProgressBar1.ZOrder
  End Sub
  
  Private Sub Form_Resize()
  On Error GoTo a
  Combo1.Width = Form1.Width - 100
  WebBrowser1.Width = Combo1.Width
  WebBrowser1.Height = Form1.Height - Combo1.Height - 1000
  ProgressBar1.Top = Me.Height - StatusBar1.Height - 330
  ProgressBar1.Left = 0.25 * StatusBar1.Width
  ProgressBar1.Width = 0.75 * Me.Width - 250
  a:
  End Sub
  
  Private Sub Combo1_Click()
  '转到指定网址
  WebBrowser1.Navigate Combo1.Text
  End Sub
  
  Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
  Dim i As Long
  Dim existed As Boolean
  If KeyCode = 13 Then
  If Left(Combo1.Text, 7) <> “http://”Then
  Combo1.Text = “http://”+ Combo1.Text
  End If
  WebBrowser1.Navigate Combo1.Text
  For i = 0 To Combo1.ListCount - 1
  If Combo1.List(i) = Combo1.Text Then
  existed = True
  Exit For
  Else
  existed = False
  End If
  Next
  If Not existed Then
  Combo1.AddItem (Combo1.Text)
  End If
  End If
  End Sub
  
  Private Sub WebBrowser1_DownloadBegin()
  '下载开始时状态栏显示“Now Linking...”
  StatusBar1.SimpleText = “Now Linking...”
  End Sub
  
  Private Sub WebBrowser1_DownloadComplete()
  '下载完成时状态栏显示“Link Finished”
  StatusBar1.SimpleText = “Link Finished”
  ProgressBar1.Value = 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -