Re[4]: Размер ActiveX в Design time
От: Vasily  
Дата: 17.04.01 07:29
Оценка:
Здравствуйте Myth, 17.04.2001 00:41:26 вы писали:

Myth, если использовать Ваш алгоритм, то контрол ведет себя также, как и в случае, который
был описан Вами до этого. Ведь сторока
return COleControl::OnSetExtent(lpSizeL) вообще никогда не выполнится.

На сколько я понял, то COleControl::OnCreate класса предка должен вызваться только один раз
при создании компонента.
тогда чтобы это работало надо написать так:

int CErrorDlgCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;
SetControlSize(40, 40);
m_bInited = TRUE;
return 0;
}

BOOL CErrorDlgCtrl::OnSetExtent(LPSIZEL lpSizeL)
{
if (m_bInited)
{
m_bInited = FALSE;
return COleControl::OnSetExtent(lpSizeL);
}
else
return FALSE;
}

Но например, если в VB я кладу его наформу, выбрав в меню компонентов и затем растянув
на ворме, то первоначально он принимает размер, на который я его растянул, а не тот, который
указан в SetControlSize. А вот потом уже ведет себя так, как мне надо (не позволяет изменение расмера).
А если его тыстировать в ActiveX Control Test Container, то вообще себя странно ведет.

Или я что-то не понял?


>Здравствуйте vasily, 16.04.2001 08:16:55

>
>Действительно ошибачка вышла, правильто так будет:
>
>int CErrorDlgCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
>{
> if (COleControl::OnCreate(lpCreateStruct) == -1)
> return -1;
>
> SetControlSize(40, 40);
>
> m_bInited = true;
>
> return 0;
>}
>
>BOOL CErrorDlgCtrl::OnSetExtent(LPSIZEL lpSizeL)
>{
> if (m_bInited)
> return FALSE;
> else
> return COleControl::OnSetExtent(lpSizeL);
>
>}
>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.