新觀念的
This presentation is the property of its rightful owner.
Sponsored Links
1 / 70

新觀念的 VB6 教本 PowerPoint PPT Presentation


  • 118 Views
  • Uploaded on
  • Presentation posted in: General

新觀念的 VB6 教本. 第 16 章 螢幕保護程式. 螢幕保護程式,入門式 (1). 螢幕保護程式怎麼製作呢?首先讓我們來檢視 Windows 所提供的螢幕保護程式,請利用檔案總管搜尋 Windows 及 Windows\System 目錄底下的 . scr 檔案,以 Windows 98 為例,可以找到以下幾個螢幕保護程式:. 螢幕保護程式,入門式 (2). 螢幕保護程式,入門式 (3).

Download Presentation

新觀念的 VB6 教本

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Vb6

新觀念的 VB6 教本

第 16 章 螢幕保護程式


Vb6

螢幕保護程式,入門式 (1)

  • 螢幕保護程式怎麼製作呢?首先讓我們來檢視 Windows 所提供的螢幕保護程式,請利用檔案總管搜尋Windows及Windows\System 目錄底下的 .scr檔案,以 Windows 98為例,可以找到以下幾個螢幕保護程式:


Vb6

螢幕保護程式,入門式 (2)


Vb6

螢幕保護程式,入門式 (3)

  • 接著將任何一個 .scr 複製成為 test.exe 檔案,然後執行此一 test.exe 檔案,結果發現 test.exe 是可以執行的,這個試驗告訴我們 .scr 的螢幕保護程式其實就是一般的執行檔,只是它以 .scr 為副檔名,因此將來我們開發螢幕保護程式時,最後在編譯執行檔時(選取 VB 功能表的「檔案/製成XXX.exe」),也只要以 .scr為執行檔副檔名即可。


Step1 1

螢幕保護程式 第一版Step1-1

  • 如下圖佈置控制元件,並設定好相關物件的屬性:


Step1 2

螢幕保護程式 第一版Step1-2


Step1 3

螢幕保護程式 第一版Step1-3

  • 在以上的屬性中,比較值得的部分是表單的屬性,首先是將背景顏色(BackColor屬性)設定成黑色,接著還要將標題(Caption屬性)清成空白、邊框(BorderStyle 屬性)設定成 "0 - 沒有框線"、表單狀態(WindowsState 屬性)設定成 "2 - 最大化",將來執行時,才會出現「純黑佔滿螢幕」的表單。


Step 2

螢幕保護程式 第一版Step 2

2. 在 Timer1_Timer 事件程序中撰寫以下程式:

  • 以上程式會促使 "歡迎使用大嘴巴的電腦!" 文字自右向左移動。

Private Sub Timer1_Timer() ' 左移文字寬度的 1/20Label1.Left = Label1.Left - Label1.Width / 20 If Label1.Left + Label1.Width < 0 Then ' 如果超過左邊界Label1.Left = Form1.ScaleWidth ' 移到右邊界End IfEnd Sub


Step 3

螢幕保護程式 第一版Step 3

  • 在 Form_Resize 事件程序中撰寫以下程式:

  • 以上程式的目的是當表單放到最大時,將 Label1 的位置設定於右邊界的中央位置。

Private Sub Form_Resize() ' 將文字的位置設定於表單右邊界的中央位置Label1.Left = Form1.ScaleWidth Label1.Top = (Form1.ScaleHeight - Label1.Height) / 2End Sub


Step 4

螢幕保護程式 第一版Step 4

  • 在 Form_KeyDown 事件程序中撰寫以下程式:

  • 當程式偵測到使用者按下鍵盤時,即呼叫 Unload Me 載出表單。

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Unload Me ' 載出表單End Sub


Step 5

螢幕保護程式 第一版Step 5

  • 接著執行程式,測試看看,結果螢幕會被黑色背景的表單所佔滿,而 "歡迎使用大嘴巴的電腦!" 的文字會自左向右移動。測試之後,結束程式的方法是按下鍵盤的任意按鍵。

  • 就一般螢幕保護程式的習慣來說,除了按鍵會終止螢幕保護程式之外,移動滑鼠也要能夠終止螢幕保護程式,因此接下來讓我們繼續加入滑鼠移動的偵測程式。


Step 6

螢幕保護程式 第一版Step 6

  • 在 Form_MouseMove 事件程序中撰寫以下程式:

  • 以上程式在偵測到滑鼠移動時,也一樣呼叫 Unload Me 載出表單結束程式。

Dim X0 As Single, Y0 As Single ' 用來記錄滑鼠的位置Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) ' 第一次發生滑鼠事件時,將位置記錄於 (X0,Y0) If X0 = 0 And Y0 = 0 Then X0 = X: Y0 = Y ' 如果滑鼠位置改變,就載出表單If X <> X0 Or Y <> Y0 Then Unload MeEnd Sub


Saver01 scr 1

製作成 saver01.scr (1)

  • 剛才我們所完成的螢幕保護程式只有 VB的工作環境底下進行測試,如何讓它真正地變成 Windows 的螢幕保護程式呢?

  • 首先要選取 VB 功能表的「檔案/製成XXX.exe」,而在接下來所出現的「製成執行檔」交談窗中,應將執行檔的副檔名由 .exe更改為 .scr,並且將路徑設定於Windows的所在目錄 。


Saver01 scr 2

製作成 saver01.scr (2)

  • 如下圖:


Saver01 scr 11

測試saver01.scr(1)

  • 完成程式的編譯之後,在 Windows 的桌面上按下滑鼠右鈕,待出現快顯功能表時,選取「內容」命令,接著選取「螢幕保護裝置」頁籤,然後拉下「螢幕保護裝置」,過程如下圖,結果可以在其中找到 saver01,這就是我們所製作出來的螢幕保護程式。


Saver01 scr 21

測試saver01.scr(2)


Saver01 scr 3

測試saver01.scr(3)

  • 選取 saver01之後,螢幕保護程式就會開始執行,這表示我們已經踏出了第一步。接著移動滑鼠結束 saver01 程式,再讓我們進行以下的測試:


Saver01 scr

測試saver01.scr -- 測試一

  • 如上圖,設定「等待」時間,然後按下「套用」鈕,接下來靜候一分鐘,不要操作鍵盤與滑鼠,結果一分鐘之後 Windows 會啟動 saver01螢幕保護程式。


Saver01 scr1

測試saver01.scr -- 測試二

  • 如上圖,按下「預覽」鈕,結果 saver01螢幕保護程式也會被啟動,進入螢幕保護程式的預覽狀態。


Saver01 scr 12

測試saver01.scr -- 測試三(1)

  • 如上圖,按下「設定值」鈕,結果 saver01 螢幕保護程式也會被啟動,這一點好像不太對,因為標準的螢幕保護程式此時會出現設定的畫面。


Saver01 scr 22

測試saver01.scr -- 測試三(2)

  • 如果所選取的螢幕保護程式是 "Flying Windows",則按下「設定值」鈕時,會出現以下交談窗,輸入螢幕保護程式的設定值:


Saver01 scr2

測試saver01.scr -- 測試四

  • 如上圖,先核取「密碼保護」,然後按下「變更」鈕,結果 saver01 螢幕保護程式也會被啟動,而不像標準的螢幕保護程式一樣會出現密碼設定畫面。


Vb6

螢幕保護程式 第二版 (1)

  • 經過以上的測試之後,我們知道 saver01應該改善的地方是當使用按下「設定值」及「密碼保護 -> 變更」時,不要執行螢幕保護程式。如何知道使用者是按下「設定值」及「密碼保護 -> 變更」呢?


Vb6

螢幕保護程式 第二版 (2)

  • 其實當 Windows 啟動螢幕保護程式時,會在 .scr 執行檔之後附帶可以判別被啟動方式的參數,如下:

  • 如果參數的兩個字元等於 "/a" 或 "/A"

  • 如果參數的兩個字元等於 "/c" 或 "/C"

  • 如果參數的兩個字元等於 "/p" 或 "/P"

  • 其他


Vb6

螢幕保護程式 第二版 (3)

  • 如果參數的兩個字元等於“/a”或“/A”:表示螢幕保護程式是因為使用者按下「密碼保護 -> 變更」而被啟動的。

  • 如果參數的兩個字元等於 "/c" 或 "/C":表示螢幕保護程式是因為使用者按下「設定值」而被啟動的。

  • 如果參數的兩個字元等於 "/p" 或 "/P":表示螢幕保護程式是因為第一次被選取而被啟動的。

  • 其他:表示螢幕保護程式是因為使用者按下「預覽」或等待時間已到而被啟動的。


Part i 1

改良程式 -- Part I (1)

  • 因此為了改變螢幕保護程式第一版的缺點,筆者在 Form_Load 事件程序中(會在表單被載入時被執行)撰寫以下程式:


Part i 2

改良程式 -- Part I (2)

Private Sub Form_Load() If UCase(Left(Command, 2)) = "/A" Then ' 密碼設定MsgBox "此一螢幕保護程式未提供「密碼保護」功能!"Unload Me End If If UCase(Left(Command, 2)) = "/C" Then ' 設定值MsgBox "此一螢幕保護程式沒有「設定值」!"Unload Me End If If UCase(Left(Command, 2)) = "/P" Then ' 小螢幕Unload Me End If…End Sub


Part ii

改良程式 -- Part II

Private Sub Form_Load() If UCase(Left(Command, 2)) = "/A" Then ' 密碼設定MsgBox "此一螢幕保護程式未提供「密碼保護」功能!"Unload Me End If If UCase(Left(Command, 2)) = "/C" Then ' 設定值MsgBox "此一螢幕保護程式沒有「設定值」!"Unload Me End If If UCase(Left(Command, 2)) = "/P" Then ' 小螢幕Unload Me End If If App.PrevInstance Then ' 已經在執行中Unload Me End IfEnd Sub

  • 在 Form_Load 件程序的最後面增加了以下敘述:


Vb6

16-2 螢幕保護程式,變化式


Saver2a vbp

跳躍的直線 -- saver2a.vbp

  • 此一螢幕保護程式在表單上描繪一寬度等於 5 的直線,而每次直線描繪的位置及長度都是不固定的,因此感覺就像是「跳躍的直線」。


Step 0 3

跳躍的直線 –Step 0~3

0. 以上一節的 saver02.vbp 專案為基礎。

  • 佈置 Line 控制元件(工具箱的 ),並設定好以下屬性:

  • 刪除 Label1 控制元件。

  • 刪除 Form_Resize 事件程序。


Step 41

跳躍的直線 -- Step 4

4. 更改 Timer1_Timer 事件程序的內容:

Private Sub Timer1_Timer() Line1.BorderColor = QBColor(Int(16 * Rnd)) Line1.X1 = Int(Form1.ScaleWidth * Rnd) Line1.Y1 = Int(Form1.ScaleHeight * Rnd) Line1.X2 = Int(Form1.ScaleWidth * Rnd) Line1.Y2 = Int(Form1.ScaleHeight * Rnd)End Sub


Saver2b vbp

反彈球 -- saver2b.vbp

  • 此一螢幕保護程式會移動圓形圖示,而只要此一圖示撞到表單邊框時,即會反彈。


Step 0 2

反彈球 -- Step 0~2

0.以上一節的 saver02.vbp 專案為基礎。

1.佈置 Image 控制元件,並且將其 Picture 屬性設定成本書 ch16目錄底下的 moon05.ico 圖示檔。

2.刪除 Label1 控制元件及 Form_Resize 事件程序。


Step 3 1

反彈球 -- Step 3-1

  • 更改 Timer1_Timer 事件程序的內容:

Dim X0 As Single, Y0 As Single ' 這是既有的敘述Dim Motion As Integer ' 這是新增的敘述Private Sub Timer1_Timer() Dim offset As Integer If Motion = 0 Then Motion = 3 offset = Image1.Width \ 10


Step 3 2

反彈球 -- Step 3-2

Select Case Motion Case 1 ' 向左上角移動Image1.Move Image1.Left - offset, Image1.Top - offset If Image1.Left <= 0 Then Motion = 2 ElseIf Image1.Top <= 0 Then Motion = 4 End If

Case 2 ' 向右上角移動Image1.Move Image1.Left + offset, Image1.Top - offset If Image1.Left >= (Form1.ScaleWidth - Image1.Width) Then Motion = 1 ElseIf Image1.Top <= 0 Then Motion = 3 End If


Step 3 3

反彈球 -- Step 3-3

Case 3 ' 向右下角移動Image1.Move Image1.Left + offset, Image1.Top + offset If Image1.Left >= (Form1.ScaleWidth - Image1.Width) Then Motion = 4 ElseIf Image1.Top >= (Form1.ScaleHeight - Image1.Height) Then Motion = 2 End If Case 4 ' 向左下角移動Image1.Move Image1.Left - offset, Image1.Top + offset If Image1.Left <= 0 Then Motion = 3 ElseIf Image1.Top >= (Form1.ScaleHeight - Image1.Height) Then Motion = 1 End If End SelectEnd Sub


Saver2c vbp

月有陰晴圓缺 -- saver2c.vbp

  • 此一螢幕保護程式除了圖示撞到表單邊框會反彈之外,圖示也會產生月有陰晴圓缺的變化。


Step 0 1 1

月有陰晴圓缺 -- Step 0~1-1

0. 以上一節的 saver02.vbp 專案為基礎。

1. 佈置 Image2 控制元件陣列,並設定好 Picture 屬性,此外 Image2 控制元件陣列每一個元素的 Visible 屬性都設定為 False 。


Step 1 2

月有陰晴圓缺 -- Step 1-2


Step 2 1

月有陰晴圓缺 -- Step 2-1

2. 修改 Timer1_Timer 事件程序的程式:

Dim X0 As Single, Y0 As SingleDim Motion As IntegerDim Index As Integer ' 新增Private Sub Timer1_Timer() Set Image1.Picture = Image2(Index).Picture ' 新增 Dim offset As Integer If Motion = 0 Then Motion = 3 offset = Image1.Width \ 10 Select Case Motion


Step 2 2

月有陰晴圓缺 -- Step 2~2

Case 1 ' 向左上角移動Image1.Move Image1.Left - offset, Image1.Top - offset If Image1.Left <= 0 Then Motion = 2 ElseIf Image1.Top <= 0 Then Motion = 4 End IfCase 2 ' 向右上角移動Image1.Move Image1.Left + offset, Image1.Top - offset If Image1.Left >= (Form1.ScaleWidth - Image1.Width) Then Motion = 1 ElseIf Image1.Top <= 0 Then Motion = 3 End If


Step 2 3

月有陰晴圓缺 -- Step 2~3

Case 3 ' 向右下角移動Image1.Move Image1.Left + offset, Image1.Top + offset If Image1.Left >= (Form1.ScaleWidth - Image1.Width) Then Motion = 4 ElseIf Image1.Top >= (Form1.ScaleHeight - Image1.Height) Then Motion = 2 End If


Step 2 4

月有陰晴圓缺 -- Step 2~4

Case 4 ' 向左下角移動Image1.Move Image1.Left - offset, Image1.Top + offset If Image1.Left <= 0 Then Motion = 3 ElseIf Image1.Top >= (Form1.ScaleHeight - Image1.Height) Then Motion = 1 End If End Select Index = Index + 1 ' 新增If Index = 8 Then Index = 0 ' 新增End Sub


Saver2d vbp

砲火交織 -- saver2d.vbp

  • 此一螢幕保護程式會在表單上連續描繪寬度等於 5 的直線,每次的描繪總是接續上一直線,而直線的顏色及長度都是不固定的,因此感覺就像是「砲火交織」。


Step 0 21

砲火交織 – Step 0~2

0.以上一節的 saver02.vbp 專案為基礎。

1.刪除 Label1 控制元件及 Form_Resize 事件程序。

2.更改 Timer1_Timer 事件程序的程式:

Private Sub Timer1_Timer() Form1.DrawWidth = 5 X = Int(Form1.ScaleWidth * Rnd) Y = Int(Form1.ScaleHeight * Rnd) Line -(X, Y), RGB(Rnd * 255, Rnd * 255, Rnd * 255)End Sub


Saver2e vbp

星火點點 -- saver2e.vbp


Step 0 22

星火點點 – Step 0~2

0. 以上一節的 saver02.vbp 專案為基礎。

1. 刪除 Label1 控制元件及 Form_Resize 事件程序。

2. 更改 Timer1_Timer 事件程序的程式:

Private Sub Timer1_Timer() Form1.DrawWidth = 5 X = Rnd * Form1.ScaleWidth Y = Rnd * Form1.ScaleHeight PSet (X, Y), RGB(Rnd * 255, Rnd * 255, Rnd * 255)End Sub


Saver2f vbp

陣陣漣漪 -- saver2f.vbp


Step 0 23

陣陣漣漪 – Step 0~2

0.以上一節的 saver02.vbp 專案為基礎。

1.刪除 Label1 控制元件及 Form_Resize 事件程序。

2.更改 Timer1_Timer 事件程序的程式:

Private Sub Timer1_Timer() Form1.DrawStyle = 1 ' 破折線X = Form1.ScaleWidth / 2 Y = Form1.ScaleHeight / 2 R = Y * Rnd Circle (X, Y), R, RGB(Rnd * 255, Rnd * 255, Rnd * 255)End Sub


Saver2g vbp

亂數拼圖 -- saver2g.vbp


Step 0 24

亂數拼圖 – Step 0~2

0.以上一節的saver02.vbp專案為基礎。

1.刪除 Label1 及 Form_Resize 事件程序。

2.佈置 Image1 控制元件,並且將 Picture 屬性設定成本書 ch16 目錄底下的 bear.bmp。


Step 31

亂數拼圖 – Step 3

3.新增 Paint 事件程序:

由於表單的大小(例如 800×600)可能大於圖片大小(bear.bmp 圖片的大小是 640×480),因此以上程式所求取的 (offsetX, offsetY)將可做為圖片的原點,而使得圖片顯示在螢幕中央。

Dim offsetX As Integer, offsetY As IntegerPrivate Sub Form_Paint() Form1.ScaleMode = 3 ' 像素offsetX = (Form1.ScaleWidth - 640) \ 2 offsetY = (Form1.ScaleHeight - 480) \ 2 PaintPicture Image1.Picture, offsetX, offsetYEnd Sub


Step 42

亂數拼圖 – Step 4

4.更改 Timer1_Timer 事件程序的內容:

Private Sub Timer1_Timer() X1 = Int(Rnd * 4) * 160 Y1 = Int(Rnd * 3) * 160 X2 = Int(Rnd * 4) * 160 Y2 = Int(Rnd * 3) * 160 PaintPicture Image1.Picture, X1 + offsetX, Y1 + offsetY, _ 160, 160, X2, Y2, 160, 160End Sub


Vb6

16-3 螢幕保護程式,設定式


Vb6

建立設定表單(1)

  • 首先假設我們提供給使用者以下的參數設定功能:文字內容:例如 “歡迎使用大嘴巴的電腦!”。字型名稱。字型大小。字型樣式:包含粗題、斜體、底線、刪除線。


Vb6

建立設定表單 (2)

  • 完成的設定表單如下:


Vb6

新增表單

  • 選取 VB 功能表的「專案/新增表單」,接著在所出現的「新增表單」交談窗中選取「表單」,按下「開啟舊檔」鈕即可,過程如下圖:


Vb6

儲存設定值的方法 (1)

  • 不同表單之間的資料是各自獨立的,因此當使用者在 Form2 設定好資料之後,必須將設定值儲存在另一個可供 Form1 讀取的地方,一般來說最簡便的方法是利用 SaveSetting 函數,此一函數可將資料存放於系統登錄區,呼叫格式如下:

SaveSetting 應用程式名, 資料區段名, 鍵名, 值


Vb6

儲存設定值的方法 (2)

  • 首先請參考以下系統登錄區的基本結構:


Vb6

儲存設定值的方法 (3)


Getsetting

儲存設定值的方法 –GetSetting 函數

  • 與 SaveSetting 相對的函數是稱為 GetSetting,其用途是讀取系統登錄區的資料,以讀取剛才所儲存的資料為例,對應的讀取敘述如下:

  • 以上敘述中的最後一個參數稱為「預設值」,當 GetSetting 無法從系統登錄區讀取到資料時,會傳回「預設值」充數。

X1 = GetSetting("saver03", "saver03", "Content", _ "歡迎使用大嘴巴的電腦!")X2 = GetSetting("saver03", "saver03", "FontName", "細明體")X3 = GetSetting("saver03", "saver03", "FontSize", 12)X4 = GetSetting("saver03", "saver03", "Bold", 0)X5 = GetSetting("saver03", "saver03", "Italic", 0)X6 = GetSetting("saver03", "saver03", "Underline", 0)X7 = GetSetting("saver03", "saver03", "StrikeThrough", 0)


Vb6

完整的設定表單程式(1)

Private Sub Command1_Click() ' 「確定」鈕 ' 寫入設定值到系統登錄區SaveSetting "saver03", "saver03", "Content", txtContent.Text SaveSetting "saver03", "saver03", "FontName", cmbFonts.Text SaveSetting "saver03", "saver03", "FontSize", cmbSize.Text SaveSetting "saver03", "saver03", "Bold", chkBold.Value SaveSetting "saver03", "saver03", "Italic", chkItalic.Value SaveSetting "saver03", "saver03", "Underline", _ chkUnderline.Value SaveSetting "saver03", "saver03", "StrikeThrough", _ chkStrikeThrough.Value Unload MeEnd Sub


Vb6

完整的設定表單程式(2)

Private Sub Command2_Click() ' 「取消」鈕Unload MeEnd SubPrivate Sub Form_Load() ' 設定好可供選取的字型For I = 0 To Screen.FontCount - 1 cmbFonts.AddItem Screen.Fonts(I) Next ' 從系統登錄區讀回系統設定值txtContent.Text = GetSetting("saver03", "saver03", "Content", _ "歡迎使用大嘴巴的電腦!")


Vb6

完整的設定表單程式(3)

cmbFonts.Text = GetSetting("saver03", "saver03", "FontName", _ "細明體")cmbSize.Text = GetSetting("saver03", "saver03", "FontSize", 12) chkBold.Value = GetSetting("saver03", "saver03", "Bold", 0) chkItalic.Value = GetSetting("saver03", "saver03", "Italic", 0) chkUnderline.Value = GetSetting("saver03", "saver03", _ "Underline", 0) chkStrikeThrough.Value = GetSetting("saver03", "saver03", _ "StrikeThrough", 0)End Sub


Vb6

主表單的程式修改(1)

Private Sub Form_Load() If UCase(Left(Command, 2)) = "/A" Then ' 密碼設定MsgBox "此一螢幕保護程式未提供「密碼保護」功能!"Unload Me: End End If If UCase(Left(Command, 2)) = "/C" Then ' 設定值Form2.Show vbModal' 顯示「設定表單」Unload Me: End End If If UCase(Left(Command, 2)) = "/P" Then ' 小螢幕Unload Me: End End If


Vb6

主表單的程式修改 (2)

If App.PrevInstance Then ' 已經在執行中Unload Me: End End If

' 讀取系統登錄區的設定值,然後設定給 Label1 Label1.Caption = GetSetting("saver03", "saver03", "Content", _ "歡迎使用大嘴巴的電腦!")Label1.Font.Name = GetSetting("saver03", "saver03", _ "FontName", "細明體")


Vb6

主表單的程式修改 (3)

Label1.Font.Size = GetSetting("saver03", "saver03", _ "FontSize", 12) Label1.Font.Bold = GetSetting("saver03", "saver03", "Bold", 0) Label1.Font.Italic = GetSetting("saver03", "saver03", _ "Italic", 0) Label1.Font.Underline = GetSetting("saver03", "saver03", _ "Underline", 0) Label1.Font.Strikethrough = GetSetting("saver03", "saver03", _ "StrikeThrough", 0)End Sub


Vb6

主表單的程式修改 (4)

  • 在以上程式中,有三個重點:

    1. 載入設定表單Form2:此時所呼叫的敘述是:

    2. 讀取系統登錄區的設定值,然後設定給 Label1,這段程式也是呼叫GetSetting函數,應該不難瞭解。

Form2.Show vbModal' 顯示「設定表單」


Vb6

主表單的程式修改 (5)

3.結束程式的方法:原本結束程式的方法是 Unload Me,這是因為原來的螢幕保護程式只有一個表單,所以載出表單就等於結束程式,但是新版的螢幕保護程式卻含有兩個表單,因此在 Form1 之中呼叫 Unload Me 只能載出 Form1,無法載出 Form2,也就無法真正地結束程式,為了確實將程式結束,所以除了呼叫 Unload Me 之外,還要執行 End。


  • Login