本文整理汇总了C++中SUCCEEDED函数的典型用法代码示例。如果您正苦于以下问题:C++ SUCCEEDED函数的具体用法?C++ SUCCEEDED怎么用?C++ SUCCEEDED使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了SUCCEEDED函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetClientRect
HRESULT BaseApp::createDeviceResources(HWND hWnd)
{
HRESULT hr = S_OK;
RECT rc;
GetClientRect(hWnd, &rc);
D2D1_SIZE_U size = D2D1::SizeU(
rc.right - rc.left,
rc.bottom - rc.top
);
hr = d2dFactory->CreateHwndRenderTarget(
D2D1::RenderTargetProperties(),
D2D1::HwndRenderTargetProperties(hWnd, size),
&renderingTarget
);
size_t index{ 0 };
// Brushes
for (auto color : brushColor) {
solidBrushes.push_back(NULL);
hr = renderingTarget->CreateSolidColorBrush(
color,
&solidBrushes.at(index));
++index;
}
// Text formats
// Pasing in Font, font-size
index = 0;
for (auto font : fonts) {
for (auto fontSize : fontSizes) {
textFormats.push_back(NULL);
hr = d2dDWriteFactory->CreateTextFormat(
TUtils::toWSString(font).c_str(),
NULL,
DWRITE_FONT_WEIGHT_REGULAR,
DWRITE_FONT_STYLE_NORMAL,
DWRITE_FONT_STRETCH_NORMAL,
fontSize,
L"en-us",
&textFormats.at(index)
);
// Center align (horizontally) the text.
if (SUCCEEDED(hr))
{
hr = textFormats.at(index)->SetTextAlignment(DWRITE_TEXT_ALIGNMENT_LEADING);
hr = textFormats.at(index)->SetParagraphAlignment(DWRITE_PARAGRAPH_ALIGNMENT_NEAR);
}
++index;
}
}
//// Bitmaps
IWICBitmapDecoder* wicBitmapDecoder = NULL;
IWICFormatConverter* wicFormatConverter = NULL;
IWICBitmapFrameDecode* wicBitmapFrameDecode = NULL;
index = 0;
for (auto spriteSheetFile : spriteSheetFiles) {
hr = wicImaingFactory->CreateDecoderFromFilename(
TUtils::toWSString(spriteSheetFile).c_str(),
NULL,
GENERIC_READ,
WICDecodeMetadataCacheOnLoad,
&wicBitmapDecoder);
hr = wicImaingFactory->CreateFormatConverter(&wicFormatConverter);
hr = wicBitmapDecoder->GetFrame(0, &wicBitmapFrameDecode);
hr = wicFormatConverter->Initialize(
wicBitmapFrameDecode,
GUID_WICPixelFormat32bppPBGRA,
WICBitmapDitherTypeNone,
NULL, 0.f,
WICBitmapPaletteTypeMedianCut
);
spriteSheets.push_back(NULL);
hr = renderingTarget->CreateBitmapFromWicBitmap(
wicFormatConverter,
NULL,
&spriteSheets.at(index)
);
++index;
}
return hr;
}
示例2: ResolveShellFunctions
/* static */
wxString wxStandardPaths::DoGetDirectory(int csidl)
{
if ( !gs_shellFuncs.initialized )
ResolveShellFunctions();
wxString dir;
HRESULT hr = E_FAIL;
// test whether the function is available during compile-time (it must be
// defined as either "SHGetFolderPathA" or "SHGetFolderPathW")
#ifdef SHGetFolderPath
// and now test whether we have it during run-time
if ( gs_shellFuncs.pSHGetFolderPath )
{
hr = gs_shellFuncs.pSHGetFolderPath
(
NULL, // parent window, not used
csidl,
NULL, // access token (current user)
SHGFP_TYPE_CURRENT, // current path, not just default value
wxStringBuffer(dir, MAX_PATH)
);
// somewhat incredibly, the error code in the Unicode version is
// different from the one in ASCII version for this function
#if wxUSE_UNICODE
if ( hr == E_FAIL )
#else
if ( hr == S_FALSE )
#endif
{
// directory doesn't exist, maybe we can get its default value?
hr = gs_shellFuncs.pSHGetFolderPath
(
NULL,
csidl,
NULL,
SHGFP_TYPE_DEFAULT,
wxStringBuffer(dir, MAX_PATH)
);
}
}
#endif // SHGetFolderPath
#ifdef SHGetSpecialFolderPath
if ( FAILED(hr) && gs_shellFuncs.pSHGetSpecialFolderPath )
{
hr = gs_shellFuncs.pSHGetSpecialFolderPath
(
NULL, // parent window
wxStringBuffer(dir, MAX_PATH),
csidl,
FALSE // don't create if doesn't exist
);
}
#endif // SHGetSpecialFolderPath
// SHGetSpecialFolderLocation should be available with all compilers and
// under all Win32 systems, so don't test for it (and as it doesn't exist
// in "A" and "W" versions anyhow, testing would be more involved, too)
if ( FAILED(hr) )
{
LPITEMIDLIST pidl;
hr = SHGetSpecialFolderLocation(NULL, csidl, &pidl);
if ( SUCCEEDED(hr) )
{
// creating this temp object has (nice) side effect of freeing pidl
dir = wxItemIdList(pidl).GetPath();
}
}
return dir;
}
示例3: WinMain
/**-----------------------------------------------------------------------------
* 프로그램 시작점
*------------------------------------------------------------------------------
*/
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
/// 윈도우 클래스 등록
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
"BasicFrame", NULL
};
RegisterClassEx( &wc );
/// 윈도우 생성
HWND hWnd = CreateWindow( "BasicFrame", WINDOW_TITLE,
WS_OVERLAPPEDWINDOW, 100, 100, WINDOW_W, WINDOW_H,
GetDesktopWindow(), NULL, wc.hInstance, NULL );
g_hwnd = hWnd;
g_pLog = new ZFLog( ZF_LOG_TARGET_CONSOLE | ZF_LOG_TARGET_WINDOW );
// g_pCamera = new ZCamera;
g_pCamera = (ZCamera*)_aligned_malloc( sizeof( ZCamera ), 16 );
/// Direct3D 초기화
if( SUCCEEDED( InitD3D( hWnd ) ) )
{
if( SUCCEEDED( InitGeometry() ) )
{
/// 윈도우 출력
ShowWindow( hWnd, SW_SHOWDEFAULT );
UpdateWindow( hWnd );
/// 메시지 루프
MSG msg;
ZeroMemory( &msg, sizeof(msg) );
while( msg.message!=WM_QUIT )
{
/// 메시지큐에 메시지가 있으면 메시지 처리
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
{
/// 처리할 메시지가 없으면 Render()함수 호출
Render();
}
}
}
}
delete g_pLog;
// delete g_pCamera;
if ( g_pCamera )
{
g_pCamera->~ZCamera();
_aligned_free( g_pCamera );
}
/// 등록된 클래스 소거
UnregisterClass( "D3D Tutorial", wc.hInstance );
return 0;
}
示例4: create_system_ports_list
static void create_system_ports_list(IDirectMusic8Impl* object)
{
port_info * port;
const WCHAR emulated[] = {' ','[','E','m','u','l','a','t','e','d',']',0};
ULONG nb_ports;
ULONG nb_midi_out;
ULONG nb_midi_in;
MIDIOUTCAPSW caps_out;
MIDIINCAPSW caps_in;
IDirectMusicSynth8* synth;
HRESULT hr;
ULONG i;
TRACE("(%p)\n", object);
/* NOTE:
- it seems some native versions get the rest of devices through dmusic32.EnumLegacyDevices...*sigh*...which is undocumented
- should we enum wave devices ? Native does not seem to
*/
nb_midi_out = midiOutGetNumDevs();
nb_midi_in = midiInGetNumDevs();
nb_ports = 1 /* midi mapper */ + nb_midi_out + nb_midi_in + 1 /* synth port */;
port = object->system_ports = HeapAlloc(GetProcessHeap(), 0, nb_ports * sizeof(port_info));
if (!object->system_ports)
return;
/* Fill common port caps for all winmm ports */
for (i = 0; i < (nb_ports - 1 /* synth port*/); i++)
{
object->system_ports[i].caps.dwSize = sizeof(DMUS_PORTCAPS);
object->system_ports[i].caps.dwType = DMUS_PORT_WINMM_DRIVER;
object->system_ports[i].caps.dwMemorySize = 0;
object->system_ports[i].caps.dwMaxChannelGroups = 1;
object->system_ports[i].caps.dwMaxVoices = 0;
object->system_ports[i].caps.dwMaxAudioChannels = 0;
object->system_ports[i].caps.dwEffectFlags = DMUS_EFFECT_NONE;
/* Fake port GUID */
object->system_ports[i].caps.guidPort = IID_IUnknown;
object->system_ports[i].caps.guidPort.Data1 = i + 1;
}
/* Fill midi mapper port info */
port->device = MIDI_MAPPER;
port->create = DMUSIC_CreateMidiOutPortImpl;
midiOutGetDevCapsW(MIDI_MAPPER, &caps_out, sizeof(caps_out));
strcpyW(port->caps.wszDescription, caps_out.szPname);
strcatW(port->caps.wszDescription, emulated);
port->caps.dwFlags = DMUS_PC_SHAREABLE;
port->caps.dwClass = DMUS_PC_OUTPUTCLASS;
port++;
/* Fill midi out port info */
for (i = 0; i < nb_midi_out; i++)
{
port->device = i;
port->create = DMUSIC_CreateMidiOutPortImpl;
midiOutGetDevCapsW(i, &caps_out, sizeof(caps_out));
strcpyW(port->caps.wszDescription, caps_out.szPname);
strcatW(port->caps.wszDescription, emulated);
port->caps.dwFlags = DMUS_PC_SHAREABLE | DMUS_PC_EXTERNAL;
port->caps.dwClass = DMUS_PC_OUTPUTCLASS;
port++;
}
/* Fill midi in port info */
for (i = 0; i < nb_midi_in; i++)
{
port->device = i;
port->create = DMUSIC_CreateMidiInPortImpl;
midiInGetDevCapsW(i, &caps_in, sizeof(caps_in));
strcpyW(port->caps.wszDescription, caps_in.szPname);
strcatW(port->caps.wszDescription, emulated);
port->caps.dwFlags = DMUS_PC_EXTERNAL;
port->caps.dwClass = DMUS_PC_INPUTCLASS;
port++;
}
/* Fill synth port info */
port->create = DMUSIC_CreateSynthPortImpl;
hr = CoCreateInstance(&CLSID_DirectMusicSynth, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectMusicSynth8, (void**)&synth);
if (SUCCEEDED(hr))
{
port->caps.dwSize = sizeof(port->caps);
hr = IDirectMusicSynth8_GetPortCaps(synth, &port->caps);
IDirectMusicSynth8_Release(synth);
}
if (FAILED(hr))
nb_ports--;
object->nb_system_ports = nb_ports;
}
示例5: rtvHandle
// Load the rendering pipeline dependencies.
void D3D12HelloTriangle::LoadPipeline()
{
#ifdef _DEBUG
// Enable the D3D12 debug layer.
{
ComPtr<ID3D12Debug> debugController;
if (SUCCEEDED(D3D12GetDebugInterface(IID_PPV_ARGS(&debugController))))
{
debugController->EnableDebugLayer();
}
}
#endif
ComPtr<IDXGIFactory4> factory;
ThrowIfFailed(CreateDXGIFactory1(IID_PPV_ARGS(&factory)));
if (m_useWarpDevice)
{
ComPtr<IDXGIAdapter> warpAdapter;
ThrowIfFailed(factory->EnumWarpAdapter(IID_PPV_ARGS(&warpAdapter)));
ThrowIfFailed(D3D12CreateDevice(
warpAdapter.Get(),
D3D_FEATURE_LEVEL_11_0,
IID_PPV_ARGS(&m_device)
));
}
else
{
ThrowIfFailed(D3D12CreateDevice(
nullptr,
D3D_FEATURE_LEVEL_11_0,
IID_PPV_ARGS(&m_device)
));
}
// Describe and create the command queue.
D3D12_COMMAND_QUEUE_DESC queueDesc = {};
queueDesc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE;
queueDesc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;
ThrowIfFailed(m_device->CreateCommandQueue(&queueDesc, IID_PPV_ARGS(&m_commandQueue)));
// Describe and create the swap chain.
DXGI_SWAP_CHAIN_DESC swapChainDesc = {};
swapChainDesc.BufferCount = FrameCount;
swapChainDesc.BufferDesc.Width = m_width;
swapChainDesc.BufferDesc.Height = m_height;
swapChainDesc.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
swapChainDesc.OutputWindow = m_hwnd;
swapChainDesc.SampleDesc.Count = 1;
swapChainDesc.Windowed = TRUE;
ComPtr<IDXGISwapChain> swapChain;
ThrowIfFailed(factory->CreateSwapChain(
m_commandQueue.Get(), // Swap chain needs the queue so that it can force a flush on it.
&swapChainDesc,
&swapChain
));
ThrowIfFailed(swapChain.As(&m_swapChain));
m_frameIndex = m_swapChain->GetCurrentBackBufferIndex();
// Create descriptor heaps.
{
// Describe and create a render target view (RTV) descriptor heap.
D3D12_DESCRIPTOR_HEAP_DESC rtvHeapDesc = {};
rtvHeapDesc.NumDescriptors = FrameCount;
rtvHeapDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV;
rtvHeapDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE;
ThrowIfFailed(m_device->CreateDescriptorHeap(&rtvHeapDesc, IID_PPV_ARGS(&m_rtvHeap)));
m_rtvDescriptorSize = m_device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_RTV);
}
// Create frame resources.
{
CD3DX12_CPU_DESCRIPTOR_HANDLE rtvHandle(m_rtvHeap->GetCPUDescriptorHandleForHeapStart());
// Create a RTV for each frame.
for (UINT n = 0; n < FrameCount; n++)
{
ThrowIfFailed(m_swapChain->GetBuffer(n, IID_PPV_ARGS(&m_renderTargets[n])));
m_device->CreateRenderTargetView(m_renderTargets[n].Get(), nullptr, rtvHandle);
rtvHandle.Offset(1, m_rtvDescriptorSize);
}
}
ThrowIfFailed(m_device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&m_commandAllocator)));
}
示例6: keyDownCallback
static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
if (argumentCount < 1)
return JSValueMakeUndefined(context);
static const JSStringRef lengthProperty = JSStringCreateWithUTF8CString("length");
COMPtr<IWebFramePrivate> framePrivate;
if (SUCCEEDED(frame->QueryInterface(&framePrivate)))
framePrivate->layout();
JSStringRef character = JSValueToStringCopy(context, arguments[0], exception);
ASSERT(!*exception);
int virtualKeyCode;
int charCode = 0;
int keyData = 1;
bool needsShiftKeyModifier = false;
if (JSStringIsEqualToUTF8CString(character, "leftArrow")) {
virtualKeyCode = VK_LEFT;
keyData += KF_EXTENDED << 16; // In this case, extended means "not keypad".
} else if (JSStringIsEqualToUTF8CString(character, "rightArrow")) {
virtualKeyCode = VK_RIGHT;
keyData += KF_EXTENDED << 16;
} else if (JSStringIsEqualToUTF8CString(character, "upArrow")) {
virtualKeyCode = VK_UP;
keyData += KF_EXTENDED << 16;
} else if (JSStringIsEqualToUTF8CString(character, "downArrow")) {
virtualKeyCode = VK_DOWN;
keyData += KF_EXTENDED << 16;
} else if (JSStringIsEqualToUTF8CString(character, "pageUp"))
virtualKeyCode = VK_PRIOR;
else if (JSStringIsEqualToUTF8CString(character, "pageDown"))
virtualKeyCode = VK_NEXT;
else if (JSStringIsEqualToUTF8CString(character, "home"))
virtualKeyCode = VK_HOME;
else if (JSStringIsEqualToUTF8CString(character, "end"))
virtualKeyCode = VK_END;
else if (JSStringIsEqualToUTF8CString(character, "insert"))
virtualKeyCode = VK_INSERT;
else if (JSStringIsEqualToUTF8CString(character, "delete"))
virtualKeyCode = VK_DELETE;
else if (JSStringIsEqualToUTF8CString(character, "printScreen"))
virtualKeyCode = VK_SNAPSHOT;
else if (JSStringIsEqualToUTF8CString(character, "menu"))
virtualKeyCode = VK_APPS;
else if (JSStringIsEqualToUTF8CString(character, "leftControl")) {
virtualKeyCode = VK_CONTROL;
keyData += makeKeyDataForScanCode(VK_LCONTROL);
} else if (JSStringIsEqualToUTF8CString(character, "leftShift")) {
virtualKeyCode = VK_SHIFT;
keyData += makeKeyDataForScanCode(VK_LSHIFT);
} else if (JSStringIsEqualToUTF8CString(character, "leftAlt")) {
virtualKeyCode = VK_MENU;
keyData += makeKeyDataForScanCode(VK_LMENU);
} else if (JSStringIsEqualToUTF8CString(character, "rightControl")) {
virtualKeyCode = VK_CONTROL;
keyData += makeKeyDataForScanCode(VK_RCONTROL);
} else if (JSStringIsEqualToUTF8CString(character, "rightShift")) {
virtualKeyCode = VK_SHIFT;
keyData += makeKeyDataForScanCode(VK_RSHIFT);
} else if (JSStringIsEqualToUTF8CString(character, "rightAlt")) {
virtualKeyCode = VK_MENU;
keyData += makeKeyDataForScanCode(VK_RMENU);
} else {
static const char shiftedUSCharacters[] = "[email protected]#$%^&*()_+{}|:\"<>?";
charCode = JSStringGetCharactersPtr(character)[0];
virtualKeyCode = LOBYTE(VkKeyScan(charCode));
if (strchr(shiftedUSCharacters, charCode))
needsShiftKeyModifier = true;
}
JSStringRelease(character);
BYTE keyState[256];
if (argumentCount > 1 || needsShiftKeyModifier) {
::GetKeyboardState(keyState);
BYTE newKeyState[256];
memcpy(newKeyState, keyState, sizeof(keyState));
if (needsShiftKeyModifier)
newKeyState[VK_SHIFT] = 0x80;
if (argumentCount > 1) {
JSObjectRef modifiersArray = JSValueToObject(context, arguments[1], 0);
if (modifiersArray) {
int modifiersCount = JSValueToNumber(context, JSObjectGetProperty(context, modifiersArray, lengthProperty, 0), 0);
for (int i = 0; i < modifiersCount; ++i) {
JSValueRef value = JSObjectGetPropertyAtIndex(context, modifiersArray, i, 0);
JSStringRef string = JSValueToStringCopy(context, value, 0);
if (JSStringIsEqualToUTF8CString(string, "ctrlKey") || JSStringIsEqualToUTF8CString(string, "addSelectionKey"))
newKeyState[VK_CONTROL] = 0x80;
else if (JSStringIsEqualToUTF8CString(string, "shiftKey") || JSStringIsEqualToUTF8CString(string, "rangeSelectionKey"))
newKeyState[VK_SHIFT] = 0x80;
else if (JSStringIsEqualToUTF8CString(string, "altKey"))
newKeyState[VK_MENU] = 0x80;
JSStringRelease(string);
}
}
}
//.........这里部分代码省略.........
示例7: checkDShowAvailability
bool checkDShowAvailability()
{
ComSmartPtr <IGraphBuilder> graph;
return SUCCEEDED (graph.CoCreateInstance (CLSID_FilterGraph));
}
开发者ID:SimpleSoftwareSynthesizer,项目名称:SimpleSoftwareSynthesizer,代码行数:5,代码来源:juce_win32_DirectShowComponent.cpp
示例8: SynthPortImpl_IDirectMusicPort_DownloadInstrument
static HRESULT WINAPI SynthPortImpl_IDirectMusicPort_DownloadInstrument(LPDIRECTMUSICPORT iface, IDirectMusicInstrument* instrument, IDirectMusicDownloadedInstrument** downloaded_instrument, DMUS_NOTERANGE* note_ranges, DWORD num_note_ranges)
{
SynthPortImpl *This = impl_from_SynthPortImpl_IDirectMusicPort(iface);
IDirectMusicInstrumentImpl *instrument_object;
HRESULT ret;
BOOL free;
HANDLE download;
DMUS_DOWNLOADINFO *info;
DMUS_OFFSETTABLE *offset_table;
DMUS_INSTRUMENT *instrument_info;
BYTE *data;
ULONG offset;
ULONG nb_regions;
ULONG size;
ULONG i;
TRACE("(%p/%p)->(%p, %p, %p, %d)\n", iface, This, instrument, downloaded_instrument, note_ranges, num_note_ranges);
if (!instrument || !downloaded_instrument || (num_note_ranges && !note_ranges))
return E_POINTER;
instrument_object = impl_from_IDirectMusicInstrument(instrument);
nb_regions = instrument_object->header.cRegions;
size = sizeof(DMUS_DOWNLOADINFO) + sizeof(ULONG) * (1 + nb_regions) + sizeof(DMUS_INSTRUMENT) + sizeof(DMUS_REGION) * nb_regions;
data = HeapAlloc(GetProcessHeap(), 0, size);
if (!data)
return E_OUTOFMEMORY;
info = (DMUS_DOWNLOADINFO*)data;
offset_table = (DMUS_OFFSETTABLE*)(data + sizeof(DMUS_DOWNLOADINFO));
offset = sizeof(DMUS_DOWNLOADINFO) + sizeof(ULONG) * (1 + nb_regions);
info->dwDLType = DMUS_DOWNLOADINFO_INSTRUMENT2;
info->dwDLId = 0;
info->dwNumOffsetTableEntries = 1 + instrument_object->header.cRegions;
info->cbSize = size;
offset_table->ulOffsetTable[0] = offset;
instrument_info = (DMUS_INSTRUMENT*)(data + offset);
offset += sizeof(DMUS_INSTRUMENT);
instrument_info->ulPatch = MIDILOCALE2Patch(&instrument_object->header.Locale);
instrument_info->ulFirstRegionIdx = 1;
instrument_info->ulGlobalArtIdx = 0; /* FIXME */
instrument_info->ulFirstExtCkIdx = 0; /* FIXME */
instrument_info->ulCopyrightIdx = 0; /* FIXME */
instrument_info->ulFlags = 0; /* FIXME */
for (i = 0; i < nb_regions; i++)
{
DMUS_REGION *region = (DMUS_REGION*)(data + offset);
offset_table->ulOffsetTable[1 + i] = offset;
offset += sizeof(DMUS_REGION);
region->RangeKey = instrument_object->regions[i].header.RangeKey;
region->RangeVelocity = instrument_object->regions[i].header.RangeVelocity;
region->fusOptions = instrument_object->regions[i].header.fusOptions;
region->usKeyGroup = instrument_object->regions[i].header.usKeyGroup;
region->ulRegionArtIdx = 0; /* FIXME */
region->ulNextRegionIdx = i != (nb_regions - 1) ? (i + 2) : 0;
region->ulFirstExtCkIdx = 0; /* FIXME */
region->WaveLink = instrument_object->regions[i].wave_link;
region->WSMP = instrument_object->regions[i].wave_sample;
region->WLOOP[0] = instrument_object->regions[i].wave_loop;
}
ret = IDirectMusicSynth8_Download(This->synth, &download, (VOID*)data, &free);
if (SUCCEEDED(ret))
ret = DMUSIC_CreateDirectMusicDownloadedInstrumentImpl(downloaded_instrument);
if (SUCCEEDED(ret))
{
IDirectMusicDownloadedInstrumentImpl *downloaded_object = impl_from_IDirectMusicDownloadedInstrument(*downloaded_instrument);
downloaded_object->data = data;
downloaded_object->downloaded = TRUE;
}
*downloaded_instrument = NULL;
HeapFree(GetProcessHeap(), 0, data);
return E_FAIL;
}
示例9: DMUSIC_CreateSynthPortImpl
HRESULT DMUSIC_CreateSynthPortImpl(LPCGUID guid, LPVOID *object, LPUNKNOWN unkouter, LPDMUS_PORTPARAMS port_params, LPDMUS_PORTCAPS port_caps, DWORD device)
{
SynthPortImpl *obj;
HRESULT hr = E_FAIL;
int i;
TRACE("(%s, %p, %p, %p, %p, %d)\n", debugstr_guid(guid), object, unkouter, port_params,
port_caps, device);
*object = NULL;
obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(SynthPortImpl));
if (!obj)
return E_OUTOFMEMORY;
obj->IDirectMusicPort_iface.lpVtbl = &SynthPortImpl_DirectMusicPort_Vtbl;
obj->IDirectMusicPortDownload_iface.lpVtbl = &SynthPortImpl_DirectMusicPortDownload_Vtbl;
obj->IDirectMusicThru_iface.lpVtbl = &SynthPortImpl_DirectMusicThru_Vtbl;
obj->IKsControl_iface.lpVtbl = &SynthPortImpl_IKsControl_Vtbl;
obj->ref = 0; /* Will be inited by QueryInterface */
obj->fActive = FALSE;
obj->params = *port_params;
obj->caps = *port_caps;
hr = DMUSIC_CreateReferenceClockImpl(&IID_IReferenceClock, (LPVOID*)&obj->pLatencyClock, NULL);
if (hr != S_OK)
{
HeapFree(GetProcessHeap(), 0, obj);
return hr;
}
if (SUCCEEDED(hr))
hr = CoCreateInstance(&CLSID_DirectMusicSynth, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectMusicSynth, (void**)&obj->synth);
if (SUCCEEDED(hr))
hr = CoCreateInstance(&CLSID_DirectMusicSynthSink, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectMusicSynthSink, (void**)&obj->synth_sink);
if (SUCCEEDED(hr))
hr = IDirectMusicSynth_SetMasterClock(obj->synth, obj->pLatencyClock);
if (SUCCEEDED(hr))
hr = IDirectMusicSynthSink_SetMasterClock(obj->synth_sink, obj->pLatencyClock);
if (SUCCEEDED(hr))
hr = IDirectMusicSynth_SetSynthSink(obj->synth, obj->synth_sink);
if (SUCCEEDED(hr))
hr = IDirectMusicSynth_Open(obj->synth, port_params);
if (0)
{
if (port_params->dwValidParams & DMUS_PORTPARAMS_CHANNELGROUPS) {
obj->nrofgroups = port_params->dwChannelGroups;
/* Setting default priorities */
for (i = 0; i < obj->nrofgroups; i++) {
TRACE ("Setting default channel priorities on channel group %i\n", i + 1);
obj->group[i].channel[0].priority = DAUD_CHAN1_DEF_VOICE_PRIORITY;
obj->group[i].channel[1].priority = DAUD_CHAN2_DEF_VOICE_PRIORITY;
obj->group[i].channel[2].priority = DAUD_CHAN3_DEF_VOICE_PRIORITY;
obj->group[i].channel[3].priority = DAUD_CHAN4_DEF_VOICE_PRIORITY;
obj->group[i].channel[4].priority = DAUD_CHAN5_DEF_VOICE_PRIORITY;
obj->group[i].channel[5].priority = DAUD_CHAN6_DEF_VOICE_PRIORITY;
obj->group[i].channel[6].priority = DAUD_CHAN7_DEF_VOICE_PRIORITY;
obj->group[i].channel[7].priority = DAUD_CHAN8_DEF_VOICE_PRIORITY;
obj->group[i].channel[8].priority = DAUD_CHAN9_DEF_VOICE_PRIORITY;
obj->group[i].channel[9].priority = DAUD_CHAN10_DEF_VOICE_PRIORITY;
obj->group[i].channel[10].priority = DAUD_CHAN11_DEF_VOICE_PRIORITY;
obj->group[i].channel[11].priority = DAUD_CHAN12_DEF_VOICE_PRIORITY;
obj->group[i].channel[12].priority = DAUD_CHAN13_DEF_VOICE_PRIORITY;
obj->group[i].channel[13].priority = DAUD_CHAN14_DEF_VOICE_PRIORITY;
obj->group[i].channel[14].priority = DAUD_CHAN15_DEF_VOICE_PRIORITY;
obj->group[i].channel[15].priority = DAUD_CHAN16_DEF_VOICE_PRIORITY;
}
}
}
if (SUCCEEDED(hr))
return IDirectMusicPort_QueryInterface((LPDIRECTMUSICPORT)obj, guid, object);
if (obj->synth)
IDirectMusicSynth_Release(obj->synth);
if (obj->synth_sink)
IDirectMusicSynthSink_Release(obj->synth_sink);
if (obj->pLatencyClock)
IReferenceClock_Release(obj->pLatencyClock);
HeapFree(GetProcessHeap(), 0, obj);
return hr;
}
示例10: HRESULT
IXMLDOMDocument* SettingsXML::CreateDomDocument(wchar_t* pszErr /*= NULL*/, size_t cchErrMax /*= 0*/)
{
HRESULT hr;
IXMLDOMDocument* pFile = NULL;
static HMODULE hMsXml3 = NULL;
typedef HRESULT (__stdcall* DllGetClassObject_t)(REFCLSID rclsid, REFIID riid, LPVOID *ppv);
static DllGetClassObject_t lpfnGetClassObject = NULL;
wchar_t szDllErr[128] = {};
hr = CoInitialize(NULL);
// Если в прошлый раз обломались, и загрузили "msxml3.dll" - то и не дергаться
if (hMsXml3 && (hMsXml3 != (HMODULE)INVALID_HANDLE_VALUE))
hr = REGDB_E_CLASSNOTREG;
else
hr = CoCreateInstance(CLSID_DOMDocument30, NULL, CLSCTX_INPROC_SERVER, //-V519
IID_IXMLDOMDocument, (void**)&pFile);
// Если msxml3.dll (Msxml2.DOMDocument.3.0) не зарегистрирована - будет такая ошибка
if (FAILED(hr)) // (hr == REGDB_E_CLASSNOTREG)
{
HRESULT hFact;
// Попробовать грузануть ее ручками
if (!hMsXml3)
{
wchar_t szDll[MAX_PATH+16];
struct FindPlaces { LPCWSTR sDir, sSlash; } findPlaces[] = {
{gpConEmu->ms_ConEmuExeDir, L"\\"},
{gpConEmu->ms_ConEmuBaseDir, L"\\"},
{L"", L""}, {NULL}};
for (FindPlaces* fp = findPlaces; fp->sDir; fp++)
{
_wsprintf(szDll, SKIPLEN(countof(szDll)) L"%s%smsxml3.dll", fp->sDir, fp->sSlash);
hMsXml3 = LoadLibrary(szDll);
hFact = hMsXml3 ? 0 : (HRESULT)GetLastError();
if (hMsXml3)
break;
//if (!hMsXml3
// && (((DWORD)hFact) == ERROR_MOD_NOT_FOUND
// || ((DWORD)hFact) == ERROR_BAD_EXE_FORMAT
// || ((DWORD)hFact) == ERROR_FILE_NOT_FOUND))
}
//_wsprintf(szDll, SKIPLEN(countof(szDll)) L"%s\\msxml3.dll", gpConEmu->ms_ConEmuExeDir);
//hMsXml3 = LoadLibrary(szDll);
//hFact = hMsXml3 ? 0 : (HRESULT)GetLastError();
//if (!hMsXml3
// && (((DWORD)hFact) == ERROR_MOD_NOT_FOUND
// || ((DWORD)hFact) == ERROR_BAD_EXE_FORMAT
// || ((DWORD)hFact) == ERROR_FILE_NOT_FOUND))
//{
// _wsprintf(szDll, SKIPLEN(countof(szDll)) L"%s\\msxml3.dll", gpConEmu->ms_ConEmuBaseDir);
// hMsXml3 = LoadLibrary(szDll);
// hFact = hMsXml3 ? 0 : (HRESULT)GetLastError();
//}
if (!hMsXml3)
{
hMsXml3 = (HMODULE)INVALID_HANDLE_VALUE;
_wsprintf(szDllErr, SKIPLEN(countof(szDllErr)) L"\nLoadLibrary(\"msxml3.dll\") failed\nErrCode=0x%08X", (DWORD)hFact);
}
}
if (hMsXml3 && (hMsXml3 != (HMODULE)INVALID_HANDLE_VALUE))
{
if (!lpfnGetClassObject)
lpfnGetClassObject = (DllGetClassObject_t)GetProcAddress(hMsXml3, "DllGetClassObject");
if (!lpfnGetClassObject)
{
hFact = (HRESULT)GetLastError();
_wsprintf(szDllErr, SKIPLEN(countof(szDllErr)) L"\nGetProcAddress(\"DllGetClassObject\") failed\nErrCode=0x%08X", (DWORD)hFact);
}
else
{
IClassFactory* pFact = NULL;
hFact = lpfnGetClassObject(CLSID_DOMDocument30, IID_IClassFactory, (void**)&pFact);
if (SUCCEEDED(hFact) && pFact)
{
hFact = pFact->CreateInstance(NULL, IID_IXMLDOMDocument, (void**)&pFile);
if (SUCCEEDED(hFact))
hr = hFact;
else
_wsprintf(szDllErr, SKIPLEN(countof(szDllErr)) L"\nCreateInstance(IID_IXMLDOMDocument) failed\nErrCode=0x%08X", (DWORD)hFact);
pFact->Release();
}
else
{
_wsprintf(szDllErr, SKIPLEN(countof(szDllErr)) L"\nGetClassObject(CLSID_DOMDocument30) failed\nErrCode=0x%08X", (DWORD)hFact);
}
}
}
}
if (FAILED(hr) || !pFile)
{
wchar_t szErr[512];
bool bShowError = (pszErr == NULL);
if (pszErr == NULL)
//.........这里部分代码省略.........
示例11: while
IXMLDOMNode* SettingsXML::FindItem(IXMLDOMNode* apFrom, const wchar_t* asType, const wchar_t* asName, bool abAllowCreate)
{
HRESULT hr = S_OK;
IXMLDOMNodeList* pList = NULL;
IXMLDOMNode* pChild = NULL;
IXMLDOMNamedNodeMap* pAttrs = NULL;
IXMLDOMAttribute *pIXMLDOMAttribute = NULL;
IXMLDOMNode *pIXMLDOMNode = NULL;
IXMLDOMNode *pName = NULL;
BSTR bsText = NULL;
BOOL lbEmpty = TRUE;
// Получить все дочерние элементы нужного типа
if (apFrom == NULL)
{
hr = S_FALSE;
}
else
{
bsText = ::SysAllocString(asType);
hr = apFrom->selectNodes(bsText, &pList);
::SysFreeString(bsText); bsText = NULL;
}
if (SUCCEEDED(hr) && pList)
{
hr = pList->reset();
while((hr = pList->nextNode(&pIXMLDOMNode)) == S_OK && pIXMLDOMNode)
{
lbEmpty = FALSE;
hr = pIXMLDOMNode->get_attributes(&pAttrs);
if (SUCCEEDED(hr) && pAttrs)
{
bsText = GetAttr(pIXMLDOMNode, pAttrs, L"name");
if (bsText)
{
if (lstrcmpi(bsText, asName) == 0)
{
::SysFreeString(bsText); bsText = NULL;
pChild = pIXMLDOMNode; pIXMLDOMNode = NULL;
break;
}
::SysFreeString(bsText); bsText = NULL;
}
}
pIXMLDOMNode->Release(); pIXMLDOMNode = NULL;
}
pList->Release();
//pList = NULL; -- для отладки
}
if (lbEmpty && abAllowCreate && (asType[0] == L'k'))
{
bsText = ::SysAllocString(L"value");
hr = apFrom->selectNodes(bsText, &pList);
::SysFreeString(bsText); bsText = NULL;
if (SUCCEEDED(hr) && pList)
{
hr = pList->reset();
if ((hr = pList->nextNode(&pIXMLDOMNode)) == S_OK && pIXMLDOMNode)
{
lbEmpty = FALSE;
pIXMLDOMNode->Release(); pIXMLDOMNode = NULL;
}
pList->Release();
//pList = NULL; -- для отладки
}
}
if (!pChild && abAllowCreate)
{
VARIANT vtType; vtType.vt = VT_I4;
vtType.lVal = NODE_ELEMENT;
bsText = ::SysAllocString(asType);
hr = mp_File->createNode(vtType, bsText, L"", &pChild);
::SysFreeString(bsText); bsText = NULL;
if (SUCCEEDED(hr) && pChild)
{
if (SetAttr(pChild, L"name", asName))
{
if (asType[0] == L'k')
{
AppendNewLine(pChild);
mb_KeyEmpty = true;
}
if (asType[0] == L'k')
{
//if (mb_KeyEmpty)
//AppendIndent(apFrom, lbEmpty ? (mi_Level-1) : mi_Level);
AppendIndent(apFrom, (mi_Level-1));
}
else if (mb_KeyEmpty)
//.........这里部分代码省略.........
示例12: FindItem
//.........这里部分代码省略.........
}
if (!bsType)
{
// нужно добавить/установить тип
bsType = ::SysAllocString(L"multi"); bNeedSetType = true;
}
} break;
default:
goto wrap; // не поддерживается
}
if (bNeedSetType)
{
_ASSERTE(bsType!=NULL);
SetAttr(pChild, pAttrs, L"type", bsType);
::SysFreeString(bsType); bsType = NULL;
}
// Теперь собственно значение
if (nType != REG_MULTI_SZ)
{
_ASSERTE(bsValue != NULL);
SetAttr(pChild, pAttrs, L"data", bsValue);
::SysFreeString(bsValue); bsValue = NULL;
}
else // Тут нужно формировать список элементов <list>
{
VARIANT_BOOL bHasChild = VARIANT_FALSE;
DOMNodeType nodeType = NODE_INVALID;
// Если ранее был параметр "data" - удалить его из списка атрибутов
hr = pAttrs->getNamedItem(L"data", &pNode);
if (SUCCEEDED(hr) && pNode)
{
hr = pChild->removeChild(pNode, &pNodeRmv);
pNode->Release(); pNode = NULL;
if (pNodeRmv) { pNodeRmv->Release(); pNodeRmv = NULL; }
}
//TODO: может оставить перевод строки?
// Сначала почистим
#ifdef _DEBUG
hr = pChild->get_nodeType(&nodeType);
#endif
hr = pChild->hasChildNodes(&bHasChild);
if (bHasChild)
{
while((hr = pChild->get_firstChild(&pNode)) == S_OK && pNode)
{
hr = pNode->get_nodeType(&nodeType);
#ifdef _DEBUG
BSTR bsDebug = NULL;
pNode->get_text(&bsDebug);
if (bsDebug) ::SysFreeString(bsDebug); bsDebug = NULL;
#endif
hr = pChild->removeChild(pNode, &pNodeRmv);
if (pNodeRmv) { pNodeRmv->Release(); pNodeRmv = NULL; }
pNode->Release(); pNode = NULL;
}
示例13: LoopbackCapture
//.........这里部分代码省略.........
);
if (!bOK) {
DWORD dwErr = GetLastError();
printf("SetWaitableTimer failed: last error = %u\n", dwErr);
AvRevertMmThreadCharacteristics(hTask);
pAudioCaptureClient->Release();
CloseHandle(hWakeUp);
pAudioClient->Release();
return HRESULT_FROM_WIN32(dwErr);
}
// call IAudioClient::Start
hr = pAudioClient->Start();
if (FAILED(hr)) {
printf("IAudioClient::Start failed: hr = 0x%08x\n", hr);
AvRevertMmThreadCharacteristics(hTask);
pAudioCaptureClient->Release();
CloseHandle(hWakeUp);
pAudioClient->Release();
return hr;
}
SetEvent(hStartedEvent);
// loopback capture loop
HANDLE waitArray[2] = { hStopEvent, hWakeUp };
DWORD dwWaitResult;
bool bDone = false;
for (UINT32 nPasses = 0; !bDone; nPasses++) {
// drain data while it is available
UINT32 nNextPacketSize;
for (
hr = pAudioCaptureClient->GetNextPacketSize(&nNextPacketSize);
SUCCEEDED(hr) && nNextPacketSize > 0;
hr = pAudioCaptureClient->GetNextPacketSize(&nNextPacketSize)
) {
// get the captured data
BYTE *pData;
UINT32 nNumFramesToRead;
DWORD dwFlags;
hr = pAudioCaptureClient->GetBuffer(
&pData,
&nNumFramesToRead,
&dwFlags,
NULL,
NULL
);
if (FAILED(hr)) {
printf("IAudioCaptureClient::GetBuffer failed on pass %u after %u frames: hr = 0x%08x\n", nPasses, *pnFrames, hr);
pAudioClient->Stop();
CancelWaitableTimer(hWakeUp);
AvRevertMmThreadCharacteristics(hTask);
pAudioCaptureClient->Release();
CloseHandle(hWakeUp);
pAudioClient->Release();
return hr;
}
#ifdef _DEBUG
if (0 != dwFlags) {
printf("[ignoring] IAudioCaptureClient::GetBuffer set flags to 0x%08x on pass %u after %u frames\n", dwFlags, nPasses, *pnFrames);
}
#endif
if (0 == nNumFramesToRead) {
示例14: PDxtexApp
BOOL CDxtexDoc::OnNewDocument()
{
HRESULT hr;
LPDIRECT3DDEVICE9 pd3ddev = PDxtexApp()->Pd3ddev();
if (!CDocument::OnNewDocument())
return FALSE;
CNewTextureDlg dlg;
// Obtain maximum texture dimension
D3DCAPS9 d3dcaps;
if ( SUCCEEDED( pd3ddev->GetDeviceCaps( &d3dcaps ) ) )
{
dlg.SetMaxTextureSize( d3dcaps.MaxTextureWidth, d3dcaps.MaxTextureHeight );
}
if (IDCANCEL == dlg.DoModal())
return FALSE;
m_dwWidth = dlg.m_dwWidth;
m_dwHeight = dlg.m_dwHeight;
m_numMips = dlg.m_numMips;
if (dlg.m_iTexType == 0)
{
LPDIRECT3DTEXTURE9 pmiptex;
hr = pd3ddev->CreateTexture(m_dwWidth, m_dwHeight, m_numMips,
0, dlg.m_fmt, D3DPOOL_MANAGED, &pmiptex, NULL);
if (FAILED(hr))
{
AfxMessageBox(ID_ERROR_CANTCREATETEXTURE);
return FALSE;
}
m_ptexOrig = pmiptex;
}
else if (dlg.m_iTexType == 1)
{
// Cube Map
LPDIRECT3DCUBETEXTURE9 pcubetex;
m_dwCubeMapFlags = DDS_CUBEMAP_ALLFACES;
hr = pd3ddev->CreateCubeTexture(m_dwWidth, m_numMips,
0, dlg.m_fmt, D3DPOOL_MANAGED, &pcubetex, NULL);
if (FAILED(hr))
{
AfxMessageBox(ID_ERROR_CANTCREATETEXTURE);
return FALSE;
}
m_ptexOrig = pcubetex;
}
else
{
LPDIRECT3DVOLUMETEXTURE9 pvoltex;
m_dwDepth = dlg.m_dwDepth;
hr = pd3ddev->CreateVolumeTexture(m_dwWidth, m_dwHeight, m_dwDepth, m_numMips,
0, dlg.m_fmt, D3DPOOL_SYSTEMMEM, &pvoltex, NULL);
if (FAILED(hr))
{
AfxMessageBox(ID_ERROR_CANTCREATETEXTURE);
return FALSE;
}
m_ptexOrig = pvoltex;
}
return TRUE;
}
示例15: CHECK_HR
//
// Name:
// CTestSuiteItemCollection::LoadFromRegistry
//
// Description:
// Loads the category information from the registry. Used to initialize
// the list of categories.
//
// Results:
//
// S_OK - All is well
// REGDB_E_KEYMISSING - Could not open the registry key.
// E_UNEXPECTED - An unknown exception has been caught.
//
STDMETHODIMP CTestSuiteItemCollection::LoadFromRegistry()
{
HRESULT hr = S_OK;
try
{
CComPtr<ICatInformation> pCatInfo;
hr = pCatInfo.CoCreateInstance(CLSID_StdComponentCategoriesMgr);
CHECK_HR(hr);
CComPtr<IEnumCLSID> pEnumClsId;
CATID rgcid[1];
rgcid[0] = CATID_Test;
// Find all the clsids for the CATID_Test category
hr = pCatInfo->EnumClassesOfCategories(1, rgcid, -1, 0, &pEnumClsId);
CHECK_HR(hr);
enum{MAX_CNT = 64};
CLSID rgClsId[MAX_CNT];
do
{
// For each item in the collection create a ITestSuiteItem and place it into
// the collection
ULONG cActual = 0L;
hr = pEnumClsId->Next(MAX_CNT, rgClsId, &cActual);
if(SUCCEEDED(hr))
{
for(ULONG l = 0; l < cActual; l++)
{
CComPtr<ICustomTestSuiteItem> pCustomItem;
hr = pCustomItem.CoCreateInstance(__uuidof(CTestSuiteItem));
CHECK_HR(hr);
// Get the clsid
pCustomItem->put_Clsid(rgClsId[l]);
CComPtr<ITestSuiteItem> pItem;
pCustomItem.QueryInterface(&pItem);
// Get the description
CComBSTR bstrName;
CComBSTR bstrDescription;
getTestInformation(rgClsId[l], bstrName, bstrDescription);
LPOLESTR szProgId;
::ProgIDFromCLSID(rgClsId[l], &szProgId);
pItem->put_ProgId(szProgId);
::CoTaskMemFree(szProgId);
pItem->put_TestName(bstrName);
pItem->put_Description(bstrDescription);
// add it to the collection
Add(pItem);
}
}
}while(hr == S_OK);
}
catch(HRESULT hr)
{
//
// Fix Me!
// Make this a more meningful message
//
// Jerry Edens, 10/22/99 1:52:59 PM
//
ATLTRACE("Error 0x%8x\n", hr);
}
catch(_com_error& rerr)
{
ATLTRACE("Error 0x%8x\n", rerr.Error());
}
catch(...)
{
hr = E_UNEXPECTED;
}
return hr;
}