今回のはどのページを見ても書いていないWin32SDK(Platform SDK)での
スプラッシュウインドウの表示のさせ方です。
Mail Viewerの起動時にメールデータの読み込みを行うようになったので
スプラッシュウインドウでなんとかしようと思うのですが・・・・。
VC++6.0の時はC++(MFC?)ならコレクションから挿入が出来たようですが
Win32SDKでのプログラムで書いた場合はどうやれば良いのでしょうか?
開発環境は去年末からVista Home Premium + VS2005(SE)になりました。
参考ソースはhttp://angelteatime.punyu.net/knot/file/mview006.lzhです。
→私のローカルにあるのはこれにListViewのソート処理が入ったものです。
SDKでやるなら全部自分でやればいいのでは?そのためのSDK直使いではないかと…
単なる表示ならウィンドウを出すだけ。プログレスバー等を動作させたいならマルチスレッドにする。
アプリケーションが表示しているスプラッシュウインドウとは
モードレスダイアログであることがほとんどです。
ただの暇つぶしでない場合は、別スレッドで当該の処理をしながら
ダイアログの表示を更新します。
まだ解決した訳ではないのですけれど、かなり
近いヒント(と言うよりは答え?)がMSのKBにありました。
ウィンドウ(タイトル画面での)スプラッシュを加える方法
http://support.microsoft.com/kb/230090/ja
でも素直に実装出来ない部分(タイマー処理とか)があるので
どう実装すれば問題ないでしょうか・・・・。
ちなみにプログレスバーは付ける予定はありません。
プログラム起動時にスレッド1つ生成してモードレスダイアログを表示。
(メインウィンドウは非表示で作成しておいてもいいでしょう。)
ダイアログではWM_INITDIALOGで、表示位置の設定や画像などを表示。
モードレスダイアログのメッセージループはそのままスレッドの方で回して、
メインスレッドでは初期化処理を継続。
初期化が終わった段階で、ダイアログにメッセージを投げて閉じる様にすればよいかと。
ダイアログ閉じた後はメッセージループも終了してスレッドは終了してしまって問題ないかと。
ツイート | ![]() |