- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
template<typename T>
class com_ptr {
// ...
// HRESULT ID2D1RenderTarget::CreateSolidColorBrush(
// const D2D1_COLOR_F &color,
// [out] ID2D1SolidColorBrush **solidColorBrush // нормальный, типизированный петух
// );
T ** get_init_ptr() {
if(ptr) {
ptr->Release();
ptr = 0;
}
return &ptr;
}
// HRESULT DWriteCreateFactory(
// _In_ DWRITE_FACTORY_TYPE factoryType,
// _In_ REFIID iid,
// _Out_ IUnknown **factory // петух неизвестен!
// );
IUnknown ** get_unknown_init_ptr() {
return reinterpret_cast<IUnknown**>(get_init_ptr());
}
// HRESULT CoCreateInstance(
// _In_ REFCLSID rclsid,
// _In_ LPUNKNOWN pUnkOuter,
// _In_ DWORD dwClsContext,
// _In_ REFIID riid,
// _Out_ LPVOID *ppv // соломка, где петух будет лежать
// );
void ** get_void_init_ptr() {
return reinterpret_cast<void**>(get_init_ptr());
}
//...
};
Ко-ко-ком. Чтоб его за ногу.