Re: Свойство AutoSize и все вытекающее из него
От: migel  
Дата: 01.11.04 15:12
Оценка: 5 (2)
Здравствуйте, Alex_ros, Вы писали:

A_>Доброе время суток!


A_>Вводная:


A_>Имеется ALT-проект реализующий Full Control. В фунции OnDraw происходит отрисовка текстовой строки. При установке свойства AutoSize необходимо чтобы ActiveX элемент занимал на форме столько места, сколько необходимо для отображения всей строки (принцип работы аналогичного свойтсва в компоненте Label в VB). Так вот, я вычисляю габаритные размеры строки, записываю их в m_sizeExtent. Но тестируя разрабатываемый компонент в VB получат такой эффект... При установке AutoSize в True, габаритные маркеры моего компонента не изменяют своего положения (ожидалось что они будут охватывать набранную строку, по ее реальным размерам), а ожидаемый эффект получаеться если потянуть за один из габаритных маркеров.


A_>Кто-нибудь знает в чем причина такого поведения?

Нужно сказать ClientSite что у тебя поменялись твои размеры
    CComPtr<IOleInPlaceSite> spCtlSite;
    HRESULT hr = InternalGetSite(IID_IOleInPlaceSite, (void**)&spCtlSite);

    if (SUCCEEDED(hr))
    {
        if (spCtlSite != NULL)
        {
            long cy = CalcHeight();
            RECT rcPos;
            ::CopyRect(&rcPos, &m_rcPos);
            // считаем размер
            rcPos.bottom = rcPos.top + cy;
            // извещаем хост о изменении
            hr = spCtlSite->OnPosRectChange (&rcPos);
        }
    }
... << RSDN@Home 1.1.4 beta 3 rev. 214>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.