要素に関するイベントを取得する
説明
- ACAPI_Element_AttachObserverに監視する要素GUIDを渡す
- 監視されている要素にイベントがあった場合ElementEventHandlerProcが呼び出される
- ElementEventHandlerProcは事前に(Initializeで)必ず登録しておく
GSErrCode AttachElement()
{
API_SelectionInfo selectionInfo;
GS::Array<API_Neig> selNeigs;
GSErrCode err = ACAPI_Selection_Get(&selectionInfo, &selNeigs, true);
BMKillHandle((GSHandle *)&selectionInfo.marquee.coords);
if (err != NoError)
return err;
for (API_Neig neig : selNeigs)
{
ACAPI_Element_AttachObserver(neig.guid);
}
}
GSErrCode __ACENV_CALL ElementEventHandlerProc(const API_NotifyElementType *elemType)
{
GSErrCode err = NoError;
switch (elemType->notifID)
{
case APINotifyElement_BeginEvents:
case APINotifyElement_New:
case APINotifyElement_Copy:
break;
case APINotifyElement_Change:
case APINotifyElement_Edit:
case APINotifyElement_Delete:
ACAPI_WriteReport("Edtied", true);
break;
case APINotifyElement_Undo_Created:
case APINotifyElement_Undo_Modified:
case APINotifyElement_Undo_Deleted:
ACAPI_WriteReport("Undo", true);
break;
case APINotifyElement_Redo_Created:
case APINotifyElement_Redo_Modified:
case APINotifyElement_Redo_Deleted:
ACAPI_WriteReport("Redo", true);
break;
case APINotifyElement_PropertyValueChange:
case APINotifyElement_ClassificationChange:
break;
case APINotifyElement_EndEvents:
break;
default:
break;
}
return err;
}
GSErrCode __ACENV_CALL Initialize (void)
{
GSErrCode err = ACAPI_Install_MenuHandler (ID_MENU_STRINGS, MenuCommandHandler);
err = ACAPI_Notify_InstallElementObserver(ElementEventHandlerProc);
return err;
}
要素に関するイベントを取得する
説明