½s¸¹¤ÀÃþ

±M®×¥Øªº/»¡©ú(²Ä  4, 3, 2, 1­¶)

79

¦p¦óŪ¥X.gif°Êµe¤¤ªº¨C¤@®æ°Êµeªº¼½©ñ®É¶¡(Äò.¹êÅç½d¨Ò76)

'¥Õ¦â¦rÅé³B¤j³¡¥÷»P(76)¬Û¦P(Äé¤@¤U¤ô^^)

'¤Þ¥ÎGflAxObject 2.00
Dim a As New GflAx.GflAx
Dim ttt As Integer
Private Sub Form_Load()
 FP = "c:\windows\desktop\kmlogo4.gif"
 Timer1.Interval = 1 '¼½©ñ³t«×
 a.EnableLZW = True
'¨Ï¥ÎLZW®æ¦¡
 a.LoadBitmap FP
 Form1.AutoRedraw = True: Form1.ScaleMode = 3
 Form1.Height = (a.Height * a.NumberOfImages + 26) * Screen.TwipsPerPixelY
 Image1.Move a.Width + 10, 10

 Dim b() As Byte
 ReDim b(FileLen(FP))
 Open FP For Binary As #1: Get #1, , b: Close #1
 
List1.Clear
 For i = 1 To UBound(b) - 9
 '±qByte°}¦C¤¤¸ÑªRµe®æªº°±¯d®É¶¡
 
If b(i) = 0 Then
    If b(i + 1) = &H21 Then
      If b(i + 2) = &HF9 Then
        If b(i + 3) = &H4 Then
           t = b(i + 5) + b(i + 6) * 256
          
List1.AddItem t '¨ú¥X.gif¤¤¨C¤@µe®æªº®É¶¡(1/100¬í)
        End If
      End If
    End If
  End If
 'ps:¦³¤H¥i¯à·|·Q­n¼g¦¨"if..and..and..and..."¡A¦ý³o¼Ë§PÂ_³t«×·|¸ûºC!!!(¦Û¤v°Ê¸£·Q¤@¤U­ì²z³á!^^)
 Next i
End Sub
Private Sub Form_Activate()
'¦bªí³æ¤Wø¥X¨C¤@®æªºµe­±
 
For i = 1 To a.NumberOfImages
   a.Page = i
   Form1.PaintPicture a.GetPicture, 0, (i - 1) * a.Height, a.Width, a.Height
 Next i
a.Page = 1
End Sub
Private Sub Form_Unload(Cancel As Integer)
 
Set a = Nothing 'ÄÀ©ñª«¥ó
 
If Dir("c:\tmp.gif") <> "" Then Kill "c:\tmp.gif" '²M°£¼½©ñ¼È¦sÀÉ
End Sub
Private Sub Timer1_Timer()
 
Timer1.Interval = List1.List(ttt) * 10 '«ü©w¨ì¤U¤@¦¸ªº¶¡¹j®É¶¡
 '¦³¨Ï¥Î³zªÅ®ÄªG®É
 ttt = (ttt + 1) Mod List1.ListCount
 a.SaveFormat = AX_GIF
'«ü©wSaveFormat®æ¦¡
 a.SaveBitmap "c:\tmp.gif" '¥ý¼È¦s
 Form1.Caption = "²Ä" & a.Page & "±i"
 Image1.Picture = LoadPicture("c:\tmp.gif")
'Ū¨ú¼È¦sµe­±
 '¥¼¨Ï¥Î³zªÅ®ÄªG®É

 ' Image1.Picture = a.GetPicture
 
If a.Page = a.NumberOfPages Then
 a.Page = 1
'¶g¦Ó´_©l
 Else
 a.NextPage
'¤U¤@µe­±
 End If
End Sub

'«á°O:¯u¥¿¼½©ñ®É¥i¯à·|ºC¤@ÂIÂI(¤j·§´X²@¬í§a!)...¤£¹L¨º¬OTimer¥»¨­¤£¤Ó·Ç½T©Ò³y¦¨ªº...

78

¨Ï¥Î Printer.Print¦C¦L¸ê®Æ®É¦p¦ó¥u¦L¬Y¤@°Ï¬q­¶¼Æ?

spg = 2 '¶}©l­¶
epg = 4 'µ²§ô­¶
'±q²Ä¤G­¶¦L¨ì²Ä¥|­¶:¦@¤T­¶
pg = 1
Printer.NewPage
For i = 0 To 1000
Randomize Timer
Printer.FontSize = Int(Rnd * 20 + 10)
'¤£³W«h¤å¦r¤j¤p(´ú¸Õ¥Î)
aa:
'§PÂ_·s«Ý¦C¦Lªº¸ê®Æ¦æ¬O§_¸Ó¸õ­¶

If Printer.CurrentY + Printer.TextHeight(i) < Printer.ScaleHeight Then
Printer.Print i
Else
If pg < spg Then Printer.KillDoc
'¤p©ó¶}©l­¶«h²M°£
pg = pg + 1
If pg > epg Then Printer.EndDoc: Exit For
'¤j©óµ²§ô­¶«h¸õ¥X
Printer.NewPage
GoTo aa
End If
Next i
Printer.EndDoc

77

±j¨î¦^À³ªí³æªºÅܤÆ

¤@¯ë§Ú­Ì¨Ï¥Î¨ì±j¨î¦^À³ªí³æ®É¡A¨ä¥Lªí³æ¥þ³£·|¼È®ÉµLªk¦^À³¡A¦p¦ó¤~¯à¥u¨Ï¨ä¤¤¤@­Óªí³æ¼ÈµL§@¥Î¦Ó¨ä¥Lªí³æ¤´¯à°Ê§@©O?

¨Ò¦p:

¦³Form1¡BForm2¡BForm3¤Tªí³æ¡A¥ÑForm1¥s¥X±j¨î¦^À³ªºForm3¨Ãµ¥«Ý¨äµ²§ô¡A¦Ó¨ä¶¡Form2¤´¥i°Ê§@...

¤@¯ëªº§@ªk¬O¥ÑForm1ª½±µ¤U«ü¥O:

Private Sub Command1_Click()
 Form3.show 1,Form1

End Sub

¦p¦¹¬O¥i¹F¨ì±j¨î¦^À³ªº¥\¯à¡A¦ý¬OForm2«o¤]µLªk°Ê§@¤F!

¡@

­×¥¿ªº°µªk:

'in Form1
Private Sub Command1_Click()
 
Form1.Caption = "Waiting for form3" '±j¨î¦^À³«eªº°Ê§@(¤ñ¹ï¥Î)
'---­×¥¿ªº±j¨î¦^À³---

 Form1.Enabled = False 
 Form3.Show 0, Form1
'¨ÏForm3¤@ª½¦bForm1ªº¤W¼h
 Do Until Form1.Enabled = True: DoEvents: Loop
'µ¥­ÔForm3µ²§ô
'------

 Form1.Caption = "I'm back" '±j¨î¦^À³«áªº°Ê§@(¤ñ¹ï¥Î)
End Sub
'in Form3
Private Sub Form_Unload(Cancel As Integer)
 Form1.Enabled = True '¦bForm3µ²§ô®É¤~±NForm1­P¯à
 Form1.SetFocus
End Sub

76

¨Ï¥ÎGflAxŪ¨ú.gif°Êµe¤¤ªº¨C¤@®æ°Êµe¤Î¼½©ñ(§t³zªÅ°Êµe³B²z¤èªk)

'¥»½d¨Ò¨Ï¥Î¤§¹Ï§Î:(½Ð«ö·Æ¹«¥kÁä¥t¦s)

'¦b[±M®×]-[³]©w¤Þ¥Î¶µ¥Ø] ¤Þ¥Î GflAx193
'¦bªí³æ¤W¸m¤J¤@­ÓImage¬°Image1¡A¤@­ÓTimer¬°Timer1
Dim a As GflAx193.GflAx
Private Sub Form_Load()
 
Timer1.Interval = 100 '¼½©ñ³t«×
 
Set a = New GflAx
 a.EnableLZW = True
'¨Ï¥ÎLZW®æ¦¡
 a.LoadBitmap App.Path & "\kmlogo4.gif" 
 Form1.AutoRedraw = True: Form1.ScaleMode = 3
 Form1.Height = (a.Height * a.NumberOfImages + 26) * Screen.TwipsPerPixelY
 Image1.Move a.Width + 10, 10
End Sub
Private Sub Form_Activate()
'¦bªí³æ¤Wø¥X¨C¤@®æªºµe­±
 
For i = 1 To a.NumberOfImages
  a.Page = i
  Form1.PaintPicture
a.GetPicture, 0, (i - 1) * a.Height, a.Width, a.Height
  Next i

  a.Page = 1 '¡¹
End Sub
Private Sub Form_Unload(Cancel As Integer)
 
Set a = Nothing 'ÄÀ©ñª«¥ó
 If Dir("c:\tmp.gif") <> "" Then Kill "c:\tmp.gif"
'²M°£¼½©ñ¼È¦sÀÉ
End Sub
Private Sub Timer1_Timer()
'¦³¨Ï¥Î³zªÅ®ÄªG®É
  a.SaveFormat = AX_GIF '«ü©wSaveFormat®æ¦¡
  a.SaveBitmap "c:\tmp.gif"
'¥ý¼È¦s
  Form1.Caption = "²Ä" & a.Page & "±i"
  Image1.Picture = LoadPicture("c:\tmp.gif")
'Ū¨ú¼È¦sµe­±
'¥¼¨Ï¥Î³zªÅ®ÄªG®É
' Image1.Picture = a.GetPicture
'¡¹

  If a.Page = a.NumberOfPages Then
    a.Page = 1
'¶g¦Ó´_©l
  Else
    a.NextPage
'¤U¤@µe­±
  End If
End Sub

75

¦p¦ó¦b§â¬Y¤@¬q¤å¦r(¥i§t¤¤¤å)¶K¦bDOSµøµ¡¤¤°õ¦æªºµ{¦¡ùØ

'¦bªí³æ¤¤¸m¤J¤@TextBox¬°Text1¡A¤@CommandButton¬°Command1
Dim r As Long
Private Sub Form_Load()
 
r = Shell("edit.com", vbNormalFocus) '¶}±ÒDOS¤Uªºedit
 Text1 = "ªü¥³ªºVB¹êÅçºô­¶"
'­n°e¥Xªº¦r¦ê
End Sub
Private Sub Command1_Click()
 
On Error GoTo errexit
 AppActivate r
'¨ÏDOSµøµ¡±o¨ì¾nÂI
 Clipboard.Clear '²M°£°Å¶Kï
 Clipboard.SetText Text1.Text
'³]©w°Å¶K襤ªº¤å¦r
 SendKeys
"%{ }ep" '°e¥X[¥\¯àªí]-[½s¿è]-[¶K¤W]
 Exit Sub
errexit:
 MsgBox "¶}±ÒªºDOSµ{¦¡¥i¯à¤w³QÃö³¬!"
End Sub

PS:¥Ñ©óDOSµøµ¡ªº¶K¤W¥\¯à¬°«D¦P¨B¡A©Ò¥H¦pªG»Ý­n­«½Æ¶K¤WN¦¸®É¡A¤£­n¨Ï¥Î°j°é±±¨îSendkeys¡A¦]¬°³o¼Ë¤´¥u·|±o¨ì¤@¦¸ªºµ²ªG¡A¥¿½Tªº°µªk¬O¥Î°j°é±N¦r¦ê²Ö¥[N¦¸¡A¦A¤@¦¸Sendkeys¥X¥h¡C

74

¦p¦ó¤£­É§U¨ä¥¦ IO_API Ū¨úBIOS¤é´Á(¨Ï¥ÎVB5/VB6¤ºªþ¤§API)¾A¥Î9x

Private Declare Sub GetMem1 Lib "msvbvm60.dll" (ByVal MemAddress As Long, var As Byte)
'¦bVB5¤¤«h§ï¬°msvbvm50.dll

Private Sub Form_Load()
BIOSDate = ""
Dim a As Byte
For i = 0 To 7
Call GetMem1(&HFFFF5 + i, a)
BIOSDate = BIOSDate & Chr$(a)
Next i
MsgBox BIOSDate
End Sub

73

¦p¦ó±NMDIªí³æªº[³Ì¤j¤Æ]¡B[³Ì¤p¤Æ]¡B[Ãö³¬µøµ¡]¶s¥\¯à¨ú®ø

Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Sub MDIForm_Load()
¡@Dim hSysMenu As Long, nCnt As Long
¡@hSysMenu = GetSystemMenu(Me.hwnd, False)
¡@If hSysMenu Then
¡@¡@nCnt = GetMenuItemCount(hSysMenu)
¡@¡@If nCnt Then
¡@¡@¡@RemoveMenu hSysMenu, nCnt - 1, &h1400&
¡@¡@¡@RemoveMenu hSysMenu, nCnt - 2, &h1400&
¡@¡@¡@RemoveMenu hSysMenu, nCnt - 3, &h1400&
¡@¡@¡@RemoveMenu hSysMenu, nCnt - 4, &h1400&
¡@¡@¡@DrawMenuBar Me.hwnd
¡@¡@End If
¡@End If
End Sub

72

¦p¦ó¨î§@¤£¼vÅT­I´º¹Ïªº¤Q¦r®y¼Ð½u

ªü¥³§Q¥ÎImageÁY©ñ¥\¯à+¤Ï¥ÕªºIcon¹Ï¥Ü¡AÅý§A»´ÃP´N¯à¹F¦¨³o¼Ëªº®ÄªG.

71

¦p¦ó¼ÒÀÀ¹p¹F±½ºË¹Ï(GflAX«G«×½Õ¾ã¹B¥Î)

Dim a As GflAx193.GflAx
Dim ang As Single
Const pi = 3.1415926
Dim tg(9, 2) As Single
Private Sub Form_Load()
¡@Set a = New GflAx
¡@Timer1.Interval = 10
¡@Form1.AutoRedraw = True : Form1.Show
¡@Form1.BackColor = vbBlack : Form1.Cls
¡@Form1.Picture = Form1.Image : Form1.Refresh
¡@a.SetPictureFromHWND Form1.hWnd, 0, 0, 202, 202
¡@Randomize Timer
¡@For i = 0 To 9
¡@¡@tg(i, 0) = Int(Rnd * 360)
¡@¡@tg(i, 1) = Int(Rnd * 80 + 10)
¡@¡@tg(i, 2) = 0
¡@Next i
End Sub

Private Sub Timer1_Timer()
¡@ang = (ang + 2) Mod 360
¡@x1 = 100 - Sin(ang / 180 * pi) * 98 : y1 = 100 + Cos(ang / 180 * pi) * 98
¡@a.Brightness -10
¡@a.DrawLine 100, 100, x1, y1, 5, RGB(0, 192, 0)
¡@a.DrawLine 100, 0, 100, 200, 1, vbRed
¡@a.DrawLine 0, 100, 200, 100, 1, vbRed
¡@a.DrawCircle 100, 100, 100, 1, vbRed
¡@For i = 0 To 9
¡@¡@If Abs(tg(i, 0) - ang) < 2 Then tg(i, 2) = 10
¡@¡@If tg(i, 2) > 0 Then
¡@¡@¡@X2 = 100 - Sin(tg(i, 0) / 180 * pi) * tg(i, 1) : Y2 = 100 + Cos(tg(i, 0) / 180 * pi) * tg(i, 1)
¡@¡@¡@a.DrawPoint X2, Y2, 3, vbGreen
¡@¡@¡@tg(i, 2) = tg(i, 2) - 1
¡@¡@End If
¡@Next i
¡@Form1.Picture = a.GetPicture
End Sub

70

¦p¦ó±oª¾·Æ¹«¥¿«ü¦bComboBoxªº¦Cªí­þ¤@­Ó¶µ¥Ø¤W¡A¨Ã¼ÒÀÀTooltipÅã¥Ü

¦]ComboBoxªº¦Cªí¤£ª½±µÄÝªí³æºÞÁÒ¡A¥B¦Cªí³B¤]¨S¦³tooltipªº¥\¯à¡A©Ò¥H§Ú­Ì¥þ³£­n¥ÎAPI¨Ó§¹¾ã¼ÒÀÀ!

¶}¤@·sªí³æ¡A¤£»Ý¥[¤J¥ô¦ó¨ä¥Lª«¥ó¡Aª½±µ¶K¤W¥H¤U½d¨Òµ{¦¡½X´ú¸Õ:

Dim lk As Integer
Private Declare Function SetParent Lib "User32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function IsWindowVisible Lib "User32" (ByVal hWnd As Long) As Long
Private Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long, lpRect As RECT) As Long
Private Declare Function GetCursorPos Lib "User32" (lpPoint As POINTAPI) As Long
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const HWND_TOPMOST = -1
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
Private Type POINTAPI: X As Long: Y As Long: End Type
Private Type RECT: Left As Long: Top As Long: Right As Long: Bottom As Long: End Type
Dim Picture1 As PictureBox
Dim Combo1 As ComboBox
Dim WithEvents Timer1 As Timer
Private Sub Form_Load()
¡@Set Picture1 = Controls.Add("vb.PictureBox", "Picture1", Form1)
¡@Set Combo1 = Controls.Add("vb.ComboBox", "Combo1", Form1)
¡@Combo1.Move 0, 0: Combo1.Visible = True
¡@Set Timer1 = Controls.Add("vb.Timer", "Timer1", Form1)
¡@For i = 0 To 99: Combo1.AddItem i: Next i
¡@Picture1.Appearance = 0
¡@Picture1.AutoRedraw = True
¡@Picture1.BackColor = &HC0FFFF
¡@Picture1.Move 0, 0
¡@Picture1.Visible = False
¡@SetParent Picture1.hWnd, 0&
¡@Timer1.Enabled = True
¡@Timer1.Interval = 500
End Sub

Private Sub Timer1_Timer()
¡@Dim r1 As Long, p1 As POINTAPI, rect1 As RECT
¡@Dim p As Long, i As Long
¡@r1 = FindWindow("ComboLBox", vbNullString)
¡@If IsWindowVisible(r1) <> 0 Then
¡@¡@GetWindowRect r1, rect1: GetCursorPos p1
¡@¡@X = p1.X - rect1.Left: Y = p1.Y - rect1.Top: p = X + Y * 65536
¡@¡@i = SendMessage(r1, &H1A9, 0, ByVal p)
¡@¡@If i >= 0 And i < Combo1.ListCount Then
¡@¡@¡@If lk <> i Then
¡@¡@¡@¡@Str1 = "§A¥¿«ü¦b: " & Combo1.List(i) & " ¶µ¥Ø¤§¤W"
¡@¡@¡@¡@Picture1.Move (p1.X + 18) * Screen.TwipsPerPixelX, (p1.Y + 18) * Screen.TwipsPerPixelY, _ Picture1.TextWidth(Str1) + 3*Screen.TwipsPerPixelX, Picture1.TextHeight(Str1) + 3 * Screen.TwipsPerPixelY
¡@¡@¡@¡@Picture1.Cls
¡@¡@¡@¡@Picture1.PSet (Screen.TwipsPerPixelX, Screen.TwipsPerPixelY), Picture1.BackColor
¡@¡@¡@¡@Picture1.Print Str1
¡@¡@¡@¡@Picture1.Visible = True
¡@¡@¡@¡@SetWindowPos Picture1.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
¡@¡@¡@¡@lk = i
¡@¡@¡@End If
¡@¡@Else
¡@¡@¡@Picture1.Visible = False
¡@¡@End If
¡@Else
¡@¡@Picture1.Visible = False
¡@End If
End Sub

69

°e¥X§Y®É°T®§©Î«ü¥Oµ¹±M¥ÎªºDOSµøµ¡

­ì²z«Ü²³æ¡A¥Î§å¦¸Àɱµ¦¬§å¦¸ÀÉ¡A¦³¿³½ì¦Û¤v¤U¸ü¥h¬ã¨s§a.

¤§«e¼g¦nªº¤F¡A¤@ª½§Ñ¤F§ó·sºô­¶®É©ñ¤W¨Ó...@@

68

¦p¦ó¦b¦U¥­¥x¤WÅý PCSpeakerºt«µ­µ¼Ö(¨Ï¥Î IO.dll)

¤§«eÀ°¬Y¦ìºô¤Í¸ÑÃD®É¡A©¿µM¦^¾Ð°_¥H«e¦bQB¤¤¥ÎSound¨Óºt«µ­µ¼Ö¡A²{¦bªºVBªì¾ÇªÌ©~µMµLªkÅé·|³oºØ·Pı¡AVBªºBeep©Î¬OAPI-Beep«oµLªk½T©w¥i±qPC³â¥zµoÁn¡A¾Ç¹LQBªº¨Ó´_¥j¤@¤U§a¡A¨S¾Ç¹Lªº¤]¥i¥HÅéÅç¬Ý¬Ý^^ (§K¶OIO.DLL¤U¸ü---¦U¥­¥x§¡¾A¥Î)

'[¤@¯ë«Å§i]

Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)
Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte

Private Sub Form_Load()
¡@
Form1.AutoRedraw = True: Form1.Show
¡@For j = 1 To 10 Step 1
¡@¡@Randomize Timer: Cls
¡@¡@Print "---®»ªdÄÏ---" 
¡@¡@Call sound("L," & Format(j) & ",")
'­µ°ì(º¥°ª)
¡@¡@Call sound("S," & Format(3 * (Rnd + 0.2)) & ",")
'­µªø(ÀH¾÷)
¡@¡@Call sound("6,4,¦À 6,8,¶í 5,16,ªº 6,8,¤ô 5,8,º¡ 3,4,¤F" & vbTab)
¡@¡@Call sound("5,8,«B 3,8,¤] 3,8,°± 2,8, 3,2,¤F" & vbCrLf)
¡@¡@Call sound("2,4,¥Ð 2,8,Ãä 1,8,ªº 2,8,ÒW 2,8,ªd 5,4,¸Ì" & vbTab)
¡@¡@Call sound("5,8,¨ì 3,8,³B 3,8,¬O 2,8,ªd 3,2,ÄÏ" & vbCrLf)
¡@¡@Call sound("6,4,¤Ñ 6,8,¤Ñ 5,16,§Ú 6,8,µ¥ 5,8,µÛ 3,4,§A" & vbTab)
¡@¡@Call sound("4,8,µ¥ 4,16,µÛ 4,16,§A 3,8,®» 2,8,ªd 3,2,ÄÏ" & vbCrLf)
¡@¡@Call sound("5,4,¤j 5,8,­ô 5,16,­ô 5,8,¦n 5,8,¤£ 7,4,¦n" & vbTab)
¡@¡@Call sound("6,8,«¥ 6,16,­Ì 6,16,¥h 6,8,®» 5,8,ªd 6,2,ÄÏ 0,8," & vbCrLf)
¡@¡@Call sound("+1,4,¤p +1,8,¤û +1,8,ªº 7,4,­ô 5,4,­ô" & vbTab)
¡@¡@Call sound("6,8,±a 6,16,¥L 6,16,¥h 6,8,®» 5,8,ªd 6,8,ÄÏ 5,8, 3,8, 0,8," & vbCrLf)
¡@¡@For i = 0 To 1
¡@¡@¡@Call sound("5,4,¤j 5,8,­ô 5,16,­ô 5,8,¦n 5,8,¤£ 7,4,¦n" & vbTab)
¡@¡@¡@Call sound("6,8,«¥ 6,16,­Ì 6,16,¥h 6,8,®» 5,8,ªd 6," & Format(2 / (i + 1)) & ",ÄÏ" & vbCrLf)
¡@¡@Next i
¡@Next j
End Sub
Private Sub Form_Unload(Cancel As Integer)
'ºt«µ´Á¶¡¡A¤Å¨Ï¥ÎVB-IDE¤§¡½¨Óµ²§ôµ{¦¡(¨Ã¤£·|¾É­P¨ä¥L°ÝÃD¡A¦ý¦]¬°¨SÃö³¬PC³â¥z¡A·|³y¦¨¥¦¤@ª½"¸Ó")

'µ²§ôºt«µ½Ð¨Ï¥Îªí³æ¥k¤W¤§¢®
¡@Call PortOut(&H61&, PortIn(&H61&) And &HFC&)
¡@End
End Sub
Sub sound(s$)
's$ªº®æ¦¡¬°  ­µ¶¥(²ÃÐ), 1/¸`©ç,ºqµü³æ¦r¡A¦U­µ¤§¶¡¥HªÅ¥Õ¹j¶}

'¨Ò¦p: "1,4,¤æ 2,8,¿¶ 3,16,«}"

'L¤ÎS»Ý³æ¿W¦b¤@¦r¦ê¤¤³]©w

¡@Dim ss() As String, ss1() As String
¡@ss1 = Split(s$, " ")
¡@For i = 0 To UBound(ss1)
¡@¡@ss = Split(ss1(i), ",")
¡@¡@Freq$ = UCase(ss(0)) : length = Val(ss(1))
¡@¡@Static level : Static SSL
¡@¡@Print ss(2);
'§Y®ÉÅã¥Üºqµü
¡@¡@Select Case Freq$
'¦U­µ¶¥ÀW²v
¡@¡@¡@Case "1": Result = 130.81
'¤æ
¡@¡@¡@Case "2": Result = 146.83 '¿¶
¡@¡@¡@Case "3": Result = 164.81 '«}
¡@¡@¡@Case "4": Result = 174.61 'µo
¡@¡@¡@Case "5": Result = 196 '·j
¡@¡@¡@Case "6": Result = 222
'°Õ
¡@¡@¡@Case "7": Result = 246.94 '¼H
¡@¡@¡@Case "+1": Result = 261.63 '³£
¡@¡@End Select
¡@¡@If Freq$ = "L" Then level = Val(ss(1)): Exit Sub
'¯S®í«ü¥O:³]©wºt«µ­µ°ì
¡@¡@If Freq$ = "S" Then SSL = Val(ss(1)): Exit Sub
'¯S®í«ü¥O:³]©w¼Ð·Ç­µªø
¡@¡@If level = 0 Then level = 1
¡@¡@If level > 10 Then level = 10
¡@¡@Result = Result * level
¡@¡@If Freq$ = "0" Then Result = 19999
¡@¡@Call PortOut(&H61&, PortIn(&H61&) Or &H3&) : Call PortOut(&H43, &HB6&)
¡@¡@R2 = 1193180 / Result : Lo = R2 And &HFF& : Hi = R2 \ &H100&
¡@¡@Call PortOut(&H42, Lo) : Call PortOut(&H42, Hi)
¡@¡@If SSL = 0 Then SSL = 1
¡@¡@If SSL > 10 Then SSL = 10
¡@¡@t1 = Timer
¡@¡@Do Until Timer - t1 >= 1 * SSL / length: DoEvents: Loop
¡@Next i
¡@Call PortOut(&H61&, PortIn(&H61&) And &HFC&)
End Sub

67

¦p¦óÅýVBªí³æ¦b³]­p¶¥¬q¥i¥H©Ô¦Ü¤ñ¿Ã¹õ¸ÑªR«×ÁÙ¤j

³o­Ó¤èªk¬O¨Ì·Ó¤W¤@½g(66)¦Ó¨Óªº!

¦U¦ìÀ³¸Ó¥i¥Hµo²{:¦b§Ú­Ì½s¼gµ{¦¡®É(³]­p¶¥¬q)¡Aªí³æªº¤j¤p³Ì¤j¥u¯à©Ô¦Ü©M¿Ã¹õªºwidth/height¤@¼Ë¡A¦A¤j´N©Ô¤£°Ê¤F¡F

²{¦b§Ú­Ì¥i¥H¦b³]­p¶¥¬q¦³§ó¤jªºªí³æªÅ¶¡¡A

'°²³]²{¦b¿Ã¹õªø¼e¬° 800 x 600¡A¥ý°õ¦æ¹L¥H¤U³o¬qµ{¦¡:

¡@Dim s As Long, B As Long
¡@B = 16
¡@x = 1024

¡@y = 768

¡@s = y * 2 ^ 16 + x

¡@SendMessage HWND_BROADCAST, WM_DISPLAYCHANGE, ByVal B, ByVal s
¡@End

²{¦b¡A¦A¥h©Ô¤j§AªºVBªí³æ¡A´N·|µo²{:¶W¹L800x600ÁÙ¥i¥H¦A©Ô¤j¨ì1024x768

¦Ó¦¹®É¥h¬d¤@¤UScreen.Width/Height¡A©~µMÅܦ¨©M1024x768®É¤@¼Ë¤F¡A¦ý¿Ã¹õ«o¨S¦³ÅܤÆ(¦]¬°§Ú­Ì¨Ã¨S¦³¯u¥¿¥h§ï¸ÑªR«×) ....©Ò¥H¡A¤U¦¸§O»´©ö¬Û«HScreen.Width/Height§i¶D§Aªº¼Æ¾Ú¡A¦]¬°¥¦¤ñ§AÁÙ®e©ö³QÄF!....^_^

66

§ïÅܸѪR«×¤§«á¦p¦óµo§G°T®§µ¹¦U­Óµøµ¡

¦b¨ä¥L§ïÅܸѪR«×½d¨Ò¤¤¡A¸g±`©¿²¤¤F³o­Ó°Ê§@¡A¤×¨ä¬O¥Ñ¤jÅܤp®É¡A¨Ï±o¨ä¥Lµøµ¡µLªk¦Û°ÊÂk¦ì(¨Ò¦p:¤u§@¦C...)
'«Å§i±`¼Æ
Const HWND_BROADCAST = &HFFFF&
Const WM_DISPLAYCHANGE = &H7E
Const BITSPIXEL = 12
'µo§G°T®§
B=GetDeviceCaps(Getdc(0), BITSPIXEL)
'¨ú±o²{¦b¨Ï¥ÎÃC¦â¼Æ
S = Y * 2 ^ 16 + X
'Y¬°·sªº¿Ã¹õ°ª«×¡AX¬°¼e«×
SendMessage HWND_BROADCAST, WM_DISPLAYCHANGE, ByVal B, ByVal S

65

¦p¦ó§â¸ê®Æ¶ñ¦bForms 2.0 ListboxªºColumnùØ

Forms 2.0 ListboxªºColumn©MVB¤º«Ø¤§ListboxªºColumn¦³¨Ç¤£¦P¡A¥¦¦³ÂI¹³¬OListView¤¤ªºSubitem¡A¦Ó¤£¬O¹³VB¤º«ØListbox¤¤ªºColumn¬OListitemªº¾î¦VÅã¥Ü!

Private Sub Form_Load()
¡@ListBox1.Font.Size = 12
¡@ListBox1.ColumnHeads = True
¡@ListBox1.ColumnCount = 3
¡@ListBox1.AddItem "test1", 0
¡@ListBox1.Column(1, 0) = "test1-1"
¡@ListBox1.Column(2, 0) = "test1-2"
¡@ListBox1.AddItem "test2", 1
¡@ListBox1.Column(1, 1) = "test2-1"
¡@ListBox1.Column(2, 1) = "test2-2"
End Sub

64

¦p¦ó±oª¾ListView­þ¤@­Ósub_item³Q«ö¤U¤F

¤@¯ë¦bListView¤¤¥[¤JListItems¡BSubItems¤§«á¡Aµo²{¥u¦³ListItems«ö¤F¤~¦³¤ÏÀ³¡ASubItems«oµLªk¦^À³¡A§ó§O»¡­n¦p¦ó±oª¾«ö¦b¨º¤@­ÓSubItems¤W¤F¡CÃöÁä¦b©óFullRowSelectªº³]©w:

Private Sub Form_Load()
¡@ListView1.View = lvwReport

¡@ListView1.ColumnHeaders.Add , , "main"
¡@ListView1.ColumnHeaders.Add , , "sub1"

¡@ListView1.ColumnHeaders.Add , , "sub2"
¡@ListView1.ListItems.Add , "test1", "test1"
¡@ListView1.ListItems("test1").SubItems(1) = "test1-1"

¡@ListView1.ListItems("test1").SubItems(2) = "test1-2"
¡@ListView1.ListItems.Add , "test2", "test2"
¡@ListView1.ListItems("test2").SubItems(1) = "test2-1"
¡@ListView1.ListItems("test2").SubItems(2) = "test2-2"
¡@ListView1.
FullRowSelect = True
¡@ListView1.Move 0, 0, 3000, 1500
End Sub
Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
¡@a = x - ListView1.SelectedItem.Left
¡@For i = 1 To ListView1.ColumnHeaders.Count
¡@¡@If (ListView1.ColumnHeaders(i).Left <= a) And (a <= ListView1.ColumnHeaders(i).Left + ¡@¡@ListView1.ColumnHeaders(i).Width) Then Form1.Caption ="²Ä" & i & "­Ó¶µ¥Ø": Exit For
¡@Next i
End Sub

'®y¼Ð¡BSubitem³£ª¾¹D¤F¡A¦A¨Ó­n¦p¦ó­×§ï´N¬Ý¦U¦ìºô¤Í¦Û¤v°ª¿³¤F!

63

¦p¦óø»sµ¥Ãä¦hÃä§Î

¨£©ó«Ü¦hºô¤Í³ºµM³s°ò¥»ªº¶êªº¤½¦¡³£¤£ª¾¹D¡A¯S±N½d¨Ò©ñ©ó¦¹...

±N¤@­Ó¶ê¤À¦¨¼Æµ¥¥÷¡A³v¤@³sµ²¦Uµ¥¤ÀÂI§Y¬Oµ¥Ãä¦hÃä§Î:

Const pi = 3.14159265358979 '¶ê©P²v
Private Sub Form_Load()
¡@Form1.AutoRedraw = True: Form1.Show
¡@n = 6: cx = 1000: cy = 1000: r = 800
'n=Ã伯; cx,cy=¶ê¤ß®y¼Ð; r=¥b®|
¡@For i = 0 To 360 Step 360 / n '±N¶ê¤À¦¨ n µ¥¥÷
¡@¡@If i = 0 Then PSet (cx + Cos(i / 180 * pi) * r, cy - Sin(i / 180 * pi) * r)
'©w¦ì±Ò©lÂI
¡@¡@Line -(cx + Cos(i / 180 * pi) * r, cy - Sin(i / 180 * pi) * r)
'³v¤@³s½u
¡@Next i
End Sub

62

¦p¦ó°ÊºA¤Þ¥Î¦Û©wª«¥ó¶°¦X¤Î¼W¥[ª«¥ó

¥Hªü¥³ªºActiveX¤¤ªº©_«¬«ö¶s¬°¨Ò:

¡@Dim A As Object
¡@Licenses.Add "KMCmdBtn.UserControl1" 
'°ÊºA«Å§i¤Þ¥Îª«¥ó¤§ProgID
¡@Set A = Controls.Add("KMCmdBtn.UserControl1", "A", Form1) 
'¼W¥[ª«¥ó
¡@A.Visible = True
'¥¼ª¾ªºProgID¥i¥Ñ¸Óª«¥óÀɦW¸gRegedit.exe·j´Mµù¥U¶µ¥Ø¡A¨ä¤l¾÷½XProgID¤¤¤§¦r¦ê§Y¬O!

61

¨Ï¥ÎGflAX1.93¨Óµ¥¤ñ¨Ò©ñ¤jÁY¤p¹Ï§Î

¦³ºô¤Í»{¬°GflAXµLªk°µ¨ì....¦pªG³s³oºØ¶W°ò¥»ªº¥\¯à³£¨S¦³¡Aªü¥³¤]¤£·|±ÀÂ˵¹¦U¦ì¤F

Dim b As New GflAx193.GflAx
Private Sub Form_Load()
¡@Form1.WindowState = 2 : Form1.AutoRedraw = True : Form1.ScaleMode = 3 : Form1.Show
¡@Picture1.AutoRedraw = True
¡@CommonDialog1.ShowOpen
¡@b.
LoadBitmap CommonDialog1.FileName
¡@Set Form1.Picture = b.
GetPicture '­ì¹Ï
¡@Picture1.Move Form1.ScaleWidth - b.Width / 2, Form1.ScaleHeight - b.Height / 2, b.Width / 2, b.Height / 2
¡@b.
Resize b.Width / 2, b.Height / 2
¡@Set Picture1.Picture = b.
GetPicture 'µ¥¤ñ¨ÒÁY¤p¬°1/2
End Sub

½s¸¹¤ÀÃþ

±M®×¥Øªº/»¡©ú(²Ä  4, 3, 2, 1­¶)