void CMetadataTree::AddMenuInfo(CMenu* pPopup,HTREEITEM hParentItem,int &nPos) { if(nPos>10) return; CTreeCtrl *pCtrl=&GetTreeCtrl(); HTREEITEM CurItem=pCtrl->GetChildItem(hParentItem); while(CurItem) { CObjectData data=dataMetaObj[CurItem]; if(data.bGroup==0) if(data.nType==OBJ_FORM || data.nType==OBJ_MAKET || data.nType==OBJ_MODULE || data.nType==OBJ_DOC) { nPos++; aMenuItem.SetAtGrow(nPos,CurItem); CString csRes=CString("Открыть: \"")+pCtrl->GetItemText(CurItem)+"\""; int nID=MENU_START_ID2+nPos; pPopup->InsertMenu(nPos, MF_BYPOSITION, nID, csRes); if(data.nType==OBJ_FORM) SetMBitmap(nID,IDB_EDIT_FORM) else if(data.nType==OBJ_MAKET) SetMBitmap(nID,IDB_EDIT_MAKET) else if(data.nType==OBJ_MODULE) SetMBitmap(nID,IDB_EDIT_MODULE) else if(data.nType==OBJ_DOC) SetMBitmap(nID,IDB_EDIT_DOC) } AddMenuInfo(pPopup,CurItem,nPos); CurItem=pCtrl->GetNextSiblingItem(CurItem); }
DWORD CInfoTalkEventMENU::ReadElementData( PBYTE pSrc, /* [in] データの読み込み元 */ int nNo) /* [in] 要素番号 */ { int i, nCount; DWORD dwSize; PBYTE pDst, pDataTmp; PSTTALKEVENTMENUINFO pInfo; pDst = NULL; dwSize = 0; if (nNo < m_nElementCountBase) { return CInfoTalkEventBase::ReadElementData (pSrc, nNo); } pDataTmp = pSrc; nCount = m_aMenuInfo.GetSize (); nNo -= m_nElementCountBase; switch (nNo) { case 0: /* 項目数 */ DeleteAllMenuInfo (); nCount = 0; CopyMemoryRenew (&nCount, pDataTmp, sizeof (nCount), pDataTmp); for (i = 0; i < nCount; i ++) { AddMenuInfo (0, NULL); } dwSize = (pDataTmp - pSrc); break; case 1: /* ジャンプ先ページ番号 */ for (i = 0; i < nCount; i ++) { pInfo = m_aMenuInfo[i]; CopyMemoryRenew (&pInfo->nPage, pDataTmp, sizeof (pInfo->nPage), pDataTmp); } dwSize = (pDataTmp - pSrc); break; case 2: /* 項目名 */ for (i = 0; i < nCount; i ++) { pInfo = m_aMenuInfo[i]; StoreRenew (pInfo->strName, (LPCSTR)pDataTmp, pDataTmp); } dwSize = (pDataTmp - pSrc); break; } if (pDst) { CopyMemory (pDst, pSrc, dwSize); } return dwSize; }
void CInfoTalkEventMENU::Copy(CInfoTalkEventBase *pSrc) { int i, nCount; PSTTALKEVENTMENUINFO pInfo; PCInfoTalkEventMENU pSrcTmp; if (pSrc == NULL) { return; } pSrcTmp = (PCInfoTalkEventMENU)pSrc; DeleteAllMenuInfo (); CInfoTalkEventBase::Copy (pSrcTmp); nCount = pSrcTmp->GetMenuInfoCount (); for (i = 0; i < nCount; i ++) { pInfo = pSrcTmp->GetPtr (i); AddMenuInfo (pInfo->nPage, (LPCSTR)pInfo->strName); } }
PBYTE CInfoTalkEventMENU::SetSendData(PBYTE pSrc) { int i, nCount; PBYTE pRet, pDataTmp; PSTTALKEVENTMENUINFO pInfo; pRet = pSrc; DeleteAllMenuInfo (); pDataTmp = CInfoTalkEventBase::SetSendData (pSrc); CopyMemoryRenew (&nCount, pDataTmp, sizeof (nCount), pDataTmp); /* 項目数 */ for (i = 0; i < nCount; i ++) { AddMenuInfo (0, NULL); pInfo = m_aMenuInfo[i]; /* ジャンプ先ページ番号 */ CopyMemoryRenew (&pInfo->nPage, pDataTmp, sizeof (pInfo->nPage), pDataTmp); /* 項目名 */ StoreRenew (pInfo->strName, (LPCSTR)pDataTmp, pDataTmp); } pRet = pDataTmp; return pRet; }