ActiveX на StatusBar
От: A4MV Россия  
Дата: 01.06.05 09:58
Оценка:
Нужно создать на статус-баре ActiveX-прогресс-бар. Статус-бар представляет собой COM-объект, имеющий метод:

STDMETHODIMP CVSStatusBar::CreateControl(/*BSTR ClassId,*/ LONG Id)
{
HRESULT hr;
CLSID ClsId;

try
{
BSTR bs;
bs = SysAllocString(L"{35053A22-8589-11D1-B16A-00C0F0283628}");//progressbar
hr = CLSIDFromString(bs, &ClsId);
if (FAILED(hr))
{
AtlThrow(hr);
}
RECT r;
m_UiStatusBar.GetItemRect(1, &r);
// m_UiStatusBar – это атрибут CVSStatusBar: CUIStatusBar m_UiStatusBar,
// где CUIStatusBar наследник CBCGPStatusBar

if (!m_UiStatusBar.m_AxControl.CreateControl(
ClsId,
NULL,
WS_CHILD|WS_VISIBLE,
r,
&m_UiStatusBar,
Id))
{
AtlThrow(E_INVALIDARG);
}
hr = S_OK;
}
catch(CException* pExc)
{
hr = ResultFromScode(COleException::Process(pExc));
pExc->Delete();
}
catch(...)
{
hr = E_FAIL;
}
return hr;
}

Проблема: прогресс-бар располагается по всему статус-бару, а не на второй панели (несмотря на то, что задаю координаты прямоугольника второй панели)
Что не так делаю?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.