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

A 回答 (3件)

アスキー出版局から


「ワンポイント・レッスン 最新Winodowsプログラミングテクニック」
という本が出ています。
MSJの記事をまとめたもので、9000円もする電話帳よりも分厚い本ですが、
その中に
「メッセージボックスに応答が無い場合、自動的に閉じてスレッドの実行を継続させるには」
というそのもののQ&Aがあります。

要約するとタイマーコールバック関数を用意しておいて(SetTimer)
それからメッセージボックスを出します(MessageBox)。
コールバックの処理(タイムアウト時に実行される)はメッセージボックスに対して
EndDialogするだけです。
ここでどうやってメッセージボックスのHWNDを取得するのかと言うと
この本ではGetActiveWindowを使ってます。
これが気持ち悪いようでしたら(私はあまり気持ちよくないです)、
EnumWindowsで列挙してタイトル文字列で探すとかしてください。

タイムアウトするメッセージボックスについてのアイデアはあちこちで見られる
ようですが、大きく分けると
1.別スレッドでメッセージボックスを出す
2.メッセージボックスのリソースとメッセージハンドラを自前で用意する
の2つのように思われます。私の知識不足かも知れませんが。
そんな中で若干気持ち悪いですが(私だけ?)これが一番シンプルです。
    • good
    • 0

メッセージボックスをサブクラス化して、ショートカットキーを送信するとか…


このあたりについての知識はあまり持ち合わせていないので、詳しいことは書けませんが…

この回答への補足

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

補足日時:2000/05/30 17:21
    • good
    • 0

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

この回答への補足

さっそくの回答ありがとうございます。
つまり、リソースエディターでダイアログをつくる、という解釈でよろしい
のでしょうか?
やはり、それしかないのですね・・・

VCの『 あの 』余計なコードを発生させたくないので、あえてSDKで
取り組んでいる次第ですが、もっと手軽な方法をご存知の方がいましたら、
ぜひともお教え願いたいです。

補足日時:2000/05/30 14:50
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ