Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=4033494&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Tue Apr 12 14:00:23 2016
Кодировка: Windows-1251
MFC ActiveX Control - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 1
noya
stranger

Рег.: 20.09.2005
Сообщений: 3
Рейтинг: 0
  MFC ActiveX Control
      25.01.2006 15:40
 

Как сделать control, представляющий собой комбинацию из трех элементов управления edit, spin, push button?
Помогите плз!


_leha_
путник

Рег.: 05.02.2004
Сообщений: 315
Рейтинг: -14
  Re: MFC ActiveX Control [re: noya]
      31.01.2006 02:11
 

а в чем проблема?
создаешь проект MFC ActiveXControl, топаешь в свой класс добавляешь обработчик WM_Create + я еще определил обработчик для WM_SIZE ( что в принципе не особо требуется )
в ашник добавить:

CButton m_Button;
CSpinButtonCtrl m_Spin;
CEdit m_Edit;

CRect getRectForChild( CWnd* child );

в срр будет так:
int CcheckCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;

m_Button.Create( _T( "Button" ), WS_VISIBLE | WS_CHILD | BS_FLAT,
CRect(), this, IDC_STATIC );
m_Spin.Create( WS_VISIBLE | WS_CHILD, CRect(), this, IDC_STATIC );
m_Edit.Create( WS_VISIBLE | WS_CHILD | WS_BORDER | ES_AUTOHSCROLL,
CRect(), this, IDC_STATIC );

return 0;
}

void CcheckCtrl::OnSize(UINT nType, int cx, int cy)
{
COleControl::OnSize(nType, cx, cy);

m_Button.MoveWindow( getRectForChild( &m_Button ) );
m_Spin.MoveWindow( getRectForChild( &m_Spin ) );
m_Edit.MoveWindow( getRectForChild( &m_Edit ) );
}

CRect CcheckCtrl::getRectForChild( CWnd* child )
{
CRect tmp = CRect( 10, 10, 50, 40 );
if( m_Button.GetSafeHwnd() == child->GetSafeHwnd() ) {
} else if( m_Spin.GetSafeHwnd() == child->GetSafeHwnd() ) {
tmp = getRectForChild( &m_Button );
tmp.OffsetRect( tmp.Width() + 10, 0 );
} else if( m_Edit.GetSafeHwnd() == child->GetSafeHwnd() ) {
tmp = getRectForChild( &m_Spin );
tmp.OffsetRect( tmp.Width() + 10, 0 );
}
return tmp;
}

результат ( в ляпнул на диалог и перешел в дизайн мод ):

элипс это следствие непереопределнного OnDraw..
дальше все от целей зависит, что нужно и пр. возможно удобно будет айдишники для кнопок задавать через редактируемые свойства контрола ( и таким образом избегать дублирования айдишников на диалоге ) вообщем конкретика, единственное, что не указал я там пару флагов расставил при создании зачем-то, но вроде и дефолтная расстановка флагов самодостаточна



Боящийся поражения живет не ожиданием победы, а ожиданием поражения..
Страницы: 1

Technical >> Development (Archive)

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в