◆スプラッシュウィンドウとしての絶対条件
・メインウィンドウより先に表示されること。
→Mainクラスで実行する
・画面中央に表示されること。
・タスクバーにアイコンを表示しないこと。
・ウィンドウにはタイトルバーや枠が無いこと。
・メインウィンドウより手前に表示させないこと。
・メインウィンドウと重ねて表示させないこと。
・アプリケーションの準備ができたところで、自動的に閉じること。
→「アプリケーションがアイドル状態になった時」をどう判断するか。基準とは。
→いつまでたってもアプリがアイドル状態ににならない場合はどうするか。
◆ダイアログベースプリにスプラッシュウィンドウを挿入する手順
1.適当な、SDI(MDI)ベースのプログラムを作り、
そのプログラムに、 スプラッシュスクリーンを挿入する
2.上のプロジェクトフォルダから、Splash.cppとSplash.hのファイルを
ダイアログ・ベースのプロジェクトフォルダにコピーする
3.プロジェクト→プロジェクトの追加→ファイルで
Splash.cppとSplash.hのファイルのファイルをプロジェクトに追加する
4.CAPPクラスをクラスウイザードでPreTranslateMessageを追加して
以下のように書き換える
BOOL CApp::PreTranslateMessage(MSG* pMsg)
{
// CG: 以下のブロックはスプラッシュ スクリーン コンポーネントによって追加さ
れました
if (CSplashWnd::PreTranslateAppMessage(pMsg))
return TRUE;
return CWinApp::PreTranslateMessage(pMsg);
}
5. C**(★CMyAppなど)App クラスの初期化の場所で以下の文(表示)を追加
BOOL C**App::InitInstance()
{
// CG: 以下のブロックはスプラッシュ スクリーン コンポーネントによって追加さ
れました
{
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
CSplashWnd::EnableSplashScreen(cmdInfo.m_bShowSplash);
/*
Enable3dControls();
LoadStdProfileSettings();
CMainDlg dlg;
m_pMainWnd = &dlg;
CSplashWnd::ShowSplashScreen(FALSE);
Sleep(2000);
*/
}
・・・省略・・
]
この下に
// CG: 以下のブロックはスプラッシュ スクリーン コンポーネントによって追加さ
れました
CSplashWnd::ShowSplashScreen((class CWnd *)this);
とかけば、ここでスプラッシュ スクリーン が起動しますが、
出方が変なときがありますので、
APPクラス内で呼び出さずにDlgクラス内で呼びだしたほうがいいかもしれません。
-
ダイアログ CPP ファイルの tp 上追加
・しゃーぷinclude "スプラッシュ・ h" -
OnInitDialog () 関数の最後に次のコード行を追加します。
CSplashWnd:: EnableSplashScREEN (真);
CSplashWnd:: ShowSplashScreen (this); -
リソースエディタを使用して、BMP ファイル (スプラッシュスクリーンの視覚的な解釈) をプロジェクトに追加する。
名前を IDB_SPLASH (ウィザードによって生成された名前) に設定。
3.画面の表示が遅い場合は、CMainFrame::OnCreate()で自動挿入されたコードをCMainFrame::OnCreate()内のCFrameWnd::OnCreate()の直後へ移動する。