CConnectionPoint

CConnectionPoint клас визначає спеціальний тип інтерфейсу, що використовується для з'єднання з іншими об'єктами OLE, називають "точка підключення". На відміну від нормального OLE інтерфейси, які використовуються для здійснення і викрити функціональність елемент керування OLE, точка підключення реалізує вихідних інтерфейс, який може ініціювати дії на інші об'єкти, такі як, стрільба події і змінити сповіщення.

Підключення складається з двох частин: об'єкт виклик інтерфейсу, під назвою "Джерело" і об'єкт, реалізацію інтерфейсу, під назвою "приймач". Піддаючи точка підключення, джерело дозволяє раковини встановлювати підключення до себе. Через механізм точку з'єднання вихідний об'єкт отримує вказівник для реалізації в раковину набір функцій-членів. Наприклад, вогню події за раковиною, джерело можна зателефонувати відповідний метод реалізації в раковині.

За замовчуванням, COleControl-похідного класу реалізує дві точки з'єднання: один для подій і один для властивості змінити сповіщення. Використовуються такі підключення, відповідно, для події стрільбі та повідомлення раковина (наприклад, елемент керування контейнер), коли значення властивості змінилася. Також надається підтримка для елементів керування OLE здійснити додаткові підключення точок. Для кожної точки додаткові підключення здійснюється у вашому класі контролю повинні оголосити "підключення частина", що реалізує точка підключення. Якщо ви реалізуєте одну або більше точок підключення, необхідно також оголосити сингл "підключення карта" у вашому класі контролю.

Наступний приклад демонструє просте підключення карта та один рознім для на Sample керування OLE, що складається з двох фрагментів коду: перша частина заявляє, що карта підключення та точки; другий реалізує цю карту і точки. Перший фрагмент вставляється в декларації керування клас, в розділі Захист

 nbsp;   / / Точки приєднання для ISample інтерфейс
    BEGI&N_CONNECTION_PART (CSampleCtrl, SampleConnPt)
        CONNECTION_IID(IID_ISampleSink)
    END_CONNECTION_PART(SampleConnPt)

DECLARE_CONNECTION_MAP()

BEGIN_CONNECTION_PART і END_CONNECTION_PART макроси оголосити вбудованих класу, XSampleConnPt (походить від CConnectionPoint), що реалізує ця точка зокрема підключення. Якщо потрібно змінити будь-які CConnectionPoint методи, або додати функцій-членів вашої власної, оголосити їх між двома макроси. Наприклад, макрос CONNECTION_IID заміщує функцію член CConnectionPoint::GetIID , коли поміщається між двома макроси.

Другий фрагмент коду вставляється в реалізації файлу (.CPP) вашого класу управління. Цей код реалізує підключення карта, яка включає в себе додаткові підключення до точки,SampleConnPt:

BEGI&N_CONNECTION_MAP (CSampleCtrl, COleControl)
 nbsp;  CONNECTION_PART (CSampleCtrl, IID_ISampleSink, SampleConnPt)
END_CONNECTION_MAP()

Після вставки цих фрагментів коду на зразок керування OLE піддає точки підключення для інтерфейсу ISampleSink.

Як правило, точки з'єднання підтримки "групові"; здатність передавати для декількох раковини, підключеного до той же інтерфейс. Наступний фрагмент коду демонструє, як виконати групові ітерації через кожен раковини на точка підключення:

недійсним CSampleCtrl::CallSinkFunc()
{
 nbsp;  константа CPtrArray * pConnections = m_xSampleConnPt.GetConnections();
    НАДБАННЯ (pConnections! = NULL);

Int cConnections = pConnections - > GetSize();
    ISampleSink * pSampleSink;
    для (int я = 0; я < cConnections; i + +)
    {
        pSampleSink = (ISampleSink *) (pConnections - > GetAt(i));
        НАДБАННЯ (pSampleSink! = NULL);
        pSampleSink - > SinkFunc();
    }
}

У цьому прикладі отримує поточного набору зв'язків на на SampleConnPt точка підключення із закликом до CConnectionPoint::GetConnections . Це потім повторюється через підключення і дзвінки ISampleSink::SinkFunc на кожен активний з'єднання.

Щоб отримати додаткові відомості про використання CConnectionPoint, перегляньте статтю Точки з'єднання в Visual C++ програміста керівництво.

# включити lt;afxctl.h>

|&Nbsp членів класу ; Базовий клас | Ієрархічна діаграма

Index