■ Win32SDKでスプラッシュウインドウをするには

[Visual C++ Q & A 掲示板] [過去ログの一覧]


みけにゃん [HomePage] 2008/01/20(日) 17:53:55 <中級者>
今回のはどのページを見ても書いていない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のソート処理が入ったものです。
 

ブル 2008/01/20(日) 20:54:34
SDKでやるなら全部自分でやればいいのでは?そのためのSDK直使いではないかと…
単なる表示ならウィンドウを出すだけ。プログレスバー等を動作させたいならマルチスレッドにする。

仲澤@失業者 2008/01/21(月) 11:07:15
アプリケーションが表示しているスプラッシュウインドウとは
モードレスダイアログであることがほとんどです。
ただの暇つぶしでない場合は、別スレッドで当該の処理をしながら
ダイアログの表示を更新します。

みけにゃん [HomePage] 2008/01/21(月) 22:30:32 <中級者>
まだ解決した訳ではないのですけれど、かなり
近いヒント(と言うよりは答え?)がMSのKBにありました。

ウィンドウ(タイトル画面での)スプラッシュを加える方法
http://support.microsoft.com/kb/230090/ja

でも素直に実装出来ない部分(タイマー処理とか)があるので
どう実装すれば問題ないでしょうか・・・・。

ちなみにプログレスバーは付ける予定はありません。

瀬戸っぷ [E-Mail] 2008/01/22(火) 00:31:34
プログラム起動時にスレッド1つ生成してモードレスダイアログを表示。
(メインウィンドウは非表示で作成しておいてもいいでしょう。)
ダイアログではWM_INITDIALOGで、表示位置の設定や画像などを表示。
モードレスダイアログのメッセージループはそのままスレッドの方で回して、
メインスレッドでは初期化処理を継続。
初期化が終わった段階で、ダイアログにメッセージを投げて閉じる様にすればよいかと。
ダイアログ閉じた後はメッセージループも終了してスレッドは終了してしまって問題ないかと。

毎週金曜日はポイント最大3倍!さらに4倍のチャンスも!

Programming Library