R.田中一郎さんのBlogに刺激されて書いてみます~。
スプラッシュウィンドウ
http://blogs.wankuma.com/rti/archive/2007/01/10/55358.aspx?Pending=true
起動に時間がかかるWindowsFormなど、かっちょいい前フリをして、ユーザのイライラを防ぐための手法として、
スプラッシュウインドウがありますね。
で、これ、 VB2005 だと、ノンコーディングで作成できてしまいます。
と言うことで、
●初心者向け解説
(1) VB2005 のプロジェクト新規作成
テンプレートは、「Windowsアプリケーション」を選んでください。(まぁ、基本ってことで)
(2)【Point】 新しい項目の追加で「スプラッシュ スクリーン」を選びます。
(3)【Point】 プロジェクトデザイナ(プロジェクトのプロパティ)で、
「アプリケーション」ペインの
Windows アプリケーション フレームワーク プロパティ の
スプラッシュスクリーン の コンボボックスに(2)で作成した「SplashScreen1」を選択します。
以上。
ささ、実行してください~。
●中級者向け解説
スプラッシュスクリーンをカスタマイズしましょう。
アプリケーションタイトル、バージョン、コピーライトなどは、
exeファイルなどのアセンブリに指定する AssemblyInfo.vb に連動しています。
ですので、Textプロパティを編集しても無駄です。
アプリケーションタイトル、バージョン、コピーライトの指定方法
(1)プロジェクトデザイナの「アセンブリ」ペインで、
「アセンブリ情報」ボタンをクリック
(2)アセンブリ情報ウインドウで、必要な情報を設定
ここで、設定した値は、AssemblyInfo.vb に反映されます。
素人さんが誤った値を設定しないようにできてますね。すごい!!
"SplashWindowVBおぎわら")>
"")>
"")>
"SplashWindowVB")>
"Copyright (C) 2007 おぎわら")>
"")>
"1.2.3.4")>
"9.8.7.6")>
背景は、MainLayoutPanel の BackgroundImage で変更可能です。
BackgroundImageLayout で、表現を変えてもいいすね。
ここで、設定した値は、SplashScreen1.vbに自動生成されたコード内で、
各Textプロパティに設定されています。
ApplicationTitle.Text = My.Application.Info.Title
Version.Text = System.String.Format(Version.Text, _
My.Application.Info.Version.Major, My.Application.Info.Version.Minor)
Copyright.Text = My.Application.Info.Copyright
デザイン画面で、Textプロパティに値を設定しても、ここで、上書きされるので、
ムダムダムダムダムダー(ジョジョ風)ってことっすね。
ついでに、かっこよさを +5 あげてみましょう。
SplashScreen1 の Opacity プロパティを 50% に設定してください。
すると、こんなかんじで、透けたスプラッシュ スクリーンになります。
● 上級者向け解説
Windows アプリケーション フレームワークってなんだ?
なんで、VBだけこんな仕組みなんだ?
と、思った貴方!すばらしいで~す。
調べて、トラックバックしてください~(ぉぃ
というのは冗談で、
Visual Basic アプリケーションモデル という概念があります。
http://msdn2.microsoft.com/ja-jp/library/w3xx6ewx(VS.80).aspx
VBでは、Windows フォーム アプリケーションの動作を制御するための確たるモデルが用意されている。というわけです。
ということで、VB2005でWinFormアプリケーションを作成する場合は、ここをおさえておくと、
なぜ?という理由がわかるかと思います。
なお、内部のコード的には、スプラッシュ スクリーンを指定すると、
Application.Designer.vbに、以下のコードが自動生成されます。
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateSplashScreen()
Me.SplashScreen = Global.SplashWindowVB.SplashScreen1
End Sub
C#で実装したい場合は、
WindowsFormsApplicationBase.OnCreateSplashScreen() メソッド
を、使ったら出来そうですけど、
Microsoft.VisualBasic.ApplicationServices 名前空間なんですよね・・・・
ってことは、起動画面だけVBのプロジェクトにしたほうが、楽なんでは・・・・
C#のコードに置き換えることに成功した方は、おしえてくださいw