アプリ版:「スタンプのみでお礼する」機能のリリースについて

VCでビープ音を鳴らし続けるにはどうしたらよいのでしょうか。
以下のような処理がしたいのです。

(1)プログラムでエラーが発生
(2)エラーを表示するダイアログをビープ音を鳴らしながら表示
(3)OKを押すとビープ音が消える。

よろしくお願いします。

A 回答 (3件)

試してないです。



例えばですが
エラーが発生したら bContinueBeep = TRUE;
として while で beep を鳴らしつづけます。
このままだと、無限ループに入ってしまい、PGは固まってしまうので while文の中で PeekMessage を実行してやれば OK ボタンが押された場合、それを処理することが可能になります。ボタン処理で bContinueBeep = FALSE; みたいな感じにすれば御希望の処理は可能でしょう。
でも「ピー」って鳴らしたいのならダメかも…。
以下のソースだと「ピピピ」とかになるのかな(試してない)
↑それなら、タイマー使ってもいいのかな?


while(bContinueBeep) {
MessageBeep(0);
Sleep(100);
while(PeekMessage(msg, NULL, 0, 0, PM_NOREMOVE))
{
// メッセージ処理
}
}

メッセージ処理の部分、手許にドキュメントないので覚えてません。DispatchMessage() ? ちゃうかも…。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ピーと鳴らしたいのですが、
回答の方法ですとやはりピピピとなっていしまいます。
他の方法があればよろしくお願いします。

お礼日時:2004/02/05 16:36

私も、#2 で参考URL に載せた IOSCM.SYS の方でやってみましたけど、私の PC 環境では「ピーーー」でした。

参考までに。

それと、#2 で、「 Windows では」と書きましたけど、Win95/98/ME では、そのまま普通に outp を実行しても特権違反の例外は発生しないようですね。( IOSCM.SYS のドキュメントに書いてありました。)
    • good
    • 0

ピーと鳴らすには、直接ポートを操作しないといけないんじゃないでしょうか。


AT互換機なら、
_outp(0x61, 3);  // ON
_outp(0x61, 0);  // OFF
のような感じなんですが、Windows では、そのままでは実行しようとしても特権違反とかで実行できません。
正攻法で行くならデバイスドライバを作って(要DDK)、ということになると思うのですが、デバイスドライバを作らなくても IO ポートの操作を可能にするツールがあるようです。


http://www.sanritz.co.jp/VesNT/sample/beep1/beep …
http://www.vector.co.jp/soft/winnt/prog/se309574 …

参考URL:http://www.vector.co.jp/soft/winnt/prog/se309574 …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
早速試してみたのですが、結局「ピピピピピ」となってしまいました。
また何か分かりましたら報告します。

お礼日時:2004/02/06 14:49

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