§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 

 

 

inserted by FC2 system