mdlLinkage_appendUsingDescr을 사용하면 만들어진 Graphic Data에 여분의 사용자 데이터를 추가할수 있습니다.
아래 코드를 보시죠.
DATADEFID_ELEMENT_INFO은 사용자 데이터 구조의 ID라 생각하시면 됩니다.
이러한 사용자 데이터 구조는 리소스에 포함되어 컴파일 되어야 합니다.
따라서 프로그램 초기에 아래와 같은 코드를 포함하고 있어야 합니다.
위 코드는 MSTN J에서 테스트했습니다.
아래 코드를 보시죠.
LinkageHeader tLinkHdr;
int nStatus;
memset(tLinkHdr, '\0' , sizeof(LinkageHeader));
tLinkHdr.info =0;
tLinkHdr.remote =0;
tLinkHdr.modified =0;
tLinkHdr.user =1;
tLinkHdr.class =0;
tLinkHdr.words;
tLinkHdr.primaryID = SIGNATUREID_FDNPROJECT;
memset(elementInfo,'\0',sizeof(ElementInfo));
strncpy(elementInfo.name,element->name,64);
strncpy(elementInfo.site,element->site,64);
strncpy(elementInfo.zone,element->zone,64);
nStatus = mdlLinkage_appendUsingDescr(
elemDescrPP,
tLinkHdr,
elementInfo,
DATADEFID_ELEMENT_INFO, // data def resource ID
NULL, // conversion rules
FALSE);
if(SUCCESS != nStatus)
{
mdlDialog_dmsgsPrint("mdlLinkage_appendUsingDescr function error");
}
SIGNATUREID_FDNPROJECT은 사용자 데이터의 ID라고 생각하시면 되구요.DATADEFID_ELEMENT_INFO은 사용자 데이터 구조의 ID라 생각하시면 됩니다.
이러한 사용자 데이터 구조는 리소스에 포함되어 컴파일 되어야 합니다.
따라서 프로그램 초기에 아래와 같은 코드를 포함하고 있어야 합니다.
char *setP = NULL;
RscFileHandle rfHandle;
if (SUCCESS != mdlResource_openFile (rfHandle, NULL, TRUE))
{
/* unload this application */
mdlDialog_cmdNumberQueue (FALSE, CMD_MDL_UNLOAD, mdlSystem_getCurrTaskID(), TRUE);
return ERROR;
}
mdlState_clear();
setP = mdlCExpression_initializeSet( VISIBILITY_DIALOG_BOX |
VISIBILITY_CALCULATOR |
VISIBILITY_DEBUGGER,0,FALSE);
mdlDialog_publishComplexVariable(setP,"tagElementInfo" ,"elementInfo" ,elementInfo);
즉 리소스 파일을 오픈하여 사용자 데이터 구조의 정보를 구해야 합니다.위 코드는 MSTN J에서 테스트했습니다.
댓글
댓글 쓰기