앞서 Element를 탐색하는 방법을 알아봤는데 이번에는 또 다른 방법을 알아 보도록 하겠습니다.
이번에 알아볼 방법은 Callback함수를 이용하는 방법입니다.
Callback함수를 등록시켜 놓으면 scan시 Element를 찾을때 마다 Callback함수를 호출합니다.
아래의 코드를 참조하세요
이번에 알아볼 방법은 Callback함수를 이용하는 방법입니다.
Callback함수를 등록시켜 놓으면 scan시 Element를 찾을때 마다 Callback함수를 호출합니다.
아래의 코드를 참조하세요
/*---------------------------------------------------------------------------------**//**
author BentleySystems 03/04
+---------------+---------------+---------------+---------------+---------------+------*/
int CNeutralDataFile::ScanCallback
(
MSElementDescr* pEd,
void* pInfo,
ScanCriteria* pScanCriteria
)
{
UNUSED_ALWAYS(pScanCriteria);
CNeutralDataFile* pNeutralDataFile = (CNeutralDataFile*)(pInfo);
pNeutralDataFile->WriteElementDescr(pEd , 0L);
return SUCCESS;
}
/*
@brief write element to file
@author
@date 2011.07.04
@param CStdioFile&
*/
void CNeutralDataFile::WriteToFile(/*CStdioFile* pStdioFile*/)
{
{
ScanCriteria *scP = mdlScanCriteria_create ();
// 리턴 타입이 Element Descr입니다.
mdlScanCriteria_setReturnType (scP, MSSCANCRIT_ITERATE_ELMDSCR, FALSE, TRUE);
mdlScanCriteria_setModel (scP , m_oDgnModel.GetDgnModelRef());
//ELEMENT_CATEGORY_GRAPHICS , ELEMENT_CATEGORY_ALL ,ELEMENT_CATEGORY_CONTROL
mdlScanCriteria_setElementCategory (scP,ELEMENT_CATEGORY_GRAPHICS);
// Callback 함수 등록
mdlScanCriteria_setElmDscrCallback (scP , ScanCallback, this);
mdlScanCriteria_setStopFilePos (scP, mdlModelRef_getEof (ACTIVEMODEL));
mdlScanCriteria_scan (scP, NULL , NULL , NULL);
if(scP) mdlScanCriteria_free(scP);
}
}
댓글
댓글 쓰기