TInitOleクラスでCOMの初期化を簡単に行うことができるTInitOleクラスを紹介します。
COMを使用する場合、最初にCoInitializeEx()やCoInitialize()で初期化し、最後にCoUninitialize()で終了します。
//COMを使う前の準備
HRESULT hr_Initializing_OLE = ::CoInitialize(0);
bool init = SUCCEEDED(hr_Initializing_OLE);
try
{
//COMを使った処理
DoSomething();
}
__finally
{
//COMを使った後の終了処理
if (init)
::CoUninitialize();
}
C++BuilderにはTInitOleというクラスが用意されています。
COMの初期化と終了処理を行うRAIIクラスです。
TInitOleクラスを使うとCOMの初期化と終了処理をすっきりと書くことができます。
#include <utilcls.h>
{
TInitOle initOle; //TInitOleのコンストラクタでCOMの初期化を行う
//COMを使った処理
DoSomething();
} //TInitOleのデストラクタでCOMの終了処理を行う
シンプルですが便利なクラスだと思います。