Статья: Создание собственных ActiveX элементов
// Создать кисть на основе значения BackColor CBrush bkBrush( TranslateColor(GetBackColor()));
// Закрасить фон pdc->FillRect(rcBounds,
&bkBrush); char CurrentTime[30] ; struct tm *newtime; long lTime;
// Получитьтекущеевремя time(&lTime) ; newtime=localtime(&lTime);
// Преобразоватьвремявстроку. strcpy(CurrentTime, asctime(newtime));
// Дополнить строку одним символом пробела. CurrentTime[24]=' ';
// Дополнить строку ограничивающи символом. CurrentTime[25] = 0;
// Вывести текущее время pdc->ExtTextOut(rcBounds.left,rcBounds.top, ETO_CLIPPED, rcBounds, CurrentTime, strlen(CurrentTime), NULL) ; }
Ну вот и всё, теперь элемент управления MyClock имеет свойства BackColor и ForeColor.
7. Включение специального свойства в ActiveX MyClock
Во многих случаях вам понадобится включить в свой элемент управления такие свойства, которые не входят в список стандартных. Эти свойства называются специальными.
Для примера включем в MyClock специальное свойство UpdateInterval - период обновления:
View -> ClassWizard -> Automation( проверте, чтобы в окне Class name установлен класс CMyClockCtrl )
Нажмите на кнопку Add Property
В окне External name наберите UpdateInterval
В окне Type выберите Long
В окне Variable name должно быть m_updateinterval
Вокне Notification function поставьте OnUpdateIntervalChanged
Проверте, чтовкамке Implementation выбранакнопка Member variable инажмите OK
Тем самым мы определили, что со свойством UpdateInterval будет связана переменная m_updateinterval и всякий раз, когда значение свойства UpdateInterval будет именяться, автоматически выполнится функция OnUpdateIntervalChanged.
Теперь надо проинициализировать свойство UpdateInterval:
Откройте файл MyClockCtl.cpp
Найдите функцию DoPropExchange() и напишиет в ней следующее:
// Инициализация свойства UpdateInterval значением 1000
PX_Long( pPX, _T("UpdateInterval"), m_updateinterval, 1000 );
Теперь надо модернизировать функции OnUpdateIntervalChanged:
// проверка на отризательность
if( m_updateinterval < 0 )
{
MessageBox( "This property cannot be negative !!!" );