§3 複数のフォーム VB6 | |
(3) スプラッシュウィンドウU |
4. 実際的なスプラッシュウィンドウ
これまでのサンプルでは、スプラッシュウィンドウをクリックするか何かキーを押すまで、Form1の実行が始まらない。
実際には、スプラッシュウィンドウが表示されている間も、Form1(本体となるプログラム)が実行されており、初期化などを済ませておいてもらわなくては意味がない。
新規フォームを用意する。スプラッシュウィンドウを追加するため、メニューバーから[プロジェクト(P)] → [フォームモジュールの追加(F)]を選択し、表示されたダイアログから「見出し画面」を選択する。
新規フォーム(Form1)が開発するプログラムの本体とする。
スプラッシュウィンドウから実行されるように、プロジェクトウィンドウのProject1を右クリックして、メニューから[Project1のプロパティ(E)...]を選択し、表示されるダイアログの「スタートアップの設定(S)」を"frmSplash"に変更する。
・プログラムリスト(Form1)
Option Explicit
Private Sub Form_Load()
Dim n1 As Integer, n2 As Integer
Dim a As Integer, b As Integer, c As Integer
For n1 = 1 To 1000 '架空の初期化処理
For n2 = 1 To 1000
a = n1 + n2
b = (n1 + n2) * 2
c = (n1 + n2) * 3
Next n2
Next n1
End Sub
3つの計算式を1000*1000回繰り返しているだけである。実際には初期値の設定などの初期化処理が行われる。
・プログラムリスト(スプラッシュウィンドウ frmSplash)
Option Explicit Private Sub Form_KeyPress(KeyAscii As Integer) Unload Me End Sub Private Sub Form_Load() lblVersion.Caption = "バージョン " & App.Major & "." & App.Minor & "." & App.Revision lblProductName.Caption = App.Title Me.Show '*1 自分自身を表示 DoEvents '*2 制御をWindowsに渡す Load Form1 '*3 Form1をロードして実行を開始 Form1.Show '*4 Form1を表示 Unload Me '*5 自分自身をメモリから消去 End Sub Private Sub Frame1_Click() Unload Me End Sub
*1 → *2 → *3 → *4 → *5 の順に実行される。
プログラムを実行するとメモリにロードされてForm_Loadプロシージャが実行され、Form_Loadプロシージャの実行が完了してからウィンドウが表示される。このプログラムではForm_Loadの実行が完了する前に*5でメモリから消去しているので、スプラッシュウィンドウが表示されない。そのため、最初に*1で自分自身を表示している。
*3フォームをロードして、すぐに*4フォームを表示しているので、Form1がすぐに表示されそうである。しかし、実際には*2の命令のおかげで、*3フォームをロードしてから、Form1_Loadプロシージャが実行される。Form1_Loadプロシージャの実行が完了してから*4フォームを表示される。
*1のMeはここではfrmSplashのことであるから、frmSplash.Showと書いたのと同じである。*5も同じ。
Form_KeyPressとFrame1_Clickサブプロシージャはなくてもよい。
スプラッシュウィンドウとして、「見出し画面」を追加したが、普通のフォーム(フォームモジュール)をスプラッシュウィンドウとして使ってもかまわない。
(3) スプラッシュウィンドウU | |
Copyright © 2002 Hiroshi Masuda |