#include #include #include #include #include #include #include #include #include #include #include #include #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; }