Статья: Создание собственных 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 !!!" );

К-во Просмотров: 196
Бесплатно скачать Статья: Создание собственных ActiveX элементов