さてすっかり間が開いてしまいましたが、WPFでMSDNの続きです。間が開いたので下に一覧を載せておきます。ってかまだまだじゃねぇか。
- Application Development OverView
- アプリケーションの管理の概要
- Applicationクラス
- アプリケーション定義
- 現在のアプリケーションの取得
- アプリケーションの有効期間 ← 今回
- アプリケーションの管理の概要
でも、アプリケーションの有効期間って長いんですよね。ざっとこんな感じ
まあサクサク行きましょう。
スプラッシュスクリーン
スプラッシュスクリーンの説明は、例によってWikipediaに譲ります。
.NETでスプラッシュスクリーン(何度も出てくると長いな)といえば、VB.NETだと思っていたのですが(@IT)、←C#にはなかった。
WPFでは表示出来るようです。 でも、その追加方法が若干特殊。詳しくは→http://msdn.microsoft.com/ja-jp/library/cc656886.aspx
※ 1プロジェクトに複数スプラッシュスクリーンが設定されているとコンパイルエラーとなります。どの画像がスプラッシュスクリーンに設定されているかは、1画像ずつビルドアクションを確認するか、csprojファイルを直接テキストエディターで確認するしかないようです。
で、そのスプラッシュスクリーンがいつまで表示されているかというと、アプリケーションの最初のウインドウのContentRenderedが終わる前までは、表示されているようです。なので、WindowクラスのLoadedやContentRenderdで時間のかかる処理を行うと、スプラッシュスクリーンが表示されているままWindowも表示されるという状態になります。
なお、スプラッシュスクリーンを追加すると、次のようにSplashScreenクラスを利用したコードが追加されます。
/// <summary> /// Application Entry Point. /// </summary> [System.STAThreadAttribute()] [System.Diagnostics.DebuggerNonUserCodeAttribute()] public static void Main() { SplashScreen splashScreen = new SplashScreen("desert.jpg"); splashScreen.Show(true); WpfApplication3.App app = new WpfApplication3.App(); app.InitializeComponent(); app.Run(); }アプリケーションの起動・ユーザーインターフェースの表示・コマンドライン引数の処理
これらは、Application.Startupイベントに関する記載です。
Startupイベントは、ApplicationオブジェクトのRunメソッドが呼び出されると発生します。イベント引数にはコマンドライン引数が渡ってくるので、ココで処理することになります。また、MainWinowを作成することのできる場所の一つです。もう一つは、StartupUriを利用する方法。通常VisualStudioでプロジェクトを作成するとこちらの方法で記述されます。
<Application x:Class="WpfApplication3.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="MainWindow.xaml" >ただし、StartupUriを利用してWindowを作成した場合、StartupイベントではそのWindowのインスタンスにアクセスすることが出来ません。
ですから、MainWindowのインスタンスにゴニョゴニョしたい場合は、StartUpで初期化、特に何もする必要がない場合はStartupUriで記載するのが良さそうです。アプリケーションのアクティブ化および非アクティブ化
アプリケーションがアクティブになったときおよび非アクティブになった場合に、イベントが発生します。
MSDNによると、アクティブになったときとは、
非アクティブになったときとは、
ユーザーが現在のアプリケーションから別のアプリケーションに切り替えた。
アプリケーションがシャットダウンされた。
とのことです。ただし、「起動され、Windowを表示した」場合のイベントは、スプラッシュスクリーンを設定すると発生しないようです。
(バグっぽいのでとりあえずConnectにあげておきました。)長いのでとりあえず、前編としました。。