procedure gpcMessageBox(
const sWMsg, sWTitle:
WideString);
overload;
//Unicode版Application.MessageBox。
begin
gfniMessageBox(sWMsg, sWTitle, MB_OK);
end;
procedure gpcShowMessage(
const sWMsg:
WideString);
//Unicode対応ShowMessage。
begin
gfniMessageBox(sWMsg,
gfnsExeNameGet, MB_OK);
end;
function gfniMessageBoxYesNo(
const sWMsg, sWTitle:
WideString): Integer;
//Unicode対応MessageBox。YesとNoボタン。
begin
Result := gfniMessageBox(sWMsg, sWTitle, MB_YESNO
or MB_APPLMODAL
{ or MB_ICONQUESTION});
end;
function gfniMessageBoxYesNoCancel(
const sWMsg, sWTitle:
WideString): Integer;
//Unicode対応MessageBox。YesとNoとCancelボタン。
begin
Result := gfniMessageBox(sWMsg, sWTitle, MB_YESNOCANCEL
or MB_APPLMODAL
{ or MB_ICONQUESTION});
end;
unit myMessageBox;
interface
uses
Windows;
//MessageBox
function gfniMessageBox(
const sWMsg, sWTitle:
WideString;
const iStyle: UINT): Integer;
//ShowMessage
procedure gpcShowMessage(
const sWMsg:
WideString);
overload;
procedure gpcShowMessage(
const sWMsg, sWTitle:
WideString);
overload;
//Application.MessageBox
procedure gpcMessageBox(
const sWMsg:
WideString);
overload;
procedure gpcMessageBox(
const sWMsg, sWTitle:
WideString);
overload;
procedure gpcMessageBox(
const sWMsg, sWTitle:
WideString;
const iStyle: UINT);
overload;
//YesボタンとNoボタン
function gfniMessageBoxYesNo(
const sWMsg:
WideString): Integer;
overload;
function gfniMessageBoxYesNo(
const sWMsg, sWTitle:
WideString): Integer;
overload;
function gfniMessageBoxYesNo(
const sWMsg, sWTitle:
WideString;
const iStyle: UINT): Integer;
overload;
//YesボタンとNoボタンとCancelボタン
function gfniMessageBoxYesNoCancel(
const sWMsg:
WideString): Integer;
overload;
function gfniMessageBoxYesNoCancel(
const sWMsg, sWTitle:
WideString): Integer;
overload;
function gfniMessageBoxYesNoCancel(
const sWMsg, sWTitle:
WideString;
const iStyle: UINT): Integer;
overload;
//------------------------------------------------------------------------------
implementation
uses
Forms,
SysUtils;
//------------------------------------------------------------------------------
function gfnsExeNameGet:
WideString;
var
li_Count: Integer;
lpp_Arg, lpp_Param: PPWideChar;
begin
Result := '';
lpp_Param := CommandLineToArgvW(GetCommandLineW, li_Count);
try
lpp_Arg := lpp_Param;
Result :=
WideString(lpp_Arg^);
//実行ファイル名
finally
LocalFree(Cardinal(lpp_Param));
end;
end;
//------------------------------------------------------------------------------
function gfniMessageBox(
const sWMsg, sWTitle:
WideString;
const iStyle: UINT): Integer;
{2007-10-06:
Unicode対応のMessageBox。
MB_OK [OK]ボタン。
MB_OKCANCEL [OK]ボタンと[キャンセル]ボタン。
MB_YESNO [はい]と[いいえ]の2つのボタン。
MB_YESNOCANCEL [はい]、[いいえ]、[キャンセル]の3つのボタン。
MB_RETRYCANCEL [再試行]ボタンと[キャンセル]ボタン。
MB_ABORTRETRYIGNORE [中止]、[再試行]、[無視]の3つのボタン。
MB_DEFBUTTON1 最初のボタンがデフォルト。
MB_DEFBUTTON2、MB_DEFBUTTON3を指定しなければ最初のボタンが常にデフォルト。
MB_DEFBUTTON2 2番目のボタンがデフォルト。
MB_DEFBUTTON3 3番目のボタンがデフォルト。
MB_ICONEXCLAMATION 感嘆符アイコンを表示。
MB_ICONQUESTION 疑問符アイコンを表示。
MB_ICONINFORMATION 円の中に小文字の「i」があるアイコンを表示。
MB_ICONSTOP 「STOP」アイコンを表示。
MB_SYSTEMMODAL
すべてのアプリケーションはユーザーがメッセージボックスに応答するまで中断されます。
アプリケーションがMB_ICONHANDを指定しなければメッセージボックスは生成の処理が完
了するまでにはモーダルになりません。
このためオーナーウィンドウやそのほかのウィンドウはメッセージボックスのアクティ
ブ化によるメッセージを受け取り続けます。
システムモーダルメッセージボックスはすぐに対応を求められるような重大で潜在的な
危険性のあるエラー(メモリ不足など)をユーザーに通知するために使用してください。
MB_TASKMODAL
第一引数がnilの時、現在のタスクに属するすべてのトップレベルウィンドウが使用不能
になることを除いてMB_APPLMODALと同じです。
呼び出し側のアプリケーションやライブラリが使用可能なウィンドウのハンドルを持た
ず、ほかのアプリケーションを中断せずに現在のアプリケーションのほかのウィンドウへ
の入力を阻止しなければならないときには、このフラグを使用してください。
MB_APPLMODAL
第一引数のウィンドウ内で作業を継続する前に、メッセージボックスに応答しなければな
りません。
しかし他のアプリケーションのウィンドウに移動してそのウィンドウ内で作業すること
はできます。MB_SYSTEMMODAL、MB_TASKMODALを指定しなければMB_APPLMODALがデフォルト
です。
MB_SETFOREGROUND
メッセージボックスは前景ウィンドウになります。
MB_DEFAULT_DESKTOP_ONLY
現在入力を受け取るデスクトップは、 デフォルトのデスクトップでなければなりません。
それ以外の場合には関数が失敗します。
デフォルトのデスクトップはユーザーがログオンした後でアプリケーションが動作する
デスクトップです。
戻り値
IDABORT [中止]ボタンが選択されました。
IDCANCEL [キャンセル]ボタンが選択されました。
IDIGNORE [無視]ボタンが選択されました。
IDNO [いいえ]ボタンが選択されました。
IDOK [OK]ボタンが選択されました。
IDRETRY [再試行]ボタンが選択されました。
IDYES [はい]ボタンが選択されました。
}
begin
Result := MessageBoxW(Application.Handle, PWideChar(sWMsg), PWideChar(sWTitle), iStyle
or MB_SETFOREGROUND);
end;
//------------------------------------------------------------------------------
procedure gpcMessageBox(
const sWMsg:
WideString);
overload;
{2008-03-05:
Application.MessageBoxのUnicode版。
}
begin
gpcMessageBox(sWMsg, '');
end;
procedure gpcMessageBox(
const sWMsg, sWTitle:
WideString);
overload;
{2008-03-05:
Application.MessageBoxのUnicode版。
}
begin
gfniMessageBox(sWMsg, sWTitle, 0);
end;
procedure gpcMessageBox(
const sWMsg, sWTitle:
WideString;
const iStyle: UINT);
overload;
{2008-03-05:
Application.MessageBoxのUnicode版。
}
begin
gfniMessageBox(sWMsg, sWTitle, iStyle
or MB_APPLMODAL
or MB_OK);
end;
//ShowMessage
procedure gpcShowMessage(
const sWMsg:
WideString);
{2007-10-06:
ShowMessageのUnicode版。
}
begin
gfniMessageBox(sWMsg,
gfnsExeNameGet, MB_OK);
end;
procedure gpcShowMessage(
const sWMsg, sWTitle:
WideString);
{2008-04-04:
ShowMessageのUnicode版。タイトルのキャプション指定付。
}
begin
gfniMessageBox(sWMsg, sWTitle, MB_OK);
end;
function gfniMessageBoxYesNo(
const sWMsg:
WideString): Integer;
{2008-03-08:
Unicode対応版のMessageBox。YesとNoボタン。
}
begin
Result := gfniMessageBoxYesNo(sWMsg, '');
end;
function gfniMessageBoxYesNo(
const sWMsg, sWTitle:
WideString): Integer;
{2008-03-08:
Unicode対応版のMessageBox。YesとNoボタン。
}
begin
Result := gfniMessageBoxYesNo(sWMsg, sWTitle, 0);
end;
function gfniMessageBoxYesNo(
const sWMsg, sWTitle:
WideString;
const iStyle: UINT): Integer;
{2007-10-06:
Unicode対応版のMessageBox。YesとNoボタン。
}
begin
Result := gfniMessageBox(sWMsg, sWTitle, iStyle
or MB_YESNO
or MB_APPLMODAL
{ or MB_ICONQUESTION});
end;
function gfniMessageBoxYesNoCancel(
const sWMsg:
WideString): Integer;
{2008-03-08:
Unicode対応版のMessageBox。YesとNoとCancelボタン。
}
begin
Result := gfniMessageBoxYesNoCancel(sWMsg, '');
end;
function gfniMessageBoxYesNoCancel(
const sWMsg, sWTitle:
WideString): Integer;
{2008-03-08:
Unicode対応版のMessageBox。YesとNoとCancelボタン。
}
begin
Result := gfniMessageBoxYesNoCancel(sWMsg, sWTitle, 0);
end;
function gfniMessageBoxYesNoCancel(
const sWMsg, sWTitle:
WideString;
const iStyle: UINT): Integer;
{2008-03-08,06-04:
Unicode対応版のMessageBox。YesとNoとCancelボタン。
2008-06-04:MB_YESNOCANCELでなくMB_YESNOにしていたミスを修正。
}
begin
Result := gfniMessageBox(sWMsg, sWTitle, iStyle
or MB_YESNOCANCEL
or MB_APPLMODAL
or MB_ICONQUESTION);
end;
end.