いつもお世話になっています。
MsgBoxが表示されるときに「ポン」とか「ピン」
とかの音が出ますが、これを出さないようにはできますか?
ちなみに、スピーカはそのままで・・・。
ご存知出来たら教えてください。お願いします。
VB6.0です。
MsgBox関数の代わりに、ご自分でモーダルなフォームを
表示させるようにすれば、無音でメッセージを表示できます。
標準モジュールに「MsgBox」という名の Public Function を
配置するようにすれば、呼び出し側のプログラムの修正も不要かと。
ただ、ほかのアプリケーションの場合でも、メッセージ表示時には、
コントロールパネルで設定された音が鳴りますよね。
それがWindowsの標準的な仕様なのですから、自身のアプリだけ
動作を変える必要は無い気がしますけれど……。
# 昔は、MsgBox表示に、規定の警告音を出す方法が質問に上がって
# いたのですが、今は逆に、音を出さない方法が質問されるんですね。(^^;)
魔界の仮面弁士様ありがとうございます。
>動作を変える必要は無い気がしますけれど……。
そのとうりですが、ちょいとわけありで・・・。
話は変わりますが、モーダルにするには、どのように
すればよいのでしょうか?
実はMSGBOXを使っているのもモーダル状態にしたいが
為だったりします・・・。
モーダル状態にしておいて、数秒後に自力で復活
するようにできれば、最高なのですが・・・。
無理でしょうか?
よろしくお願いします。
フォームのShowメソッドの引数でモーダルが指定できます。
>モーダル状態にしておいて、数秒後に自力で復活
>するようにできれば、最高なのですが・・・。
表示するダイアログのLoadイベントでタイマーを起動して
そこで自身をUnloadすれば希望の動作になりますね。
> MsgBox関数の代わりに、ご自分でモーダルなフォームを
> 表示させるようにすれば、無音でメッセージを表示できます。
以下、サンプルです。
'==== 標準モジュール ====
Option Explicit
Public Function MsgBox( _
ByVal Prompt As String, _
Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, _
Optional ByVal Title As String, _
Optional ByVal HelpFile As String, _
Optional ByVal Context As Long) As VbMsgBoxResult
MsgBox = Form2.MsgBox(Prompt)
End Function
'==== Form2 ====
Option Explicit
Private Result As VbMsgBoxResult
'アイコンやボタンの指定は省略しています。
'必要に応じて、コードを書き加えて見てください。
Friend Function MsgBox(ByVal Prompt As String) As VbMsgBoxResult
Result = vbCancel
Load Me
Me.Label1.Caption = Prompt
Me.Show vbModal
MsgBox = Result
End Function
Private Sub Command1_Click(Index As Integer)
If Index = 0 Then
Result = vbOK
Else
Result = vbCancel
End If
Unload Me
End Sub
とろ様、魔界の仮面弁士様
大変ありがとうございました。
解決いたしました。
勉強不足ですみませんでした。
これからも、よろしくお願いいたします。
m(_ _)m
ツイート | ![]() |