COMのエラーコードdwResultをHRESUTへ変換します。 具体的にはERROR_ACCESS_DENIEDならE_ACCESSDENIEDへ変換されます。
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <windows.h>
/*
	dwResultをHRESUTへ変換する
*/
int _tmain
(
	  int argc
	, _TCHAR* argv[]
)
{
	// 標準出力にユニコード出力する
	setlocale( LC_ALL, "Japanese" );
	// エラーコード(DWORD)
	DWORD dwResult = ERROR_ACCESS_DENIED;
	// dwResult(COMのエラー)をHRESULTへ変換する
	HRESULT hResult = HRESULT_FROM_WIN32( dwResult );
	/*
		hResultを文字列へ変換して出力
	*/
	{
		TCHAR* lpMessageBuffer = NULL;
		// hResultを文字列へ変換する
		if ( 0 != FormatMessage(
				  FORMAT_MESSAGE_ALLOCATE_BUFFER
				| FORMAT_MESSAGE_FROM_SYSTEM
				| FORMAT_MESSAGE_IGNORE_INSERTS
				, NULL
				, ERROR_ACCESS_DENIED//hResult
				, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ) // デフォルト ユーザー言語 
				, (LPTSTR)&lpMessageBuffer
				, 0
				, NULL
				) ) {
			// エラーを文字列変換してものを出力
			std::wcout << lpMessageBuffer << std::endl;
			// システムによって確保されたバッファを開放します。
			LocalFree( lpMessageBuffer );
		}
	}
	// 正常終了
	return( 0 );
}
アクセスが拒否されました。