C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 106 - Щелчки мыши по OLE / MFC шаг за шагом / Visual C++

Шаг 106 - Щелчки мыши по OLE

Будем дальше мучать наш проект.

Итак, нам нужна функция в классе вида, которая бы смогла определить щелкнули мы на объекте OLE и возвратить на него указатель или мы щелкнули в стороне. Давайте создадим её и назовем OleClickTest.

class CTestOleContView : public CView
{
..........
// Implementation
public:
	CTestOleContCntrItem* OleClickTest(CPoint point);
	virtual ~CTestOleContView();
#ifdef _DEBUG
........
Теперь мы с Вами её и реализуем.
CTestOleContCntrItem* CTestOleContView::OleClickTest(CPoint point)
{
	CTestOleContCntrItem* testOle;
	testOle=m_pSelection;
	if (testOle!=NULL)
	{
           if (!testOle->m_Rect.PtInRect(point)) testOle=NULL;
	}
	return testOle;
}
Основа этой процедуры функция PtInRect, которая проверяет попала ли точка в объект CRect. Теперь надо создать реакцию на двойной щелчок мыши.
/////////////////////////////////////////////
// CTestOleContView message handlers

void CTestOleContView::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
    CTestOleContCntrItem* testOle;
    testOle=OleClickTest(point);
    if (testOle!=NULL) testOle->DoVerb(OLEIVERB_PRIMARY,this); 
   CView::OnLButtonDblClk(nFlags, point);
}

Основа фунция DoVerb, которая позволяет инициализировать объект OLE.

Давайте проведем полевые испытания. Во-первых вставьте лист Excel, нажмите ESC, лист должен стать серым. Теперь двойной щелчок и вы опять сможете редактировать лист Excel. Вот работает. Есть возможность запустить Excel в отдельном окне. Для этого необходимо заменить константу в DoVerb на OLEIVERB_OPEN.


Загрузить проект | | |
Автор Каев Артем.
[AD]