Почему не будет выполнятся?
В конструкторе нужно проинициализировать m_bInited = FALSE.
OnCreate вызывается всегда один раз! После того как отработает функция SetControlSize,
устанавливаем m_bInited = TRUE. И тогда OnSetExtent всегда будет возвращать FALSE.
Я проверил у меня все работает.
int CErrorDlgCtrl::CErrorDlgCtrl()
{
.....
m_bInited = false;
}
int CErrorDlgCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;
>Здравствуйте 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); >> >>} >> >