Example #1
0
// Returns -1 if not found (which will happen if the item is new)
 int CWListRowItem::getRow(CListCtrl &clc)
{
	LV_FINDINFO lvf;
	lvf.flags=LVFI_PARAM;
	lvf.lParam = (LPARAM) this;
	int iRow = clc.FindItem(&lvf);
	return iRow;
}
Example #2
0
int CALLBACK CompareFunction( LPARAM lParam1, LPARAM lParam2, LPARAM lParamData )
{
	CListCtrl *pListCtrl = (CListCtrl *)lParamData;
	fi.lParam = lParam1;
	int iItem1 = pListCtrl->FindItem(&fi);
	fi.lParam = lParam2;
	int iItem2 = pListCtrl->FindItem(&fi);
	if ((-1 == iItem1) || (-1 == iItem2))
		return 0;
	CString strItem1 = pListCtrl->GetItemText(iItem1, s_iSortColumn);
	CString strItem2 = pListCtrl->GetItemText(iItem2, s_iSortColumn);

	if (_gbColumnNumber[s_iSortColumn])
		return s_bSortAscending ? NumberCompare( strItem1, strItem2 ) : NumberCompare( strItem2, strItem1 );
	else // text.
		return s_bSortAscending ? lstrcmp( strItem1, strItem2 ) : lstrcmp( strItem2, strItem1 );
}
Example #3
0
int CALLBACK CLiveList::SortCallback(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
	CListCtrl* pList = (CListCtrl*)lParamSort;
	ASSERT_VALID( pList );

	int nColumn = (int)GetWindowLongPtr( pList->GetSafeHwnd(), GWLP_USERDATA );

	LV_FINDINFO pFind;
	pFind.flags  = LVFI_PARAM;
	pFind.lParam = lParam1;
	int nA = pList->FindItem( &pFind );
	pFind.lParam = lParam2;
	int nB = pList->FindItem( &pFind );

	CString sA( pList->GetItemText( nA, abs( nColumn ) - 1 ) );
	CString sB( pList->GetItemText( nB, abs( nColumn ) - 1 ) );

	return ( nColumn > 0 ) ? SortProc( sB, sA ) : SortProc( sA, sB );
}
Example #4
0
int CALLBACK CompareFunc(LPARAM lParam1,LPARAM lParam2,LPARAM lParamSort)
{
	ListSortData *p = (ListSortData *)lParamSort;
	CListCtrl* list = p->listctrl;
	int isub = p->isub;
	LVFINDINFO findInfo;
	findInfo.flags = LVFI_PARAM;
	findInfo.lParam = lParam1;
	int iItem1 = list->FindItem(&findInfo, -1);
	findInfo.lParam = lParam2;
	int iItem2 = list->FindItem(&findInfo, -1);

	CString strItem1 =list->GetItemText(iItem1,isub);
	CString strItem2 =list->GetItemText(iItem2,isub);
	if(p->seq)
		return _tcscmp(strItem2, strItem1);
	else
		return -_tcscmp(strItem2, strItem1);
}
void CPropPage_Groups::OnButtonAdd() 
{
	CAddGroupDlg dlg;
	TCHAR szTT[256];
	TCHAR szGroupName[128];
	
	LVFINDINFO info;
	LV_ITEM lvi;
	int nIndex;

	if(dlg.DoModal() == IDOK)
	{
		dlg.m_GroupName.MakeLower();
		strcpy(szGroupName, (LPCTSTR) dlg.m_GroupName);

		// Filter Newsgroups
		if(!CM_NewsgroupSelectionAllowed(szGroupName)) return;

		// See if it's in the list already
		CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem(IDC_LIST_GROUPS);

		info.flags = LVFI_STRING;
		info.psz = szGroupName;

		nIndex = pListCtrl->FindItem(&info);
		if(nIndex != -1)
		{
			sprintf(szTT, "Newsgroups: %s\r\n\r\nUhh.. Listen..\r\nThat group is already in the list..", szGroupName);
			AfxMessageBox(szTT, MB_ICONINFORMATION);
			return;
		}

		// Ok, Add it...

		::ZeroMemory(&lvi, sizeof(LV_ITEM));

		lvi.mask=LVIF_TEXT | LVIF_PARAM | LVIF_IMAGE | LVIF_STATE;
		lvi.iItem = 0;
		lvi.pszText = (LPSTR) szGroupName;
		lvi.iImage=0;
		lvi.lParam = 0;
		lvi.stateMask=LVIS_STATEIMAGEMASK;
		lvi.state=INDEXTOSTATEIMAGEMASK(1);		// Unchecked initially
		pListCtrl->InsertItem(&lvi);

		SetModified(TRUE);
	}
}
void CNameTimeDisplay::UpdateProfile(PERFORMANCEPROFILERMAP &map, CListCtrl &listCtrl)
{
	IToolBox *toolBox = EngineGetToolBox();

	PERFORMANCEPROFILERMAP::iterator mapIter = map.begin();
	for (; mapIter != map.end(); mapIter++)
	{
		const TCHAR *name = toolBox->GetHashString(mapIter->first);		
	
		LVFINDINFO lvFindInfo;
		lvFindInfo.flags = LVFI_STRING;
		lvFindInfo.psz = name;

		LVITEM lvItem;
		lvItem.mask = LVIF_TEXT;

		int findResult = listCtrl.FindItem(&lvFindInfo);
		if (findResult == -1)
		{	
			lvItem.iSubItem = 0;
			lvItem.iItem = listCtrl.GetItemCount();			
			lvItem.pszText = (TCHAR*)name;
			listCtrl.InsertItem(&lvItem);
		}
		else
		{
			lvItem.iItem = findResult;
		}

		// current time
		TCHAR buf[20];
		float timeAdjust = mapIter->second * 1000.0f;
		_stprintf(buf, _T("%.2fms"), (timeAdjust));

		lvItem.iSubItem = 1;
		lvItem.pszText = buf;		
		listCtrl.SetItem(&lvItem);		

		// avg time
		float insTime = 0.0f;
		
		AVGTIMEMAP::iterator avgIter = m_AvgTimes.find(mapIter->first);
		if (avgIter == m_AvgTimes.end())
		{
			AVGTIMEVEC avgVec;
			avgVec.push_back(timeAdjust);
			insTime = timeAdjust;
			m_AvgTimes.insert(pair<DWORD, AVGTIMEVEC>(mapIter->first, avgVec));
		}
		else
		{
			AVGTIMEVEC *avgVec = &avgIter->second;
			if (avgVec)
			{
				UINT vecSize = avgVec->size();
				avgVec->push_back(timeAdjust);
				if (vecSize > m_iMaxAvgStep)
				{
					avgVec->erase(avgVec->begin());
				}
				
				for (AVGTIMEVEC::iterator vecIter = avgVec->begin(); vecIter != avgVec->end(); vecIter++)
				{
					insTime += *vecIter;
				}
				
				if (vecSize > 0)
				{
					insTime /= (float)vecSize;
				}
			}
		}
		
		_stprintf(buf, _T("%.2fms"), (insTime));
		lvItem.iSubItem = 2;
		lvItem.pszText = buf;		
		listCtrl.SetItem(&lvItem);	

		// peak time
		insTime = 0.0f;

		PEAKTIMEMAP::iterator peakIter = m_PeakTimes.find(mapIter->first);
		if (peakIter == m_PeakTimes.end())
		{
			m_PeakTimes.insert(pair<DWORD, float>(mapIter->first, timeAdjust));
			insTime = timeAdjust;
		}
		else
		{
			if (peakIter->second < timeAdjust)
			{
				peakIter->second = timeAdjust;
			}

			insTime = peakIter->second;
		}

		_stprintf(buf, _T("%.2fms"), (insTime));
		lvItem.iSubItem = 3;
		lvItem.pszText = buf;		
		listCtrl.SetItem(&lvItem);	
	}
}
Example #7
0
void CLESampleGuiDlg::LeGapScanCallBack(
										unsigned char* pAddress, 
										const int nSizeAddress, 
										unsigned char* pPkt, 
										const int nSizePkt, 
										void* pUserData)
{
	unsigned char RSSI;
	PADV_DATA advData = NULL;
	int advLen = 0;
	unsigned char nameArr[31] = {0};
	CString address;
	CString nameStr;

	address.Format(_T("%02x%02x%02x%02x%02x%02x"),pAddress[5], pAddress[4], pAddress[3], pAddress[2], pAddress[1],pAddress[0]);
	if(nSizePkt > 1)
	{
		advLen = nSizePkt - 1;
		RSSI = *(pPkt + advLen);
		advData = (PADV_DATA)(pPkt);
		/**
		typedef struct _ADV_DATA{
		unsigned char Length;
		unsigned char AdType;
		unsigned char AdData[0];
		}ADV_DATA, *PADV_DATA;
		*/
		for(int i=advLen, templen = 0; i>0; )
		{
			templen = advData->Length;
			switch(advData->AdType)
			{
			case AT_FLAGS:
				{
					//printf("AT_FLAGS:   is 0x%x\n", advData->AdData);
				}
				break;
			case AT_MORE_16UUID:                  	
			case AT_COMPLETE_16UUID:             	
			case AT_MORE_32UUID:
			case AT_COMPLETE_32UUID:              	
			case AT_MORE_128UUID:
			case AT_COMPLETE_128UUID:            	
				break;
			case AT_SHORTEN_LOCAL_NAME:          	
			case AT_COMPLETE_LOCAL_NAME:
				{
					memcpy(nameArr, advData->AdData, templen-1);
					//printf("Remote name:    %s\n", nameArr);
					
					size_t nu = templen-1;
					size_t n =(size_t)MultiByteToWideChar(CP_ACP,0,(const char *)nameArr,int(nu),NULL,0);
					wchar_t* buffer;
					buffer = new wchar_t[n+1];
					::MultiByteToWideChar(CP_ACP,0,(const char *)nameArr,int(nu),buffer,int(n)); 
					buffer[n] = '\0';
					nameStr.Format(_T("%s"), buffer);
				}
				break;
			case AT_TX_POWER_LEVEL:
			case AT_CLASS_OF_DEVICE:
			case AT_SIMPLE_PAIR_HASH_C:
			case AT_SIMPLE_PAIR_RAND_R:
			case AT_TK_VALUE:
			case AT_OOB_FLAGS:
			case AT_SLAVE_CONNECTION_INTERVAL_RANGE:
			case AT_SERVICE_SOLICATION_UUID16:
			case AT_SERVICE_SOLICATION_UUID128:
			case AT_SERVICE_DATA:
			case AT_SERVICE_DATA_32:
			case AT_SERVICE_DATA_128:
			case AT_PUBLIC_TARGET_ADDRESS:
			case AT_RANDOM_TARGET_ADDRESS:
			case AT_APPEARANCE:
			case AT_ADVERTISING_INTERVAL:
			case AT_LE_BT_ADDRESS:
			case AT_LE_ROLE:
			case AT_SIMPLE_PAIR_HASH:
			case AT_SIMPLE_PAIR_Randomizer:
			case AT_3D_INROMATION_DATA:
			case AT_MANUFACTURE_SPEC_DATA:
				break;
				// More User defined AT type
				//
			default:
				break;
				//printf("unknown AT Data Type\n");
			}
			i -= templen + 1;
			advData = (PADV_DATA)((char *)advData + templen + 1);
		}
		//pThis->m_scanList.insert(pair<CString, CString>(address, nameStr));
		int Index;
		LVFINDINFO info;
		//pThis->m_scanList[address] = nameStr;

		info.flags = LVFI_PARTIAL|LVFI_STRING;
		info.psz = address.AllocSysString();
		CListCtrl* lst = (CListCtrl*)pThis->GetDlgItem(IDC_DEVICE_LIST);
		if((Index = lst->FindItem(&info)) != -1)
		{// change the exist item
			if(pThis->m_scanList[address].IsEmpty() && !nameStr.IsEmpty())
			{
				lst->SetItemText(Index, 1, nameStr.AllocSysString());
				pThis->m_scanList[address] = nameStr;	// only when str is empty, change it
			}
		}
		else
		{// add new item
			Index = lst->GetItemCount();
			LV_ITEM lvItem;
			lvItem.mask = LVIF_TEXT ;
			lvItem.iItem = Index; 
			lvItem.iSubItem = 0;
			lvItem.pszText = address.AllocSysString();
			lst->InsertItem(&lvItem); 
			if(!nameStr.IsEmpty() || pThis->m_scanList[address].IsEmpty())
			{// cache is empty
				pThis->m_scanList[address] = nameStr;
				lst->SetItemText(Index, 1, nameStr.AllocSysString());
			}
			else
			{// cache is not empty
				lst->SetItemText(Index, 1, pThis->m_scanList[address].AllocSysString());
			}
		}
	}
	else
	{
		
	}
}