「今後、このダイアログボックスを表示しない」があるメッセージボックスを使う

test92.gif
Windows2000以降には「今後、このダイアログボックスを表示しない」を備えたメッセージボックスとしてSHMessageBoxCheckが用意されている。

このAPIはチェックを入れてボタンを押したとき、レジストリに押されたボタンの情報を保存している。

依存環境:ATL
#include "shlwapi.h"
#pragma	comment(lib,"shlwapi.lib")


void	Test(void)
{
	int		ret;

	//初回はメッセージボックスが表示される
	ret = ::SHMessageBoxCheck(NULL,_T("今後表示しないにチェックを入れてボタンを押してください"),_T("test"),MB_YESNO | MB_ICONINFORMATION,IDNO,_T("{D438034E-E6C2-4dae-BF16-12CEE68E201E}"));

	//メッセージボックスが表示されない
	ret = ::SHMessageBoxCheck(NULL,_T("チェックを入れたらこのダイアログは表示されません"),_T("test"),MB_YESNO | MB_ICONINFORMATION,IDNO,_T("{D438034E-E6C2-4dae-BF16-12CEE68E201E}"));

	//レジストリを削除
	{
		LONG	nRet;
		CRegKey	cRegistry;

		nRet = cRegistry.Open(HKEY_CURRENT_USER,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\DontShowMeThisDialogAgain"));
		if(nRet == ERROR_SUCCESS)
		{
			cRegistry.DeleteValue(_T("{D438034E-E6C2-4dae-BF16-12CEE68E201E}"));
			cRegistry.Close();
		}
	}

	//メッセージボックスが表示される
	ret = ::SHMessageBoxCheck(NULL,_T("レジストリを削除したので表示されます"),_T("test"),MB_YESNO | MB_ICONINFORMATION,IDNO,_T("{D438034E-E6C2-4dae-BF16-12CEE68E201E}"));
}

プロジェクトファイルをダウンロード


カテゴリー「ウインドウ操作」 のエントリー