windows-nt/Source/XPSP1/NT/multimedia/directx/dinput/diconfig/dftest.cpp
2020-09-26 16:20:57 +08:00

123 lines
2.6 KiB
C++

#include <windows.h>
#include <objbase.h>
#include <winnls.h>
#include <commdlg.h>
#include <mmsystem.h>
#include <tchar.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <math.h>
#include <string.h>
#include <process.h>
#include "idftest.h"
#include "ourguids.h"
#include "useful.h"
LPCTSTR GetHResultMsg(HRESULT);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
TESTCONFIGUIPARAMS p;
BOOL bTCUIMsg = FALSE;
HRESULT hres = S_OK;
LPCTSTR title = _T("CoInitialize Result");
if (SUCCEEDED(hres = CoInitialize(NULL)))
{
title = _T("CoCreateInstance Result");
IDirectInputConfigUITest* pITest = NULL;
hres = ::CoCreateInstance(CLSID_CDirectInputConfigUITest, NULL, CLSCTX_INPROC_SERVER, IID_IDirectInputConfigUITest, (LPVOID*)&pITest);
if (SUCCEEDED(hres))
{
title = _T("TestConfigUI Result");
p.dwSize = sizeof(TESTCONFIGUIPARAMS);
p.eVia = TUI_VIA_CCI;
p.eDisplay = TUI_DISPLAY_GDI;
p.eConfigType = TUI_CONFIGTYPE_EDIT;
p.nNumAcFors = 3;
p.lpwszUserNames = L"Alpha\0Beta\0Gamma\0Epsilon\0Theta\0Omega\0\0";
p.bEditLayout = TRUE;
CopyStr(p.wszErrorText, ":)", MAX_PATH);
hres = pITest->TestConfigUI(&p);
bTCUIMsg = TRUE;
pITest->Release();
}
CoUninitialize();
}
LPCTSTR msg = _T("Uknown Error.");
switch (hres)
{
case S_OK: msg = _T("Success."); break;
case REGDB_E_CLASSNOTREG: msg = _T("REGDB_E_CLASSNOTREG!"); break;
case CLASS_E_NOAGGREGATION: msg = _T("CLASS_E_NOAGGREGATION"); break;
default:
msg = GetHResultMsg(hres);
break;
}
if (FAILED(hres))
{
if (bTCUIMsg)
{
TCHAR tmsg[2048];
LPTSTR tstr = AllocLPTSTR(p.wszErrorText);
_stprintf(tmsg, _T("TestConfigUI() failed.\n\ntszErrorText =\n\t\"%s\"\n\n\nHRESULT...\n\n%s"), tstr, msg);
free(tstr);
MessageBox(NULL, msg, title, MB_OK);
}
else
MessageBox(NULL, msg, title, MB_OK);
}
return 0;
}
LPCTSTR GetHResultMsg(HRESULT hr)
{
static TCHAR str[2048];
LPCTSTR tszhr = NULL, tszMeaning = NULL;
switch (hr)
{
case E_PENDING:
tszhr = _T("E_PENDING");
tszMeaning = _T("Data is not yet available.");
break;
case E_FAIL:
tszhr = _T("E_FAIL");
tszMeaning = _T("General failure.");
break;
case E_INVALIDARG:
tszhr = _T("E_INVALIDARG");
tszMeaning = _T("Invalid argument.");
break;
case E_NOTIMPL:
tszhr = _T("E_NOTIMPL");
tszMeaning = _T("Not implemented.");
break;
default:
_stprintf(str, _T("Unknown HRESULT (%08X)."), hr);
return str;
}
_stprintf(str, _T("(%08X)\n%s:\n\n%s"), hr, tszhr, tszMeaning);
return str;
}