http://tikitak.narod.ru ---- Главная страница сайта
Шаг 78 - Управление приложениями из VC ++
Это немного неплановый шаг. Но я на мог его не написать.
Данная возможность меня честно говоря потрясает. Особенно простота
её реализации. Для лучшего понимания этого шага я бы рекомендовал
Вам прочитать все про ActiveX что есть на сайте. Думаю Вы
разделите мои эмоции. Наверно этой теме надо посветить
отдельные шаги !!!!!
Создаем проект
Итак запускайте MFC AppWizard. Дайте имя проекту TestExcel. В шаге 1 - Single Document. Шаг 2 без изменений. Шаг 3 установите Container и смело жмите Finish.
Создаем код
Итак немного теории. Практически все современные приложения являются серверами OLE. То есть они написаны так, что ими может управлять любая программа, которая является контейнером. Вобщем-то за нас это сделал AppWizard. Мы только ему пояснили что и где. Информация о функциях данного элемента хранится в специальных файлах TLB,OLB. Например, информация о функциях и классах Excel находится здесь.
..\Programm Files\Microsoft Office\Office\Excel8.olb
Дайте поиск по дискам расширений OLB и Вы найдете много интересного.
Итак давайте добавим классы Excel к нашему приложению. Запускайте ClassWizard. Выбирайте вкладку Automation. Дальше Add class и из выпадающих вариантов From type library. Найдите Excel8.olb и нажмите OK. У Вас появится диалоговое окно со списком классов, которые Вы можете сформировать. Нас пока интересует _Application найдите его и выделите.
После этого жмите OK и закрываете окно ClassWizard. Смотрите окно ClassView появился класс _Application в двух файлах excel8.h и excel8.cpp. Ну все пора пробовать. Мы по щелчку мышки будем активизировать Excel получать имя текущего принтера, показывать его на несколько секунд на экране и закрывать. :-)
Создаем событие нажатия левой кнопкой мыши для класса CTestExcelView. Вы должны уметь это делать в результате появится функция.
void CTestExcelView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CView::OnLButtonDown(nFlags, point);
}
В этот файл (TestExcelView) необходимо поместить ссылку на класс _Application вот так.
.......
static char THIS_FILE[] = __FILE__;
#endif
#include "excel8.h"
/////////////////////////////////////////////////////////////////////////////
// CTestExcelView
.........
Ну что давайте мучать события нажатия.
void CTestExcelView::OnLButtonDown(UINT nFlags, CPoint point)
{
_Application ap;
ap.CreateDispatch("Excel.Application");
CString thePrinter = ap.GetActivePrinter();
AfxMessageBox(thePrinter);
ap.SetVisible(TRUE);
Sleep(1000);
CView::OnLButtonDown(nFlags, point);
}
Смотрите сами. Создаем экземпляр класса. Связываем класс с реальным объектом. А теперь обращаемся к функции Excel взять текущий принтер. Выводим полученную строку на экран. Выводит сам Excel на экран. Задержка для того, чтобы увидеть чего-нибудь.
Компилируйте, запускайте и наслаждайтесь. Это очень приятно, ненужен никакой VBA!!!. Реальная работа сложнее и требует других классов, но начало положено !!!!
Если Вы с этим будете работать для любой программы присылайте на сайт пожалуйста. Ведь не тяжело описать, что Вы делали.
Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление By Artem.
Используются технологии uCoz
|