• 締切済み

2秒間のメッセージウィンドウ

よろしくおねがいします。 SDKで、メッセージボックスを2秒間ほど表示の後、自動的に消去し、 次の処理に移りたいのですが、MessageBox とかで実現しようとすると、 自分で、OKボタンやら、キャンセルやらを押さなくてはなりません。 どのようにすると可能でしょうか。

みんなの回答

  • ag1
  • ベストアンサー率66% (2/3)
回答No.3

アスキー出版局から 「ワンポイント・レッスン 最新Winodowsプログラミングテクニック」 という本が出ています。 MSJの記事をまとめたもので、9000円もする電話帳よりも分厚い本ですが、 その中に 「メッセージボックスに応答が無い場合、自動的に閉じてスレッドの実行を継続させるには」 というそのもののQ&Aがあります。 要約するとタイマーコールバック関数を用意しておいて(SetTimer) それからメッセージボックスを出します(MessageBox)。 コールバックの処理(タイムアウト時に実行される)はメッセージボックスに対して EndDialogするだけです。 ここでどうやってメッセージボックスのHWNDを取得するのかと言うと この本ではGetActiveWindowを使ってます。 これが気持ち悪いようでしたら(私はあまり気持ちよくないです)、 EnumWindowsで列挙してタイトル文字列で探すとかしてください。 タイムアウトするメッセージボックスについてのアイデアはあちこちで見られる ようですが、大きく分けると 1.別スレッドでメッセージボックスを出す 2.メッセージボックスのリソースとメッセージハンドラを自前で用意する の2つのように思われます。私の知識不足かも知れませんが。 そんな中で若干気持ち悪いですが(私だけ?)これが一番シンプルです。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

メッセージボックスをサブクラス化して、ショートカットキーを送信するとか… このあたりについての知識はあまり持ち合わせていないので、詳しいことは書けませんが…

naru
質問者

補足

少なからず私にとっては貴重な情報です。 ありがとうございました。

noname#25358
noname#25358
回答No.1

 メッセージボックスと同じフォームを自分で組み、そこにタイマーオブジェクトを仕込むのが一番だと思います。

naru
質問者

補足

さっそくの回答ありがとうございます。 つまり、リソースエディターでダイアログをつくる、という解釈でよろしい のでしょうか? やはり、それしかないのですね・・・ VCの『 あの 』余計なコードを発生させたくないので、あえてSDKで 取り組んでいる次第ですが、もっと手軽な方法をご存知の方がいましたら、 ぜひともお教え願いたいです。

関連するQ&A