Итак, запускайте VC и создавайте новый проект. Тип проекта MFC ActiveX ControlWizard. Дайте имя проекта DMyActive1 и жмите OK. В Step1 ничего не меняйте. А в шаге 2 установите галочку напротив Available in "Insert Object" dialog. И жмите Finish. Вам покажут окно с информацией, на что Вы должны ответить OK.
У Вас сформировалось несколько классов.
CDMyActive1App CDMyActive1Ctrl CDMyActive1PropPage
Мудрить мы сейчас особо не будем. Нас интересует класс CDMyActive1Ctrl. Выведите список методов в окне ClassView. Там Вы увидите метод OnDraw(). Именно он и отвечает за прорисовку элемента. Двойным щелчком перейдите на его реализацию. Код должен быть таким:
/////////////////////////////////////////////////// // CDMyActive1Ctrl::OnDraw - Drawing function void CDMyActive1Ctrl::OnDraw( CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) { // TODO: Replace the following code with your own drawing code. pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH))); pdc->Ellipse(rcBounds); }
Сначала закрашивается белый прямоугольник, а потом выводится эллипс. Давайте будем выводить не эллипс, а текст. Поменяте код на этот:
void CDMyActive1Ctrl::OnDraw( CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) { // TODO: Replace the following code with your own drawing code. pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH))); pdc->TextOut(1,1,"My ActiveX"); }
И всё. Идите в меню Build и выбирайте пункт меню Build CDMyActive1.ocx. Будет проведено много действий, в том числе и регистрация элемента. Оставим пока все эти сложности. Главное элемент готов.
Запускайте Word или Excel. Выбирайте "вставка -> объект". В списке объектов должен появиться Ваш элемент.
Выберите его и нажмите OK, он появится. И как раз с надписью My ActiveX. Правда с ним практически ничего нельзя делать. Но это пока нельзя. Вот как он выглядит в Word: