求问windows进度条编程

c++写了个windows进度条的程序,使用的是ITaskbarList3接口,初始化部分如下,问题: CoInitialize(NULL);这句话什么意思,如果去掉的话程序不报错,运行起来进度条没颜色,加上这句话就正常显示了,求问为什么
BOOL CProgressTaskBar::Init()
{

BOOL bRet=1;

BOOL bWin7 = IsWin7();

CoInitialize(NULL);

HRESULT hr =  CoCreateInstance(CLSID_TaskbarList,0,CLSCTX_ALL, 
                                __uuidof(ITaskbarList3),(void**)&m_pTaskBarList);

m_bInit = bRet && bWin7 && SUCCEEDED(hr);
if (m_bInit)
{
    Reset();
}
return m_bInit;

}

CoInitialize,初始化com组件。相当于C++语言里调用构造函数创建对象。