Beispiel #1
0
void CPropertiesWnd::OnPropDownitem()
{
	if (!IsComboType())
	{
		return;
	}

	CMFCPropertyGridProperty *pProp = m_wndPropList.GetCurSel();
	if (pProp && pProp->IsGroup())
	{
		CString strName(pProp->GetName());
		if (strName.CompareNoCase(_T("ITEM")) == 0)
		{
			CMFCPropertyGridProperty *pParentProp = pProp->GetParent();
			if (pProp == pParentProp->GetSubItem(pParentProp->GetSubItemsCount() - 1))
			{
				return;
			}

			int nEnd = 0;
			CList<CMFCPropertyGridProperty*, CMFCPropertyGridProperty*> lstSubItems;
			for (int i = pParentProp->GetSubItemsCount() - 1; i >= nEnd; i--)
			{
				CMFCPropertyGridProperty *pChildProp = pParentProp->GetSubItem(i);
				if (pChildProp)
				{
					if (pChildProp == pProp)
					{
						nEnd = i;
						lstSubItems.InsertAfter(lstSubItems.GetHeadPosition(), pChildProp);
					}
					else
					{
						lstSubItems.AddHead(pChildProp);
					}
					pParentProp->RemoveSubItem(pChildProp, FALSE);
				}
			}

			for (POSITION pos = lstSubItems.GetHeadPosition(); pos != NULL;)
			{
				CMFCPropertyGridProperty* pProp = lstSubItems.GetNext(pos);
				ASSERT_VALID(pProp);

				pParentProp->AddSubItem(pProp);
			}
			m_wndPropList.AdjustLayout();
		}
	}
}
int CDlgParamSet::GetDelParamlst(vector<ZTreeParam*> &vecParams,int &nGroupCount)
{
	int  ncount  =0;
	ZTreeParam* pParam  = NULL;
	CBCGPGridItem*pItem = NULL;
	CZGridRow  *pRow =  NULL;
	CList <CBCGPGridItem*, CBCGPGridItem*> lstSelected;
	m_wndGridTree.GetSelectedItems (lstSelected);

	for (POSITION pos = lstSelected.GetHeadPosition(); pos != NULL; )
	{
		pItem = lstSelected.GetAt(pos);
		lstSelected.GetNext(pos);
		pRow = (CZGridRow*)pItem->GetParentRow();
		pParam = (ZTreeParam*)pRow->GetData();

		if (pParam==NULL)	
			continue;

		if (pParam->m_bIsGroup)	
			nGroupCount++;

		ncount++;
		vecParams.push_back(pParam);
	}
	return ncount;
}
Beispiel #3
0
void CHttpRequest::AddHeaders(CList<CHttpHeader *, CHttpHeader *> &headers) {
	POSITION pos = headers.GetHeadPosition();
	while (pos != NULL) {
		CHttpHeader *hdr = headers.GetNext(pos);
		Headers.AddTail(new CHttpHeader(hdr->Name, hdr->Value));
	}
}
Beispiel #4
0
/**
* \brief      Write's the Value Descriptor in the CANoe format 
* \param[in]  CStdioFile &fileOutput,char ,CList<CValueDescriptor,CValueDescriptor&>
* \param[out] None   
* \return     int
* \authors    Mahesh.B.S
* \date       15.11.2002
*/
void CValueDescriptor::writeValuDescToFile(CStdioFile &fileOutput,char m_ucType,CList<CValueDescriptor,CValueDescriptor&> &m_listValueDescriptor)
{
    char acLine[defVDES_MAX_OUT_STR];
    POSITION posValDesc = m_listValueDescriptor.GetHeadPosition();
    while(posValDesc != NULL)
    {
        CValueDescriptor& rValDesc = m_listValueDescriptor.GetNext(posValDesc);
        switch(m_ucType)
        {
        case CSignal::SIG_TYPE_INT:
        case CSignal::SIG_TYPE_FLOAT:            
        case CSignal::SIG_TYPE_DOUBLE:
        case CSignal::SIG_TYPE_INT64:
            sprintf(acLine,"%I64d \"%s\" ",rValDesc.m_value.i64Value,rValDesc.m_sDescriptor);
            break;

        case CSignal::SIG_TYPE_BOOL:
        case CSignal::SIG_TYPE_UINT:
        case CSignal::SIG_TYPE_UINT64:
            sprintf(acLine,"%I64u \"%s\" ",rValDesc.m_value.ui64Value,rValDesc.m_sDescriptor);
            break;

        default:
            break;
        }

        fileOutput.WriteString(acLine);    
    }
    fileOutput.WriteString(";\n");
    return;
}
void CPlayerPlaylistBar::DropItemOnList()
{
    m_ptDropPoint.y += 10;
    m_nDropIndex = m_list.HitTest(CPoint(10, m_ptDropPoint.y));

    TCHAR szLabel[_MAX_PATH];
    LV_ITEM lvi;
    ZeroMemory(&lvi, sizeof(LV_ITEM));
    lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE | LVIF_PARAM;
    lvi.stateMask = LVIS_DROPHILITED | LVIS_FOCUSED | LVIS_SELECTED;
    lvi.pszText = szLabel;
    lvi.iItem = m_nDragIndex;
    lvi.cchTextMax = _MAX_PATH;
    m_list.GetItem(&lvi);

    if (m_nDropIndex < 0) {
        m_nDropIndex = m_list.GetItemCount();
    }
    lvi.iItem = m_nDropIndex;
    m_list.InsertItem(&lvi);

    CHeaderCtrl* pHeader = (CHeaderCtrl*)m_list.GetDlgItem(0);
    int nColumnCount = pHeader->GetItemCount();
    lvi.mask = LVIF_TEXT;
    lvi.iItem = m_nDropIndex;
    //INDEX OF DRAGGED ITEM WILL CHANGE IF ITEM IS DROPPED ABOVE ITSELF
    if (m_nDropIndex < m_nDragIndex) {
        m_nDragIndex++;
    }
    for (int col = 1; col < nColumnCount; col++) {
        _tcscpy_s(lvi.pszText, _MAX_PATH, (LPCTSTR)(m_list.GetItemText(m_nDragIndex, col)));
        lvi.iSubItem = col;
        m_list.SetItem(&lvi);
    }

    m_list.DeleteItem(m_nDragIndex);

    CList<CPlaylistItem> tmp;
    UINT id = (UINT) - 1;
    for (int i = 0; i < m_list.GetItemCount(); i++) {
        POSITION pos = (POSITION)m_list.GetItemData(i);
        CPlaylistItem& pli = m_pl.GetAt(pos);
        tmp.AddTail(pli);
        if (pos == m_pl.GetPos()) {
            id = pli.m_id;
        }
    }
    m_pl.RemoveAll();
    POSITION pos = tmp.GetHeadPosition();
    for (int i = 0; pos; i++) {
        CPlaylistItem& pli = tmp.GetNext(pos);
        m_pl.AddTail(pli);
        if (pli.m_id == id) {
            m_pl.SetPos(m_pl.GetTailPosition());
        }
        m_list.SetItemData(i, (DWORD_PTR)m_pl.GetTailPosition());
    }

    ResizeListColumn();
}
Beispiel #6
0
/**
* \brief      Parses the Net Parameter's Other Values(BA_).
* \param[in]  CStdioFile &fileInput,CList<CParameters,CParameters&>& m_listParam
* \param[out] None
* \return     void
* \authors    Padmaja.A
* \date       16.11.2004
*/
void CParameters::Format_NetParam_Value(CStdioFile &fileInput,CList<CParameters,CParameters&>& m_listParam)
{
    CParameterValues pVal;
    char acLine[defCON_MAX_LINE_LEN];
    char *pcToken, *pcLine;
    char acTemp[defCON_CHAR_LEN],*pcTemp;
    pcTemp = acTemp;
    //parses the mesg pram other values.
    while(strcmp((fileInput.ReadString(acLine,defCON_MAX_LINE_LEN)),"[END_PARAM_NET_VAL]\n")!=0)
    {
        pcLine = acLine;
        //get other values.
        pcToken=strtok(pcLine,",");
        pcToken++;
        while(*pcToken && *pcToken!='"')
        {
            *pcTemp++=*pcToken++;
        }
        *pcTemp='\0';
        //assigns other values to the matching param.
        POSITION posMsg = m_listParam.GetHeadPosition();
        while(posMsg != NULL)
        {
            CParameters& rParam = m_listParam.GetNext(posMsg);
            // find matching Parameter from list
            if(strcmp(rParam.m_ParamName,acTemp)==0 )
            {
                pVal.Format_Param_Value(rParam.m_ParamType,(pcLine+strlen(acTemp)+3),0);
                rParam.m_listParamValues[0].AddTail(pVal);
                pcTemp=acTemp;
                break;
            }
        }
    }
}
//******************************************************************************
void CBCGPRibbonCommandsListBox::FillFromIDs (const CList<UINT,UINT>& lstCommands,
											  BOOL bDeep)
{
	ASSERT_VALID (this);
	ASSERT_VALID (m_pRibbonBar);

	CArray<CBCGPBaseRibbonElement*, CBCGPBaseRibbonElement*> arElements;

	for (POSITION pos = lstCommands.GetHeadPosition (); pos != NULL;)
	{
		UINT uiCmd = lstCommands.GetNext (pos);

		if (uiCmd == 0)
		{
			if (m_pSeparator != NULL)
			{
				arElements.Add (m_pSeparator);
			}

			continue;
		}

		CBCGPBaseRibbonElement* pElem = m_pRibbonBar->FindByID (uiCmd, FALSE);
		if (pElem == NULL)
		{
			continue;
		}

		ASSERT_VALID (pElem);
		arElements.Add (pElem);
	}

	FillFromArray (arElements, bDeep, FALSE);
}
Beispiel #8
0
int CToolCervicales::FindInList(CList<CPoint, CPoint&>& i_List, const CPoint& i_Point) const {
	POSITION i_Pos = i_List.GetHeadPosition();
	while (i_Pos != NULL) {
		if (i_List.GetNext(i_Pos) == i_Point) return (int) i_Pos;
	}	
	return -1;
}
Beispiel #9
0
void CMetaDlg::OnBnClickedOk()
{
	typedef std::map<CString, char> StrCharMap;

	BOOL bRemain = TRUE;
	ChangeAclParams params;
	params.buckname = m_strBucket;
	params.objname = m_strObject;

	char acl_c, acl_a;
	bRemain &= GetCanonicalGroupAcl(&acl_c);
	params.acls.insert(StrCharMap::value_type(_T(CANONICAL_GROUP), acl_c));

	bRemain &= GetAnonymouseGroupAcl(&acl_a);
	params.acls.insert(StrCharMap::value_type(_T(ANONYMOUSE_GROUP), acl_a));

	CList<CString, CString> users;
	GetAllUser(users);

	POSITION pos = users.GetHeadPosition();
	while (pos)
	{
		char acl;
		CString name = users.GetNext(pos);
		bRemain &= GetUserAcl(name, &acl);
		params.acls.insert(StrCharMap::value_type(name, acl));
	}

	if (!bRemain)
	{
		AfxGetApp()->GetMainWnd()->SendMessage(WM_MAINDLG_ChangeAcl, (WPARAM)&params);
	}

	CDialogEx::OnOK();
}
Beispiel #10
0
YGroup::YGroup(CList<YObject*, YObject*>& list){

	resizing = FALSE;
	// 그룹 리스트 초기화
	YObject* tmp;
	POSITION pos = list.GetHeadPosition();
	while (pos){
		tmp = list.GetNext(pos);
		tmp->setSelect(FALSE);
		groupList.AddTail(tmp);
	}

	// 리젼 사각형을 위한 좌표값 생성
	sPoint.SetPoint(10000, 10000);
	ePoint.SetPoint(0, 0);
	CRect rec;
	pos = groupList.GetHeadPosition();
	while (pos){
		tmp = groupList.GetNext(pos);
		rec = tmp->getORect();
		if (sPoint.x > rec.TopLeft().x) sPoint.x = rec.TopLeft().x;
		if (sPoint.y > rec.TopLeft().y) sPoint.y = rec.TopLeft().y;
		if (ePoint.x < rec.BottomRight().x) ePoint.x = rec.BottomRight().x;
		if (ePoint.y < rec.BottomRight().y) ePoint.y = rec.BottomRight().y;
	}
}
//右键弹出处理
void CComputerListView::OnContextMenu(CWnd*, CPoint point)
{
	m_SelectRows.RemoveAll();

	CMenu menu;

	CBCGPGridRow* pRow = GetGridCtrl()->GetCurSel();

	if (pRow != NULL)//存在选中的子行
	{
		CList<CBCGPGridItem*, CBCGPGridItem*> lstSelected;
		GetGridCtrl()->GetSelectedItems(lstSelected);//多重选择队列

		POSITION pos = lstSelected.GetHeadPosition();//第一个

		while (pos != NULL)
		{
			CBCGPGridItem* pItem = lstSelected.GetNext(pos);//下一个			
			m_SelectRows.Add((UINT)pItem->GetParentRow()->GetData());//保存选中的序号			
		}

		SendMessage(WM_LBUTTONUP);//弹起

		VERIFY(menu.LoadMenu(IDR_COMPUTER_MENU));//载入
		CMenu* pPopup = menu.GetSubMenu(0);//第一个子菜单
		ASSERT(pPopup != NULL);

#ifndef __USING_INTER_RESOURCE
		HMENU hTmp = pPopup->GetSubMenu(6)->GetSafeHmenu();
		pPopup->ModifyMenu((UINT_PTR)hTmp,MF_POPUP,(UINT_PTR)hTmp,LOAD_STRING(IDS_REMOTE_OPERATION));
#endif

		//弹出菜单
		theApp.GetContextMenuManager()->ShowPopupMenu(pPopup->Detach(), point.x, point.y, this, TRUE);
	}
	else
	{
		//扫描鼠标位置,点击在列栏上,才弹出此菜单
		CRect rect;
		m_pWndGridCtrl->GetClientRect(rect);
		rect.bottom = 21; //栏高度大概为21个像素
		ClientToScreen(rect);

		if (rect.PtInRect(point))//点击在栏上
		{
			VERIFY(menu.LoadMenu(IDR_MENU_COLUMN));//载入列菜单

			CMenu* pPopup = menu.GetSubMenu(0);
			ASSERT(pPopup != NULL);

			for (INT i = 0; i < GetGridCtrl()->GetColumnCount(); i++)//列枚举
			{//动态插入与列项有关的菜单
				pPopup->InsertMenu(i, MF_BYPOSITION, IDM_MINCOLUMNCMD + i, GetGridCtrl()->GetColumnName(i));
				pPopup->CheckMenuItem(i, MF_BYPOSITION | (GetGridCtrl()->GetColumnVisible(i) ? MF_CHECKED : MF_UNCHECKED));
			}

			theApp.GetContextMenuManager()->ShowPopupMenu(pPopup->Detach(), point.x, point.y, this, TRUE);
		}
	}
}
void CLibraryHeaderBar::OnLibraryView()
{
	CMenu pMenu;

	pMenu.CreatePopupMenu();

	CLibraryFrame* pFrame	= (CLibraryFrame*)GetParent();
	CList< CLibraryView* >* pViews = pFrame->GetViews();

	for ( POSITION pos = pViews->GetHeadPosition() ; pos ; )
	{
		CLibraryView* pView = (CLibraryView*)pViews->GetNext( pos );
		if ( ! pView->m_bAvailable ) continue;

		CString strName;
		Skin.LoadString( strName, pView->m_nCommandID );
		LPCTSTR pszName = _tcschr( strName, '\n' );
		pszName = ( pszName ) ? ( pszName + 1 ) : (LPCTSTR)strName;

		pMenu.AppendMenu( MF_STRING | ( pView == m_pLastView ? MF_CHECKED : 0 ),
			pView->m_nCommandID, pszName );
	}

	m_pCoolMenu = new CCoolMenu();
	m_pCoolMenu->AddMenu( &pMenu, TRUE );
	m_pCoolMenu->SetWatermark( Skin.GetWatermark( _T("CCoolMenu") ) );

	if ( UINT nCmd = ThrowMenu( ID_LIBRARY_VIEW, &pMenu, this, TRUE, TRUE ) )
	{
		for ( POSITION pos = pViews->GetHeadPosition() ; pos ; )
		{
			CLibraryView* pView = (CLibraryView*)pViews->GetNext( pos );

			if ( pView->m_nCommandID == nCmd )
			{
				pFrame->SetView( pView );
			}
		}
	}

	delete m_pCoolMenu;
	m_pCoolMenu = NULL;
}
//********************************************************************************
void CBCGPRibbonButtonsGroup::AddButtons (
		const CList<CBCGPBaseRibbonElement*, CBCGPBaseRibbonElement*>& lstButtons)
{
	ASSERT_VALID (this);
	
	for (POSITION pos = lstButtons.GetHeadPosition (); pos != NULL;)
	{
		AddButton (lstButtons.GetNext (pos));
	}
}
Beispiel #14
0
CAVector CToolCervicales::SegmentationGlob(CDib * m_Dib, CRxDoc * i_Document, CList<CPoint, CPoint&>& i_List) {
	CList<CPoint, CPoint&> Result;
	
	Result.AddTail(i_List.GetHead());
	Segmentation(m_Dib, i_Document, i_List.GetHeadPosition(), i_List.GetTailPosition(), i_List, 0, Result);
	Result.AddTail(i_List.GetTail());

	CAVector Vector; CPoint l_Point;
	POSITION c_Pos = Result.GetHeadPosition();
	while (c_Pos != NULL) {
		l_Point = Result.GetNext(c_Pos);
		Vector.Add(CPoint(l_Point.x, m_Dib->GetHeight()-l_Point.y));
	}
	/* replace very close points by an intermediate value */	
	for (int i=2;i<(int)((double)(m_Dib->GetWidth() + m_Dib->GetHeight())/2 * 0.03);i++) RemoveClosePoints(Vector, i);
	/* remove pattern points */
	RemovePatternPoints(Vector);
	//i_Document->Add(Vector);
	return Vector;
}
//****************************************************************************************
int CBCGPGridSerializeManager::InsertNewSelection (int nInsertPos, CList<CBCGPGridRow*, CBCGPGridRow*> & lst)
{
	ASSERT (m_pOwnerGrid != NULL);

	int nCount = 0;

	for (POSITION pos = lst.GetHeadPosition (); pos != NULL; )
	{
		POSITION posSave = pos;
		CBCGPGridRow* pRow = lst.GetNext (pos);

		if (pRow != NULL)
		{
			ASSERT_VALID (pRow);

			//-----------------------------------------
			// Insert new row at the specified position
			//-----------------------------------------
			int nRowIndex = -1;
			if (m_pOwnerGrid->GetRowCount () <= nInsertPos + nCount)
			{
				nRowIndex = m_pOwnerGrid->InsertRowAfter (nInsertPos + nCount, pRow, FALSE);
			}
			else
			{
				nRowIndex = m_pOwnerGrid->InsertRowBefore (nInsertPos + nCount, pRow, FALSE);
			}

			if (nRowIndex >= 0)
			{
				nCount++;
				lst.GetAt (posSave) = NULL;

				ASSERT (nRowIndex >= nInsertPos);
				ASSERT (nRowIndex <= nInsertPos + nCount);
			}
		}
	}

	if (nCount > 0)
	{
		// Save inserted range
		m_InsertRange.SetRows (nInsertPos, nCount, TRUE);

		// Shift marked ranges
		for (int j = 0; j < m_arrCutRanges.GetSize (); j++)
		{
			m_arrCutRanges [j].OnInsertRange (nInsertPos, nCount);
		}
	}

	return nCount;
}
Beispiel #16
0
/**
* \brief      Parses the Signal Parameter's Other Values(BA_).
* \param[in]  CStdioFile &fileInput,CList<CParameters,CParameters&>& m_listParam
* \param[out] None
* \return     void
* \authors    Padmaja.A
* \date       16.11.2004
*/
void CParameters::Format_SigParam_Value(CStdioFile &fileInput,CList<CParameters,CParameters&>& m_listParam)
{
    CParameterValues pVal;
    char acLine[defCON_MAX_LINE_LEN];
    char *pcToken, *pcLine;
    char acTemp[defCON_CHAR_LEN],*pcTemp;
    pcTemp = acTemp;
    //parses the signal pram other values.
    while(strcmp((fileInput.ReadString(acLine,defCON_MAX_LINE_LEN)),"[END_PARAM_SIG_VAL]\n")!=0)
    {
        char temp[defCON_CHAR_LEN],sname[defCON_CHAR_LEN];
        pcLine = acLine;
        //get mesg id.
        pcToken=strtok(pcLine,",");
        UINT msgId=unsigned int(atoi(pcToken));
        pcLine=pcLine+strlen(pcToken)+1;
        //get message type and validates the mtype.
        pcToken=strtok(pcLine,",");
        strcpy(temp,pcToken);
        if(strcmp(temp,"X")==0)
            msgId=msgId+2147483648;
        pcLine=pcLine+strlen(pcToken)+1;
        //get signal name.
        pcToken=strtok(pcLine,",");
        if(strlen(pcToken) > 32)
            Truncate_str("signal name",pcToken,false);
        strcpy(sname,pcToken);
        pcLine=pcLine+strlen(pcToken)+1;
        //get other values.
        pcToken=strtok(pcLine,",");
        pcLine=pcLine+strlen(pcToken)+1;
        pcToken++;
        while(*pcToken && *pcToken!='"')
        {
            *pcTemp++=*pcToken++;
        }
        *pcTemp='\0';
        //assigns other values to the matching param.
        POSITION posMsg = m_listParam.GetHeadPosition();
        while(posMsg != NULL)
        {
            CParameters& rParam = m_listParam.GetNext(posMsg);
            // find matching Parameter from list
            if(strcmp(rParam.m_ParamName,acTemp)==0 )
            {
                pVal.Format_Param_Value(rParam.m_ParamType,pcLine,3,msgId,sname);
                rParam.m_listParamValues[3].AddTail(pVal);
                pcTemp=acTemp;
                break;
            }
        }
    }
}
Beispiel #17
0
void CDownloadGroupDlg::OnCbnCloseupSchemas()
{
    // Get filters
    CList< CString > oList;
    for ( int nItem = 0 ; nItem < m_wndFilterList.GetCount() ; nItem++ )
    {
        CString strFilter;
        m_wndFilterList.GetLBText( nItem, strFilter );
        if ( oList.Find( strFilter ) == NULL )
            oList.AddTail( strFilter );
    }

    // Remove old schema filters (preserve custom ones)
    if ( CSchemaPtr pOldSchema = SchemaCache.Get( m_sOldSchemaURI ) )
    {
        for ( POSITION pos = pOldSchema->GetFilterIterator(); pos ; )
        {
            CString strFilter;
            BOOL bResult;
            pOldSchema->GetNextFilter( pos, strFilter, bResult );
            if ( bResult )
            {
                strFilter.Insert( 0, _T('.') );
                while ( POSITION pos = oList.Find( strFilter ) )
                    oList.RemoveAt( pos );
            }
        }
    }

    // Add new schema filters
    if ( CSchemaPtr pNewSchema = SchemaCache.Get( m_wndSchemas.GetSelectedURI() ) )
    {
        for ( POSITION pos = pNewSchema->GetFilterIterator(); pos ; )
        {
            CString strFilter;
            BOOL bResult;
            pNewSchema->GetNextFilter( pos, strFilter, bResult );
            if ( bResult )
            {
                strFilter.Insert( 0, _T('.') );
                oList.AddTail( strFilter );
            }
        }
    }

    // Refill interface filters list
    m_wndFilterList.ResetContent();
    for ( POSITION pos = oList.GetHeadPosition() ; pos ; )
        m_wndFilterList.AddString( oList.GetNext( pos ) );

    m_sOldSchemaURI = m_wndSchemas.GetSelectedURI();
}
Beispiel #18
0
/******************************************************************************
 Function Name  :   vIDCopy
 Input(s)       :   omDestMap, omSrcMap of IDs
 Output         :   -
 Functionality  :   Copies the source ID map values into destination.
 Member of      :   CMessageAttrib

 Author(s)      :   Arunkumar K
 Date Created   :   08-03-2011
 Modifications  :
******************************************************************************/
void CMessageAttrib::vIDCopy(CList <UINT, UINT&>& omDestMap,
                             CList <UINT, UINT&>& omSrcMap)
{
    UINT unMsgID;
    omDestMap.RemoveAll();
    POSITION psCurrPos = omSrcMap.GetHeadPosition();

    while (psCurrPos != NULL)
    {
        unMsgID = omSrcMap.GetNext(psCurrPos);
        omDestMap.AddTail(unMsgID);
    }
}
Beispiel #19
0
//碰撞检测
void GameManager::CheckCollision()
{
	for (int i = Index_Player; i <= Index_Tool; ++i)//Index_Bomb
	{
		if (i == Index_Explosion)continue;
		CList<GameObject*, GameObject*> *listA = GetList(i);
		POSITION posA = listA->GetHeadPosition();
		while (posA != NULL)
		{
			FlyObject* objectA = static_cast<FlyObject*>(listA->GetAt(posA));
			for (int j = Index_Player; j <=  Index_Tool; ++j)//Index_Bomb
			{
				if (j == Index_Explosion)continue;
				CList<GameObject*, GameObject*> *listB = GetList(j);
				POSITION posB = listB->GetHeadPosition();
				while (posB != NULL)
				{
					FlyObject* objectB = static_cast<FlyObject*>(listB->GetAt(posB));
					//碰撞检测
					if (objectA->Group() == objectB->Group())
					{
						listB->GetNext(posB);
						continue;
					}
					CPoint leftTop = CPoint(objectA->X() - objectB->Width() / 2, objectA->Y() - objectB->Height() / 2);
					CPoint rightBottom = CPoint(objectA->X() + objectA->Width() + objectB->Width() / 2, objectA->Y() + objectA->Height() + objectB->Height() / 2);
					CPoint objectCenter = CPoint(objectB->X() + objectB->Width()/2, objectB->Position()->Y() + objectB->Height() / 2);
					if (objectCenter.x <= rightBottom.x && objectCenter.y <= rightBottom.y && objectCenter.x >= leftTop.x && objectCenter.y >= leftTop.y)
					{
						Collision(objectA, objectB);
					}
					listB->GetNext(posB);
				}
			}
			listA->GetNext(posA);
		}
	}
}
Beispiel #20
0
void CLocalSearch::SendHits(const CList< T* >& oFiles)
{
	CPacket* pPacket = NULL;
	CSchemaMap pSchemas;

	BYTE nHits = 0;
	for ( POSITION pos = oFiles.GetHeadPosition(); pos; )
	{
		if ( ! pPacket )
			pPacket = CreatePacket();

		AddHit( pPacket, pSchemas, oFiles.GetNext( pos ), nHits ++ );

		bool bSend = false;
		switch ( m_nProtocol )
		{
		case PROTOCOL_G1:
		case PROTOCOL_G2:
			bSend = nHits >= Settings.Gnutella.HitsPerPacket ||
				pPacket->m_nLength >= MAX_QUERY_PACKET_SIZE;
			break;
		case PROTOCOL_DC:
			// One hit per packet in DC++ protocol
			bSend = true;
			break;
		default:
			ASSERT( FALSE );
		}

		// Send full packet
		if ( bSend )
		{
			WriteTrailer( pPacket, pSchemas, nHits );
			DispatchPacket( pPacket );
			pPacket = NULL;
			nHits = 0;
		}
	}

	if ( nHits )
	{
		WriteTrailer( pPacket, pSchemas, nHits );
		DispatchPacket( pPacket );
		pPacket = NULL;
	}

	ASSERT( pPacket == NULL );
	ASSERT( pSchemas.IsEmpty() );
}
Beispiel #21
0
/*游戏物体控制*/
void GameManager::MoveIt()
{
	for (int i = Index_Enemy; i <= Index_Angela; ++i)//Index_Bomb
	{
		if (i == Index_Explosion || i == Index_Tool || i == Index_Cloud) continue;
		CList<GameObject*, GameObject*> *now = GetList(i);
		POSITION pos = now->GetHeadPosition();

		while (pos != NULL)
		{
			FlyObject* fly = static_cast<FlyObject*>(now->GetNext(pos));
			fly->PerformFly();
		}
	}
}
CBCGPOleCntrFrameWnd::~CBCGPOleCntrFrameWnd()
{
	POSITION pos = NULL;

	for (pos = m_dockManager.m_lstMiniFrames.GetHeadPosition (); pos != NULL;)
	{
		CBCGPMiniFrameWnd* pNextFrame = DYNAMIC_DOWNCAST (CBCGPMiniFrameWnd,
					m_dockManager.m_lstMiniFrames.GetNext (pos));
		if (pNextFrame != NULL)
		{
			pNextFrame->DestroyWindow ();
		}
	}

	CList<HWND, HWND> lstChildren;
	CWnd* pNextWnd = GetTopWindow ();
	while (pNextWnd != NULL)
	{
		lstChildren.AddTail (pNextWnd->m_hWnd);
		pNextWnd = pNextWnd->GetNextWindow ();
	}

	for (pos = lstChildren.GetHeadPosition (); pos != NULL;)
	{
		HWND hwndNext = lstChildren.GetNext (pos);
		if (IsWindow (hwndNext) && ::GetParent (hwndNext) == m_hWnd)
		{
			::DestroyWindow (hwndNext);
		}
	}

	const CObList& list = CBCGPToolBar::GetAllToolbars ();
	CObList& gAllToolbars = const_cast<CObList&>(list);

	for (pos = gAllToolbars.GetHeadPosition (); pos != NULL;)
	{
		POSITION posSave = pos;

		CBCGPToolBar* pToolBar = (CBCGPToolBar*) gAllToolbars.GetNext (pos);
		ASSERT (pToolBar != NULL);

		if (CWnd::FromHandlePermanent (pToolBar->m_hWnd) == NULL)
		{
			gAllToolbars.RemoveAt (posSave);
		}
	}

}
 ~tScriptState()
 {
     int i;
     for (i = 0; i < Commands.GetCount(); ++i)
     {
         tCommand *pCmd = Commands.GetAt(i);
         delete pCmd;
     }
     POSITION pos = Labels.GetHeadPosition();
     while (pos)
     {
         tLabel *pLabel = Labels.GetAt(pos);
         delete pLabel;
         Labels.GetNext(pos);
     }
 }
Beispiel #24
0
__int64 Extract(PBTNODE pNode)
{
	__int64 res = 0;
	CList<PBTNODE,PBTNODE&> pNL;
	GetLeafList(pNode, pNL);

	__int64 ir = pNL.GetCount();	//底数
	POSITION pos = pNL.GetHeadPosition();
	while(pos){
		PBTNODE c = pNL.GetNext(pos);
		PBTNODE n = GotoNext(c);
		DWORD lv = n==NULL?0:n->dwLevel;
		res += pow(ir,lv)*c->dwPre;
	}
	res += 62;
	return res;
}
Beispiel #25
0
void GameManager::Fire()
{
	for (int i = Index_Enemy; i <= Index_Angela; i++) {
		if (i == Index_Bomb || i == Index_Explosion || i == Index_Tool || i == Index_Cloud) continue;
		CList<GameObject*, GameObject*> *now = GetList(i);
		POSITION pos = now->GetHeadPosition();
		while (pos != NULL)
		{
			Plane* plane_ = static_cast<Plane*>(now->GetNext(pos));
			if (plane_->FireStatus())
			{
				Produce(_T("Weapon"), Point(plane_->X() + plane_->Width() / 4 + 8, plane_->Y() + plane_->Height() / 4 + 8), plane_->WeaponID());
			}

		}
	}
}
void CActiveMemberView::OnRebilling()
{
	CIBAString str;
	str.LoadString(IDS_ENSURE_REBILLING);
	if (theApp.IBAMsgBox(str,MB_OKCANCEL|MB_ICONQUESTION)!=IDOK)
	{
		return;
	}
	
	CList <CBCGPGridItem*,CBCGPGridItem*> arrMember;
	GetGridCtrl()->GetSelectedItems(arrMember);

	if( arrMember.GetCount() > 0)
	{
		CShortMsgDlg dlg;
		int nValid = 0;

		POSITION pos = arrMember.GetHeadPosition();
		while(pos!=NULL)
		{
			const CBCGPGridItem* &pItem = arrMember.GetNext(pos);
			CBCGPGridRow *pRow = pItem->GetParentRow();


			UINT nMemberId = pRow->GetData();
			INT_PTR nIn = CLocalServer::GetInstance()->ComputerList.Find(nMemberId);
			if ( nIn!=-1 )
			{
				CActiveMember Act;
				if (CLocalServer::GetInstance()->ActiveMemberList.GetActiveMember(nMemberId,Act))
				{
					// 发送给指定客户端
					CLocalServer::GetInstance()->LocalCheckOutUser(nIn, nMemberId, 3);
					CIBALog::GetInstance()->WriteFormat(_T("客户端重新计费->PC=%s, memberId=%d"),Act.GetTerminalID(),nMemberId);

					Act.SetActivationTime(COleDateTime::GetCurrentTime());
					CLocalServer::GetInstance()->ActiveMemberList.UpdateActiveMember(Act,TRUE);
					Refresh(FALSE);
				}
				
			}


		}
	}
}
/**
 * \brief writes the value descriptors in the given list to the output file
 * \param[in] fileOutput Pointer to the Output file
 * \param[in] m_ucType data type of the value
 * \param[in] m_listSignals List of Value descriptors
 *
 * Writes the value descriptors in the given list to the output file.
 */
void CValueDescriptor::writeValuDescToFile(CStdioFile &fileOutput,char m_ucType,CList<CValueDescriptor,CValueDescriptor&> &m_listValueDescriptor)
{
    char acLine[defVDES_MAX_OUT_STR];
    POSITION posValDesc = m_listValueDescriptor.GetHeadPosition();
    while(posValDesc != NULL)
    {
        CValueDescriptor& rValDesc = m_listValueDescriptor.GetNext(posValDesc);
        switch(m_ucType)
        {
        case CSignal::SIG_TYPE_BOOL:
        case CSignal::SIG_TYPE_UINT:
            sprintf(acLine,"%s \"%s\",%u\n",T_VALUE_DESC,rValDesc.m_acDescriptor,rValDesc.m_value.uiValue);
            break;

        case CSignal::SIG_TYPE_INT:
            sprintf(acLine,"%s \"%s\",%d\n",T_VALUE_DESC,rValDesc.m_acDescriptor,rValDesc.m_value.iValue);
            break;

            // when FLOAT and DOUBLE are supported enable this
            /*
            case CSignal::SIG_TYPE_FLOAT:			
            sprintf(acLine,"%s \"%s\",%f\n",T_VALUE_DESC,rValDesc.m_acDescriptor,rValDesc.m_value.fValue);
            break;

            case CSignal::SIG_TYPE_DOUBLE:
            sprintf(acLine,"%s \"%s\",%f\n",T_VALUE_DESC,rValDesc.m_acDescriptor,rValDesc.m_value.dValue);
            break;
            */

        case CSignal::SIG_TYPE_INT64:
            sprintf(acLine,"%s \"%s\",%I64d\n",T_VALUE_DESC,rValDesc.m_acDescriptor,rValDesc.m_value.i64Value);
            break;

        case CSignal::SIG_TYPE_UINT64:
            sprintf(acLine,"%s \"%s\",%I64u\n",T_VALUE_DESC,rValDesc.m_acDescriptor,rValDesc.m_value.ui64Value);
            break;

        default:
            break;
        }

        fileOutput.WriteString(acLine);	
    }
    return;
}
Beispiel #28
0
CLibraryFolder* CLibraryFolderCtrl::GetNextSelectedFolder(POSITION& pos) const
{
	CLibraryFolder* pFolder = NULL;

	do
	{
		if ( pos == NULL ) return NULL;

		HTREEITEM hItem = (HTREEITEM)pos;
		pos = (POSITION)GetNextSelectedItem( hItem );

		if ( hItem == m_hRoot ) continue;

		CList< HTREEITEM > pTree;

		while ( hItem != m_hRoot )
		{
			pTree.AddHead( hItem );
			hItem = GetParentItem( hItem );
		}

		CLibraryFolder* pLastFolder = NULL;

		for ( POSITION posTree = pTree.GetHeadPosition() ; posTree ; pLastFolder = pFolder )
		{
			hItem = pTree.GetNext( posTree );
			pFolder = (CLibraryFolder*)GetItemData( hItem );

			if ( pLastFolder )
			{
				if ( pLastFolder->CheckFolder( pFolder ) ) continue;
			}
			else
			{
				if ( LibraryFolders.CheckFolder( pFolder ) ) continue;
			}

			pFolder = NULL;
			break;
		}
	}
	while ( pFolder == NULL );

	return pFolder;
}
Beispiel #29
0
/**
* \brief      Parses the Node Parameter's Other Values(BA_).
* \param[in]  CStdioFile &fileInput,CList<CParameters,CParameters&>& m_listParam
* \param[out] None
* \return     void
* \authors    Padmaja.A
* \date       16.11.2004
*/
void CParameters::Format_NodeParam_Value(CStdioFile &fileInput,CList<CParameters,CParameters&>& m_listParam)
{
    CParameterValues pVal;
    char acLine[defCON_MAX_LINE_LEN];
    char *pcToken, *pcLine;
    char acTemp[defCON_CHAR_LEN],*pcTemp;
    pcTemp = acTemp;
    //parses the node pram other values.
    while(strcmp((fileInput.ReadString(acLine,defCON_MAX_LINE_LEN)),"[END_PARAM_NODE_VAL]\n")!=0)
    {
        char NodeName[defCON_CHAR_LEN];
        pcLine = acLine;
        //get node name.
        pcToken=strtok(pcLine,",");
        if(strlen(pcToken) > 32)
            Truncate_str("parameter Name",pcToken,false);

        strcpy(NodeName,pcToken);
        pcLine=pcLine+strlen(pcToken)+1;
        //get other values.
        pcToken=strtok(NULL,",");
        pcLine=pcLine+strlen(pcToken)+1;
        pcToken++;
        while(*pcToken && *pcToken!='"')
        {
            *pcTemp++=*pcToken++;
        }
        *pcTemp='\0';
        //assigns other values to the matching param.
        POSITION posMsg = m_listParam.GetHeadPosition();
        while(posMsg != NULL)
        {
            CParameters& rParam = m_listParam.GetNext(posMsg);
            // find matching Parameter from list
            if(strcmp(rParam.m_ParamName,acTemp)==0 )
            {
                pVal.Format_Param_Value(rParam.m_ParamType,pcLine,1,0,NodeName);
                rParam.m_listParamValues[1].AddTail(pVal);
                pcTemp=acTemp;
                break;
            }
        }
    }
}
//***************************************************************************************
void CBCGPOleDocIPFrameWnd::OnDestroy() 
{
	if (CBCGPPopupMenu::GetActiveMenu () != NULL)
	{
		CBCGPPopupMenu::GetActiveMenu ()->SendMessage (WM_CLOSE);
	}

	if (g_pBCGPTopLevelFrame == this)
	{
		CFrameWnd* pTopLevelFrame = DYNAMIC_DOWNCAST (CFrameWnd,
			CWnd::FromHandlePermanent (m_hwndLastTopLevelFrame));

		g_pBCGPTopLevelFrame = pTopLevelFrame;
	}

	m_Impl.DeactivateMenu ();

    if (m_hAccelTable != NULL)
    {
        ::DestroyAcceleratorTable (m_hAccelTable);
        m_hAccelTable = NULL;
    }

	m_dockManager.m_bEnableAdjustLayout = FALSE;

	CList<HWND, HWND> lstChildren;
	CWnd* pNextWnd = GetTopWindow ();
	while (pNextWnd != NULL)
	{
		lstChildren.AddTail (pNextWnd->m_hWnd);
		pNextWnd = pNextWnd->GetNextWindow ();
	}

	for (POSITION pos = lstChildren.GetHeadPosition (); pos != NULL;)
	{
		HWND hwndNext = lstChildren.GetNext (pos);
		if (IsWindow (hwndNext) && ::GetParent (hwndNext) == m_hWnd)
		{
			::DestroyWindow (hwndNext);
		}
	}

	COleDocIPFrameWnd::OnDestroy();
}