Graphisoft®

API Development KitVersion: 18

ACAPI_Notify_InstallElementObserver

요소들의 변경사항에 대한 알림들을 받는 요소 옵저버 함수를 설치합니다.

    GSErrCode  ACAPI_Notify_InstallElementObserver (
        APIElementEventHandlerProc*     handlerProc
    );

 

파라미터

handlerProc
[in] 요소들의 변경사항에 대한 알림이 전송되면 호출되는 콜백 프로시저입니다. 여기에 NULL을 지정하는 것은 당신이 더 이상 알림이 필요하지 않다는 것을 의미합니다.

 

리턴 값

NoError
함수가 성공적으로 완료되었습니다.

다른 공통 API 오류들에 대해서는 오류 코드들의 리스트를 보십시오.

 

설명

이 함수는 요소들의 변경사항을 모니터링하고 싶은 애드온을 등록/등록 해제하는 데 사용합니다. 이것은 ACAPI_Element_AttachObserver로 요소에 부착할 수 있는 모든 요소 옵저버들에 대한 공통 콜백 함수입니다.
애드온의 handlerProc를 등록한 후에는 모니터링되는 요소들의 변경사항이 있을 때 호출 받게 될 것입니다.
더 자세한 것은 알림 관리자의 요소 관련 알림 단락도 읽어 보십시오.

 

예제

// -----------------------------------------------------------------------------
// 요소 옵저버 콜백 함수
// -----------------------------------------------------------------------------
static GSErrCode __ACENV_CALL    ElementEventHandler (const API_NotifyElementType *elemType)

{
    GSErrCode       err = NoError;
    char            msgStr[256];
    char            elemStr[32];
    API_Elem_Head   elemHead;
    API_Element     parentElement;

    BNZeroMemory (&parentElement, sizeof (API_Element));
    ACAPI_Notify_GetParentElement (&parentElement, NULL, 0);

    switch (elemType->notifID) {
        case APINotifyElement_Copy:
                    BNZeroMemory (&elemHead, sizeof (API_Elem_Head));

                    if (parentElement.header.guid != APINULLGuid && GetElementTypeString (elemType->typeID, elemStr)) {
                        sprintf (msgStr, "### Element_Manager: %s #%d copied from #%d",
                                 elemStr, APIGuidToString (elemType->guid).ToCStr ().Get (), 
                                 APIGuidToString (parentElement.header.guid).ToCStr ().Get ());

                        elemHead.guid = elemType->guid;
                        err = ACAPI_Element_AttachObserver (&elemHead, 0);
                    }
                    break;


        default:
                    err = APIERR_NOTSUPPORTED;
                    break;
    }

    if (err == NoError)
        ACAPI_WriteReport (msgStr, false);

    return err;
}   // ElementEventHandler


// -----------------------------------------------------------------------------
// 애드온이 메모리에 로드된 후에 호출됨
// -----------------------------------------------------------------------------
GSErrCode    __ACENV_CALL    Initialize (void)

{
    // 선택에서의 변경사항을 캐치
    GSErrCode err = ACAPI_Notify_InstallElementObserver (ElementEventHandler);

    return err;
}   // Initialize

 

요구사항

버전: API 4.1 또는 이후
헤더: ACAPinc.h

 

참고사항

APIElementEventHandlerProc
ACAPI_Element_AttachObserver
ACAPI_Element_DetachObserver
알림 관리자
API 함수