//#import "c:\windows\SysWow64\mscomctl.ocx" raw_interfaces_only //in window7

using namespace MSComctlLib;
CComPtr<IButtons> pButtons;
CComPtr<IButton> pButton;
CComPtr<IImages> pImages;
CComPtr<IImage> pImage;
CComPtr<IDispatch> pDisp;

HRESULT hr = m_pToolbar->get_Buttons(&pButtons);
hr = pButtons->Add(NULL,NULL,NULL,NULL,NULL,&pButton);

hr = m_pImageList->get_ListImages(&pImages);
CComVariant vrIndex(1),vrImage;
hr = pImages->get_Item(&vrIndex,&pImage);//I added 3 images to imagelist

hr = pImage->QueryInterface(&pDisp);
vrImage = pDisp;

hr = pButton->put_Image(vrImage);//hr = 0x800a8b1d, why?!