2024/06/03 電子書籍「電子書籍出版・技術文書作成を劇的に加速!秀丸エディタ + Markdown + Pandocの驚異」を出版

メッセージ表示用ダイアログ

C++Builder

C++Builder (VCL)で使用可能な以下のメッセージを表示するダイアログ関数について説明します。

Windowsのアプリケーションを作成する時、必ずと言って良いほど使用するのではないでしょうか?

  • MessageDlg
  • MessageDlgPos
  • ShowMessage
  • ShowMessageFmt
  • ShowMessagePos
  • TaskMessageDlg
  • TaskMessageDlgPos
  • MessageBeep(WIN32)

ShowMessage関数

ShowMessage を呼び出すと、[OK] ボタンの付いた単純なメッセージ ボックスを表示します。 アプリケーションの実行可能ファイル名は、メッセージ ボックスのキャプションとして表示されます。

ユーザーがメッセージ ボックスで Ctrl+C を入力した場合、メッセージのテキストがクリップボードにコピーされます。

Vcl.Dialogs.ShowMessage - RAD Studio API Documentation
  • プロトタイプ宣言
extern DELPHI_PACKAGE void __fastcall ShowMessage(const System::UnicodeString Msg)/* overload */;
extern DELPHI_PACKAGE void __fastcall ShowMessage(const System::UnicodeString Msg, 
                                                  TTaskDialogFlags TaskDlgFlags)/* overload */;
  • 引数
引数意味
System::UnicodeStringMsgダイアログボックスに表示するメッセージテキスト。
TTaskDialogFlagsTaskDlgFlagsダイアログボックスの外観や動作を制御するフラグを指定します。
  • TTaskDialogFlag

タスク ダイアログに設定されるオプションを指定できます。

FlagDescription
tfEnableHyperlinksコンテンツ、フッター、展開されたテキストに、ハイパーリンクを含めることができる。
tfUseHiconMainカスタム メイン アイコンを使用します。
tfUseHiconFooterカスタム フッター アイコンを使用します。
tfAllowDialogCancellationタスク ダイアログが、キャンセル ボタンがない場合に、閉じられることを許可します。
tfSizeToContentタスク ダイアログの幅がコンテンツ領域の幅によって決定されることを示します。
tfUseCommandLinksボタンが、標準ダイアログ グラフィックで使用されるコマンド リンクとして表示されます。
tfUseCommandLinksNoIconボタンが、グラフィックなしでコマンド リンクとして表示されます。
tfExpandFooterAreaフッターに展開されたテキストを表示します。
tfExpandedByDefaultタスク ダイアログが開いた際に展開されたテキストが表示されます。
tfVerificationFlagChecked確認チェック ボックスに、最初からチェックがつきます。
tfShowProgressBar進捗バーを表示します。
tfShowMarqueeProgressBarマーキー進捗バーを表意します。
tfCallbackTimerダイアログ コールバックが、200 ミリ秒ごとに呼び出されます。
tfPositionRelativeToWindowタスク ダイアログは、親ウィンドウの中央に配置されます。
tfRtlLayoutテキストは右から左に読みます。
tfNoDefaultRadioButtonデフォルトのラジオ ボタンをなしにします。
tfCanBeMinimizedタスク ダイアログは最小化できます。
  • サンプルコード
    // ShowMessage関数を使用してメッセージを表示する
	ShowMessage(L"Do you want to continue?");
  • tfUseCommandLinksオプション指定
	ShowMessage(L"Do you want to continue?", TTaskDialogFlags() << tfUseCommandLinks);
  • tfUseCommandLinksNoIconオプション指定
	ShowMessage(L"Do you want to continue?", TTaskDialogFlags() << tfUseCommandLinksNoIcon);
  • tfRtlLayoutオプション指定
	ShowMessage(L"Do you want to continue?", TTaskDialogFlags() << tfRtlLayout);

ShowMessagePos関数

ShowMessagePos関数は、指定された位置にメッセージ ボックスを表示します。

ShowMessagePos関数 を呼び出すと、[OK] ボタンの付いた単純なメッセージ ボックスを指定された位置に表示します。アプリケーションの実行可能ファイル名は、メッセージ ボックスのキャプションとして表示されます。

Msg パラメータは、メッセージ ボックスに表示されるメッセージです。

X と Y は、メッセージ ボックスが表示される位置の画面座標を指定します。-1 を指定した場合、メッセージ ボックスは指定された範囲のどこにでも表示できます。

他のボタンやアイコンがあるメッセージ ボックスにメッセージを表示するには、MessageDlg 関数を使用します。

Vcl.Dialogs.ShowMessagePos - RAD Studio API Documentation
  • プロトタイプ宣言
extern DELPHI_PACKAGE void __fastcall ShowMessagePos(const System::UnicodeString Msg, int X, int Y)/* overload */;
extern DELPHI_PACKAGE void __fastcall ShowMessagePos(const System::UnicodeString Msg, 
                                                     int X, int Y, TTaskDialogFlags TaskDlgFlags)/* overload */;
  • サンプルコード
	// メッセージを表示する位置
	int X = 100;
	int Y = 100;
	// メッセージボックスのオプション
	TTaskDialogFlags Flags;

	// メッセージボックスを表示
	ShowMessagePos(L"これは指定位置に表示されるメッセージです", X, Y, Flags);

ShowMessageFmt関数

ShowMessageFmt 関数は、フォーマットされたメッセージを表示するための関数です。この関数は、System::UnicodeString 型のメッセージテンプレートとパラメータリストを受け取り、指定されたフラグを使用してメッセージダイアログを表示します。

Vcl.Dialogs.ShowMessageFmt - RAD Studio API Documentation
  • プロトタイプ宣言
extern DELPHI_PACKAGE void __fastcall ShowMessageFmt(const System::UnicodeString Msg, 
        System::TVarRec *Params, const System::NativeInt Params_High)/* overload */;
extern DELPHI_PACKAGE void __fastcall ShowMessageFmt(const System::UnicodeString Msg, 
                                                     System::TVarRec *Params, 
                                                     const System::NativeInt Params_High, 
                                                     TTaskDialogFlags TaskDlgFlags)/* overload */;
  • 引数
引数意味
System::UnicodeStringMsgフォーマットされたメッセージテンプレート。例: L”Value: %d”
System::TVarRec*Paramsメッセージテンプレートに挿入されるパラメータのリスト。例: array of TVarRec(複数の型の値を含む配列)
const System::NativeIntParams_HighParams 配列の上限インデックス。例: 配列のサイズ – 1
TTaskDialogFlagsTaskDlgFlagsダイアログボックスの外観や動作を制御するフラグを指定します。例: tfAllowDialogCancellation, tfEnableHyperlinks など
  • サンプルコード
    // フォーマットされたメッセージテンプレート
    UnicodeString msgTemplate = L"Value: %d, Text: %s";
    
    // パラメータリスト
    TVarRec params[2] = { 123, L"Hello" };
    
    // ShowMessageFmt関数を使用してフォーマットされたメッセージを表示する
    ShowMessageFmt(msgTemplate, params, 1, TTaskDialogFlags() << tfAllowDialogCancellation);

MessageDlg関数

MessageDlg を呼び出すと、画面の中央にメッセージ ダイアログ ボックスを表示し、ユーザーの応答を取得できます。

Vcl.Dialogs.MessageDlg - RAD Studio API Documentation
  • プロトタイプ宣言
extern DELPHI_PACKAGE int __fastcall MessageDlg(const System::UnicodeString Msg, 
											System::Uitypes::TMsgDlgType DlgType, 
											System::Uitypes::TMsgDlgButtons Buttons, 
											System::LongInt HelpCtx)/* overload */;
extern DELPHI_PACKAGE int __fastcall MessageDlg(const System::UnicodeString Msg, 
											System::Uitypes::TMsgDlgType DlgType, 
											System::Uitypes::TMsgDlgButtons Buttons, 
											System::LongInt HelpCtx, 
											System::Uitypes::TMsgDlgBtn DefaultButton)/* overload */;
extern DELPHI_PACKAGE int __fastcall MessageDlg(const System::UnicodeString Msg, 
											System::Uitypes::TMsgDlgType DlgType, 
											System::Uitypes::TMsgDlgButtons Buttons, 
											System::LongInt HelpCtx, 
											System::Uitypes::TMsgDlgBtn DefaultButton, 
											System::UnicodeString *CustomButtonCaptions, 
											const System::NativeInt CustomButtonCaptions_High)/* overload */;
  • 引数
引数意味
System::UnicodeStringMsgダイアログボックスに表示するメッセージテキスト。
SystemUitypesTMsgDlgTypeDlgTypeダイアログボックスのアイコンとその動作を指定します。値: mtWarning, mtError, mtInformation, mtConfirmation, mtCustom
SystemUitypesTMsgDlgButtonsButtonsダイアログボックスに表示するボタンのセットを指定します。値: mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp
System::LongIntHelpCtxヘルプコンテキストID(通常は 0 で良い)。
SystemUitypesTMsgDlgBtnDefaultButtonデフォルトのボタンを指定します。値: mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp
System::UnicodeString*CustomButtonCaptionsカスタムボタンのキャプションを指定します。例: customButtons(カスタムボタンキャプションの配列)
const System::NativeIntCustomButtonCaptions_Highカスタムボタンキャプション配列の上限インデックス。例: 配列のサイズ – 
  • 戻り値

MessageDlg は、ユーザーが選択したボタンの値を返します。

メッセージ ボックスに表示されるボタンの各タイプの値と、ユーザーがそのボタンを選択した場合に返される対応値については、Vcl.Dialogs.TMsgDlgButtons ページの表を参照してください。

TMsgDlgBtn 値対応する戻り値意味
mbOKmrOk表面が [OK] のボタン
mbCancelmrCancel表面が [キャンセル] のボタン
mbYesmrYes表面が [はい] のボタン
mbNomrNo表面が [いいえ] のボタン
mbAbortmrAbort表面が [中止] のボタン
mbRetrymrRetry表面が [再試行] のボタン
mbIgnoremrIgnore表面が [無視] のボタン
mbAllmrAll表面が [すべて] のボタン
mbNoToAllmrNoToAll表面が [すべていいえ] のボタン
mbYesToAllmrYesToAll表面が [すべてはい] のボタン
mbClosemrClose表面が [閉じる] のボタン
TMsgDlgButtons

Dialogs ユニットでは、MessageDlg および MessageDlgPos 関数で使用される次の定数が定義されています。

定数意味
mbYesNoCancelmbYes、mbNo、mbCancel
mbYesAllNoAllCancelmbYes、mbYesToAll、mbNo、mbNoToAll、mbCancel
mbOKCancelmbOK、mbCancel
mbAbortRetryIgnorembAbort、mbRetry、mbIgnore
mbAbortIgnorembAbort、mbIgnore
  • サンプルコード(mtWarning)
MessageDlg(L"画像データがありません", mtWarning, TMsgDlgButtons() << mbOK, 0);
  • サンプルコード(mtError)
MessageDlg(L"画像データがありません", mtError, TMsgDlgButtons() << mbOK, 0);
  • サンプルコード(mtInformation)
MessageDlg(L"画像データがありません", mtInformation, TMsgDlgButtons() << mbOK, 0);
  • サンプルコード(mtConfirmation)
MessageDlg(L"画像データがありません", mtConfirmation, TMsgDlgButtons() << mbOK, 0);
  • サンプルコード(mtCustom)

mtCustomに設定すると、キャプションはアプリケーション名になります。

MessageDlg(L"画像データがありません", mtCustom, TMsgDlgButtons() << mbOK, 0);

MessageDlgPos関数

指定された画面座標の位置にメッセージ ダイアログ ボックスを表示します。

MessageDlgPos を呼び出すと、キャプションを指定する必要がない場合に特定の位置にメッセージ ボックスを表示できます。 (キャプションも指定する必要がある場合は、MessageDlg 関数を使用します。

Vcl.Dialogs.MessageDlgPos - RAD Studio API Documentation
  • プロトタイプ宣言
extern DELPHI_PACKAGE int __fastcall MessageDlgPos(const System::UnicodeString Msg, 
											System::Uitypes::TMsgDlgType DlgType, 
											System::Uitypes::TMsgDlgButtons Buttons, 
											System::LongInt HelpCtx, int X, int Y, 
											System::Uitypes::TMsgDlgBtn DefaultButton)/* overload */;
extern DELPHI_PACKAGE int __fastcall MessageDlgPos(const System::UnicodeString Msg, 
											System::Uitypes::TMsgDlgType DlgType, 
											System::Uitypes::TMsgDlgButtons Buttons, 
											System::LongInt HelpCtx, int X, int Y, 
											System::Uitypes::TMsgDlgBtn DefaultButton, 
											TTaskDialogFlags TaskDlgFlags)/* overload */;
extern DELPHI_PACKAGE int __fastcall MessageDlgPos(const System::UnicodeString Msg, 
											System::Uitypes::TMsgDlgType DlgType, 
											System::Uitypes::TMsgDlgButtons Buttons, 
											System::LongInt HelpCtx, int X, int Y, 
											System::Uitypes::TMsgDlgBtn DefaultButton, 
											TTaskDialogFlags TaskDlgFlags, 
											System::UnicodeString *CustomButtonCaptions, 
											const System::NativeInt CustomButtonCaptions_High)/* overload */;
  • 引数

引数意味
const System::UnicodeStringMsg表示するメッセージのテキスト。
SystemUitypesTMsgDlgTypeDlgTypeダイアログの種類を指定します。例えば、mtWarning、mtError、mtInformation、mtConfirmation など。
SystemUitypesTMsgDlgButtonsButtonsダイアログに表示するボタンを指定します。例えば、mbYes, mbNo, mbOK, mbCancel などの組み合わせ。
System::LongIntHelpCtxヘルプコンテキスト ID。ヘルプが不要な場合は 0 を指定します。
intXダイアログを表示する X 座標。
intYダイアログを表示する Y 座標。
SystemUitypesTMsgDlgBtnDefaultButtonデフォルトで選択されているボタン。
TTaskDialogFlagsTaskDlgFlagsタスクダイアログのフラグ。通常のダイアログでは 0 を指定します。
System::UnicodeString *CustomButtonCaptionsカスタムボタンのキャプションを指定する配列。
const System::NativeIntCustomButtonCaptions_Highカスタムボタンのキャプション配列の高インデックス。CustomButtonCaptions が使用されない場合は -1 を指定します。
  • サンプルコード
	try
	{
		System::UnicodeString msg		= L"この操作を続行しますか?";
		TMsgDlgType dlgType				= mtConfirmation;
		TMsgDlgButtons buttons			= TMsgDlgButtons() << mbYes << mbNo;
		System::LongInt helpCtx			= 0;
		int x = 100;
		int y = 100;
		TMsgDlgBtn defaultButton		= mbYes;
		TTaskDialogFlags taskDlgFlags	= TTaskDialogFlags();
		System::UnicodeString customButtonCaptions[] = {};
		System::NativeInt customButtonCaptionsHigh = -1;

		int result = MessageDlgPos(msg, dlgType, buttons, helpCtx, x, y, defaultButton, taskDlgFlags, customButtonCaptions, customButtonCaptionsHigh);

		switch (result)
		{
			case mrYes:
				ShowMessage(L"Yes が選択されました。");
				break;
			case mrNo:
				ShowMessage(L"No が選択されました。");
				break;
			default:
				ShowMessage(L"他のボタンが選択されました。");
				break;
		}
	}
	catch (Exception &exception)
	{
		Application->ShowException(&exception);
	}

TaskMessageDlg関数

画面の中央にメッセージ タスク ダイアログ ボックスを表示します。

TaskMessageDlg 関数を呼び出すと、メッセージ ボックスを表示し、ユーザーの応答を取得できます。

Title には DlgType が mtCustom のときに、メッセージ ボックスのキャプションを指定します。 このパラメータを使用しない場合は、カスタム メッセージ ボックスのキャプションは、アプリケーションのタイトルです。

Msg は、表示されるメッセージの内容です。

DlgType は、ダイアログ ボックスの目的を示します。

Vcl.Dialogs.TaskMessageDlg - RAD Studio API Documentation
  • プロトタイプ宣言
extern DELPHI_PACKAGE int __fastcall TaskMessageDlg(const System::UnicodeString Title, 
											const System::UnicodeString Msg, 
											System::Uitypes::TMsgDlgType DlgType, 
											System::Uitypes::TMsgDlgButtons Buttons, 
											System::LongInt HelpCtx)/* overload */;
extern DELPHI_PACKAGE int __fastcall TaskMessageDlg(const System::UnicodeString Title, 
											const System::UnicodeString Msg, 
											System::Uitypes::TMsgDlgType DlgType, 
											System::Uitypes::TMsgDlgButtons Buttons, 
											System::LongInt HelpCtx, 
											System::Uitypes::TMsgDlgBtn DefaultButton)/* overload */;
extern DELPHI_PACKAGE int __fastcall TaskMessageDlg(const System::UnicodeString Title, 
											const System::UnicodeString Msg, 
											System::Uitypes::TMsgDlgType DlgType, 
											System::Uitypes::TMsgDlgButtons Buttons, 
											System::LongInt HelpCtx, 
											System::Uitypes::TMsgDlgBtn DefaultButton, 
											System::UnicodeString *CustomButtonCaptions, 
											const System::NativeInt CustomButtonCaptions_High)/* overload */;
  • 引数
引数意味
const System::UnicodeStringTitleダイアログのタイトル。
const System::UnicodeStringMsgダイアログに表示するメッセージ。
SystemUitypesTMsgDlgTypeDlgTypeダイアログの種類(情報、警告、エラーなど)。
SystemUitypesTMsgDlgButtonsButtonsダイアログに表示するボタンのセット。
System::LongIntHelpCtxヘルプコンテキスト。ヘルプを提供しない場合は0を指定。
SystemUitypesTMsgDlgBtnDefaultButtonデフォルトで選択されるボタン。
System::UnicodeString*CustomButtonCaptionsカスタムボタンのキャプションの配列。
const System::NativeIntCustomButtonCaptions_Highカスタムボタンキャプションの配列の高インデックス。
  • サンプルコード
	// ダイアログのタイトルとメッセージ
	System::UnicodeString Title = L"カスタムダイアログ";
	System::UnicodeString Msg = L"これはカスタムメッセージダイアログです。続行しますか?";

	// ダイアログの種類
	System::Uitypes::TMsgDlgType DlgType = mtConfirmation;

	// ダイアログに表示するボタン
	System::Uitypes::TMsgDlgButtons Buttons = TMsgDlgButtons() << mbYes << mbNo << mbCancel;

	// ヘルプコンテキスト (ヘルプがない場合は0)
	System::LongInt HelpCtx = 0;

	// デフォルトで選択されるボタン
	System::Uitypes::TMsgDlgBtn DefaultButton = mbYes;

	// カスタムボタンのキャプション
	System::UnicodeString CustomButtonCaptions[] = {L"Custom1", L"Custom2"};

	// ダイアログを表示し、ユーザーの選択を取得
	int Result = TaskMessageDlg(Title, Msg, DlgType, Buttons, HelpCtx, DefaultButton, CustomButtonCaptions, 1);

	// ユーザーの選択に基づいて処理
	switch (Result) {
		case mrYes:
			ShowMessage(L"Yesを選択しました。");
			break;
		case mrNo:
			ShowMessage(L"Noを選択しました。");
			break;
		case mrCancel:
			ShowMessage(L"キャンセルを選択しました。");
			break;
		case 100:
			ShowMessage(L"Custom1を選択しました。");
			break;
		case 101:
			ShowMessage(L"Custom2を選択しました。");
			break;
		default:
			ShowMessage(L"不明な選択をしました。");
			break;
	}

TaskMessageDlgPos関数

指定された画面座標の位置にメッセージ タスク ダイアログ ボックスを表示します。

TaskMessageDlgPos を呼び出すと、キャプションを指定する必要がない場合に特定の位置にメッセージ ボックスを表示できます。 (キャプションも指定する必要がある場合は、MessageDlg 関数を使用します。)

Msg は、表示されるメッセージの内容です。

DlgType は、ダイアログ ボックスの目的を示します。 利用可能な値のリストについては Vcl.Dialogs.TMsgDlgType ページを参照してください。

Buttons は、メッセージ ボックスにどのボタンが表示されるのかを示します。 Buttons は、Vcl.Dialogs.TMsgDlgButtons 型です。

HelpCtx は、ダイアログ ボックスの表示中にユーザーがヘルプ ボタンをクリックするか、F1 を押したときに表示されるヘルプ トピックのコンテキスト ID を指定します。

X と Y は、ダイアログ ボックスが表示される位置の画面座標を指定します。 -1 を指定した場合、メッセージ ボックスは指定された範囲のどこにでも表示できます。

DefaultBtn は、Buttons で指定された中でどのボタンがダイアログのデフォルトであるのかを指定します。 DefaultBtn が mbNo の場合、デフォルト ボタン セットはありません。 利用可能な列挙値のリストについては Vcl.Dialogs.TMsgDlgType ページを参照してください。

Bitmap はメッセージ ダイアログの表面に表示される画像です。 Bitmap が nil(Delphi)または NULL(C++)の場合、DlgType が mtConfirmation でない限り、画像はありません。

MessageDlgPos は、ユーザーが選択したボタンの値を返します。 メッセージ ボックスに表示されるボタンの各タイプの値と、ユーザーがそのボタンを選択した場合に返される対応値のリストについては、Vcl.Dialogs.TMsgDlgBtn ページの表を参照してください。

Vcl.Dialogs.TaskMessageDlgPos - RAD Studio API Documentation
  • mtConfirmation でクエスチョンマークを表示する

TMsgDlgType.mtConfirmation 型のダイアログ ボックスは情報アイコンを表示します。

今までは、クエスチョン マークを代わりに表示していましたが、Microsoft は、VCL が TMsgDlgType.mtConfirmation ダイアログ ボックスを表示するのに使用している Windows API 関数からクエスチョン マークのシンボルを削除してしまいました。Microsoft では次のように述べています。

「疑問符のメッセージ アイコンは推奨されなくなりました。これは、このアイコンがメッセージの具体的な種類を明確に表さないためであり、また、疑問形のメッセージはどの種類のメッセージにも使用できるためです。 さらに、ユーザーがメッセージ シンボルの疑問符をヘルプ情報と混同する可能性もあります。」

ドキュメントには、

以前のダイアログ ボックスの概観を使用するには、Vcl.Dialogs ユニットの UseLatestCommonDialogs 変数を False に設定しなければなりません。

とありますが、Windows11では、ダイアログ ボックスの概観は変わりませんでした。

  1. プロトタイプ宣言
extern DELPHI_PACKAGE int __fastcall TaskMessageDlgPos(const System::UnicodeString Title, 
											const System::UnicodeString Msg, 
											System::Uitypes::TMsgDlgType DlgType, 
											System::Uitypes::TMsgDlgButtons Buttons, 
											System::LongInt HelpCtx, int X, int Y)/* overload */;
extern DELPHI_PACKAGE int __fastcall TaskMessageDlgPos(const System::UnicodeString Title, 
											const System::UnicodeString Msg, 
											System::Uitypes::TMsgDlgType DlgType, 
											System::Uitypes::TMsgDlgButtons Buttons, 
											System::LongInt HelpCtx, int X, int Y, 
											System::Uitypes::TMsgDlgBtn DefaultButton)/* overload */;
  • 引数
引数意味
const System::UnicodeStringTitleダイアログのタイトル。
const System::UnicodeStringMsgダイアログに表示するメッセージ。
SystemUitypesTMsgDlgTypeDlgTypeダイアログの種類(情報、警告、エラーなど)。
SystemUitypesTMsgDlgButtonsButtonsダイアログに表示するボタンのセット。
System::LongIntHelpCtxヘルプコンテキスト。ヘルプを提供しない場合は0を指定。
intXダイアログを表示するX座標。
intYダイアログを表示するY座標。
SystemUitypesTMsgDlgBtnDefaultButtonデフォルトで選択されるボタン。
  • サンプルコード
	// ダイアログのタイトルとメッセージ
	System::UnicodeString Title = L"カスタムダイアログ";
	System::UnicodeString Msg = L"これは指定位置に表示されるカスタムメッセージダイアログです。続行しますか?";

	// ダイアログの種類
	System::Uitypes::TMsgDlgType DlgType = mtConfirmation;

	// ダイアログに表示するボタン
	System::Uitypes::TMsgDlgButtons Buttons = TMsgDlgButtons() << mbYes << mbNo << mbCancel;

	// ヘルプコンテキスト (ヘルプがない場合は0)
	System::LongInt HelpCtx = 0;

	// メッセージダイアログを表示する位置
	int X = 200;
	int Y = 150;

	// デフォルトで選択されるボタン
	System::Uitypes::TMsgDlgBtn DefaultButton = mbYes;

	// ダイアログを表示し、ユーザーの選択を取得
	int Result = TaskMessageDlgPos(Title, Msg, DlgType, Buttons, HelpCtx, X, Y, DefaultButton);

	// ユーザーの選択に基づいて処理
	switch (Result) {
		case mrYes:
			ShowMessage(L"Yesを選択しました。");
			break;
		case mrNo:
			ShowMessage(L"Noを選択しました。");
			break;
		case mrCancel:
			ShowMessage(L"キャンセルを選択しました。");
			break;
		default:
			ShowMessage(L"不明な選択をしました。");
			break;
	}

MessageBeep 関数 (winuser.h)

MessageBeep 関数は、VCLの関数ではなく、WIN32APIの関数ですが、ここで説明します。

デバッグ時に処理が実行されているかどうかを確認するのに、ここ関数を使うと便利です。

MessageBeep 関数は、波形サウンドを再生します。 各サウンドの種類の波形サウンドは、レジストリのエントリによって識別されます。

MessageBeep 関数 (winuser.h) - Win32 apps
波形サウンドを再生します。 各サウンドの種類の波形サウンドは、レジストリのエントリによって識別されます。
  • 解説

サウンドをキューに入れると、 MessageBeep 関数は呼び出し元の関数に制御を返し、サウンドを非同期的に再生します。

指定したアラート サウンドを再生できない場合、 MessageBeep はシステムの既定のサウンドの再生を試みます。 システムの既定のサウンドを再生できない場合、関数はコンピューター スピーカーを介して標準のビープ音を生成します。

ユーザーは、サウンド コントロール パネル アプリケーションを使用して警告ビープ音を無効にすることができます。

  • プロトタイプ宣言
BOOL MessageBeep(
  [in] UINT uType
);
  • パラメーター

再生するサウンド。 サウンドは、サウンド コントロール パネル アプリケーションを使用してユーザーによって設定され、レジストリに格納されます。

このパラメーターには、次の値のいずれかを指定できます。

意味
0xFFFFFFFF単純なビープ音。 サウンド カードが使用できない場合は、スピーカーを使用してサウンドが生成されます。
MB_ICONASTERISK(0x00000040L)「MB_ICONINFORMATION」を参照してください。
MB_ICONEXCLAMATION(0x00000030L)「MB_ICONWARNING」を参照してください。
MB_ICONERROR(0x00000010L)Windows Critical Stop サウンドとして指定されたサウンド。
MB_ICONHAND(0x00000010L)「MB_ICONERROR」を参照してください。
MB_ICONINFORMATION(0x00000040L)Windows アスタリスク サウンドとして指定されたサウンド。
MB_ICONQUESTION(0x00000020L)Windows 質問のサウンドとして指定されたサウンド。
MB_ICONSTOP(0x00000010L)「MB_ICONERROR」を参照してください。
MB_ICONWARNING(0x00000030L)Windows 感嘆符として指定されたサウンド。
MB_OK(0x000000000L)Windows の既定のビープ音として指定されたサウンド。
  • 戻り値

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

タイトルとURLをコピーしました