inserted by FC2 system スクリーンセーバーの作り方のポイント(Visual Basic 6)
VBでスクリーンセーバを作る場合には

スクリーンセーバを作る場合に必要な事は、以下の事項を解決する必要あり。
1)ツールバーを消す
2)画面いっぱいのサイズにする、最前面に表示する(IMEのバーなどより前に)
3)二重起動防止
4)マウスアイコンを消す
5)入力を感知して終了。
6)設定画面の表示
7)scrファイルの作成

各論の解決方法
1)ツールバーを消す
 Formのプロパティの操作から、BorderStyleを0に設定する。
2)画面いっぱいのサイズにする、最前面に表示する(IMEのバーなどより前に)
 次のコードで画面いっぱいのサイズにする。同時に、最前面に表示する。
' Private Sub Form_Load()内
Me.WindowState = vbMaximized
3)二重起動防止
 通常のスクリーンセーバの起動は、既にスクリーンセーバが起動してようがしていまいが、Windowsは所定の周期がくると勝手に起動させてくる。また、二重起動するとスクリーンセーバのエラーが発生し停止してしまう。このため、スクリーンセーバには二重起動防止機構が不可欠である。
 以下のコードは、二重起動チェックを行い、二重起動が起こる前に二重起動ソフトを終了させるコードである。
'** 二重起動チェック、Private Sub Form_Load()内
If App.PrevInstance Then
End
End If
4)マウスアイコンを消す
 マウスアイコンを消すのは容易ではない。Windowsの機能を標準モジュールから以下のコードで呼び出す。ShowCursor (False)でマウスアイコンが消え、ShowCursor (True) マウスアイコンが現れる。プログラム終了時にShowCursor (True)にしないとマウスアイコンが消えたままで、Windows自体のコントロールができなくなるので要注意。
 プログラムの暴走でもマウスアイコンが消え消えたままで、Windows自体のコントロールができなくなる。このため、ShowCursor (False)は、exeファイルを作成する最後の段階でコードを有効にする。
‘以下のコードを標準モジュールに追加。
Public Declare Function ShowCursor Lib "user32" (ByVal bShow As Integer) As Integer
‘Private Sub Form_Load()内でマウスを消す指示
ShowCursor (False)
5)入力を感知して終了。
 終了時は、必ずShowCursor (True) でマウスアイコンを可視にする。
‘以下の例はマウスクリック時の終了処理。
Private Sub Form_Click()
ShowCursor (True)‘終了する前にマウスを再表示する
End
End Sub
‘マウス動いたらスクリーンセーバー停止、カーソル表示も必要
Public xw, yw, zw‘マウスの移動距離
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If zw = 1 Then
If (xw - X) ^ 2 + (yw - Y) ^ 2 > 1000 Then ShowCursor (True): End
End If
xw = X: yw = Y: zw = 1
End Sub
‘以下の例はキーボード入力時の終了処理。
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
ShowCursor (True)
End
End Sub
6)設定画面の表示
 また、画面の大きさを取得し、表示の際の設定に活用する。取得する数値は各コード共通であるのでPublicで共通指定する必要がある。
 あとはPointやLineのコードを表示を工夫する。
'設定画面の取得、Private Sub Form_Load()内
aa = Screen.Width ' フォームの幅を設定します。
bb = Screen.Height ' フォームの高さを設定します。
Public aa, bb‘画面の大きさ
7)scrファイルの作成
 拡張子をexeからscrに変更するだけ。

(記載例)
‘定数を宣言
Public aa, bb‘画面の大きさ
Public xw, yw, zw‘マウスの移動距離

‘以下のコードを標準モジュールに追加。
Public Declare Function ShowCursor Lib "user32" (ByVal bShow As Integer) As Integer
‘Private Sub Form_Load()内でマウスを消す指示
ShowCursor (False)

Private Sub Form_Load()
'** 二重起動チェック
If App.PrevInstance Then
End
End If
‘背景色の決定
BackColor = 0
‘画面の最大化
Me.WindowState = vbMaximized
aa = Screen.Width ' フォームの幅を設定します。
bb = Screen.Height ' フォームの高さを設定します。
‘起動中のカーソル消去
ShowCursor (False)
End Sub

‘クリックしたらスクリーンセーバー停止、カーソル表示
Private Sub Form_Click()
ShowCursor (True)
End
End Sub

‘キーボード押したらスクリーンセーバー停止、カーソル表示
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
ShowCursor (True)
End
End Sub

‘マウス動いたらスクリーンセーバー停止、カーソル表示
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If zw = 1 Then
If (xw - X) ^ 2 + (yw - Y) ^ 2 > 1000 Then ShowCursor (True): End
End If
xw = X: yw = Y: zw = 1
End Sub

‘終了したらスクリーンセーバー停止、カーソル表示
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
ShowCursor (True)
'終了コード
End
End Sub

カラフルリングの作り方



転倒夢想庵