次の方法で共有


SHMessageBoxCheckA 関数 (shlwapi.h)

[SHMessageBoxCheck は、[要件] セクションで指定されたオペレーティング システムで使用できます。 それ以降のバージョンでは、変更または使用できない可能性があります。

ユーザーがそれ以上の出現を抑制するオプションを提供するメッセージ ボックスを表示します。 ユーザーがメッセージ ボックスを抑制することを既に選択している場合、関数はダイアログ ボックスを表示せず、代わりに既定値を返します。

構文

int SHMessageBoxCheckA(
  [in, optional] HWND   hwnd,
  [in]           LPCSTR pszText,
  [in]           LPCSTR pszCaption,
                 UINT   uType,
                 int    iDefault,
  [in]           LPCSTR pszRegVal
);

パラメーター

[in, optional] hwnd

型: HWND

メッセージ ボックスの所有者へのウィンドウ ハンドル。 この値は NULLできます。

[in] pszText

型: LPCTSTR

表示するメッセージを含む null で終わる文字列へのポインター。

[in] pszCaption

型: LPCTSTR

メッセージ ボックスのタイトルを含む null で終わる文字列へのポインター。 このパラメーターが NULLに設定されている場合、タイトルは Error!.

uType

型: UINT

メッセージ ボックスの内容と動作を指定するフラグ。 この関数は、MessageBoxでサポートされるフラグのサブセットのみをサポートします。 以下に示されていないフラグを使用する場合、関数の動作は未定義です。

次のいずれかのフラグのみを設定して、表示するボタンを指定する必要があります。

MB_OKCANCEL

[OK] と [キャンセル] ボタン メッセージ ボックスを表示します。

MB_YESNO

[はい] と [ なし] ボタンを メッセージ ボックスを表示します。

MB_OK

[OK] ボタンを含むメッセージ ボックスを表示します。

オプションのアイコンを表示するには、次のいずれかのフラグのみを設定します。

MB_ICONHAND

停止記号アイコンを表示します。

MB_ICONQUESTION

疑問符アイコンを表示します。

MB_ICONEXCLAMATION

感嘆符アイコンを表示します。

MB_ICONINFORMATION

円に小文字の "i" が付いたアイコンを表示します。

iDefault

型: int

ユーザーがメッセージ ボックスを再び表示しないことを選択したときに関数が返す値。 ユーザーがメッセージ ボックスを非表示にすることを選択していない場合、メッセージ ボックスが表示され、関数は iDefault無視します。

[in] pszRegVal

型: LPCTSTR

このメッセージに関連付ける一意の文字列値を含む null で終わる文字列へのポインター。 Microsoft によって使用される値との競合を回避するには、この文字列に GUID を含める必要があります。 この文字列は、終端の null 文字を含め、REGSTR_MAX_VALUE_LENGTH文字の長さを超えてはなりません。

戻り値

型: int

ユーザーがメッセージ ボックスを非表示にすることを既に選択している場合、関数はすぐに iDefaultに割り当てられた値を返します。

ユーザーが [OK]、[キャンセル] [キャンセル]、[ はい]] または [] ボタンをクリックすると、この関数は IDOK、IDCANCEL、IDYES、または IDNO をそれぞれ返します。

ユーザーがキャプションの [X] ボタンをクリックしてメッセージ ボックスを閉じると、関数は IDCANCEL を返します。 この場合、MB_OKCANCEL フラグが設定されていない場合でも、この値が返されます。

エラーが発生した場合、戻り値は通常 –1 です。 ただし、特定のメモリ不足の条件下では、関数は iDefault返す場合があります。

備考

セキュリティ警告: 関数が -1 または iDefaultを返した場合は、危険なアクションを実行しないでください。 メッセージ ボックスを表示しようとしたときにエラーが発生した場合、SHMessageBoxCheck は -1 を返すか、場合によっては iDefault返します。 このようなエラーは、メモリまたはリソースの不足が原因で発生する可能性があります。 これらの戻り値のいずれかを取得する場合は、ユーザーが必ずしもダイアログ ボックスを表示しなかったため、アクションに肯定的に同意しなかったことに注意する必要があります。

"このダイアログ ボックスを表示しない" と "この回答を記憶する" と混同しないでください。 SHMessageBoxCheck では、"この回答を記憶する" 機能は提供されません。 ユーザーがメッセージ ボックスを再度非表示にすることを選択した場合、関数はクリックしたボタンを保持しません。 代わりに、SHMessageBoxCheck 後続の呼び出し、iDefault指定された値を返すだけです。 次の例を考えてみましょう。


int iResult = SHMessageBoxCheck(hwnd, 
                                TEXT("Do you want to exit without saving?"),
                                TEXT("Warning"), 
                                MB_YESNO, 
                                IDNO,
                                TEXT("{d9108ba3-9a61-4398-bfbc-b02102c77e8a}");

ユーザーが [] を選択した場合は、この ダイアログ ボックスを表示せず、[はい] ボタンをクリック 、SHMessageBoxCheck は IDYES を返します。 ただし、次にこのコードを実行すると、ユーザーが最初に [はい] 選択した場合でも、SHMessageBoxCheck は IDYES を返しません。 iDefaultで指定された値であるため、IDNO 返します。

メッセージ ボックスに表示される既定のボタンは、iDefault 値と一致している必要があります。 MB_DEFBUTTON2 フラグがサポートされていないことは、MB_OKまたはMB_OKCANCEL フラグを指定した場合、iDefault を IDOK に設定する必要があることを意味します。 MB_YESNO フラグを設定している場合は、iDefault 値を IDYES に設定する必要があります。

SHMessageBoxCheck は、ユーザーが次のレジストリ キーの下で抑制するように選択したメッセージ ボックスを記録します。

HKEY_CURRENT_USER
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  DontShowMeThisDialogAgain

手記

shlwapi.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SHMessageBoxCheck を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー shlwapi.h
DLL Shlwapi.dll (バージョン 5.0 以降)