⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phonebookdlg.cpp

📁 通信增值服务,上网接听电话
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		m_origValue=m_listctrl.GetItemText(nPos,0);
		m_origKey=m_listctrl.GetItemText(nPos,1);
		m_dlgModify.m_sName = m_origValue;
		m_dlgModify.m_sNum = m_origKey;
	}
	if(m_dlgModify.DoModal()==IDOK)
	{
		//Modify Listview content
		mKey = m_dlgModify.m_sNum;
		mValue = m_dlgModify.m_sName;
		if(m_origKey==mKey)
		{
			if(m_origValue!=mValue){
			//Found Telephone No. Only Modify name
			pos2= m_pMap->GetStartPosition();
			while(pos2!=NULL)
			{
				m_pMap->GetNextAssoc(pos2,cKey,cValue);
				if(cValue==mValue){
				s1.LoadString(IDS_DUPLICATE_NAME);
				s2.LoadString(IDS_PLS_REEDIT);
				MessageBox(s1,s2);
				return;
				}
			}

			m_pMap->SetAt(mKey,mValue);
			m_listctrl.SetItemText(nPos,0,m_dlgModify.m_sName.GetBuffer(m_dlgModify.m_sName.GetLength()));
			}
		}
		else 
		{
			if(m_pMap->Lookup((LPCTSTR)mKey,(CString&)value))//要保证电话号码不跟已有的重复
			{
				s1.LoadString(IDS_DUPLICATE_PHONENUM);
				s2.LoadString(IDS_PLS_REEDIT);
				MessageBox(s1,s2);
				return;
			}

			if(m_origValue==mValue){//只改了电话号码
			//No phone Number matched Modify Num

			m_pMap->RemoveKey((LPCTSTR)m_origKey);
			m_pMap->SetAt(mKey,mValue);
			m_listctrl.SetItemText(nPos,1,mKey.GetBuffer(mKey.GetLength()));
			}else{//电话号码和姓名都被改,要保证姓名不跟已有的重复
				pos2= m_pMap->GetStartPosition();
				while(pos2!=NULL)
				{
					m_pMap->GetNextAssoc(pos2,cKey,cValue);
					if(cValue==mValue){
						s1.LoadString(IDS_DUPLICATE_NAME);
						s2.LoadString(IDS_PLS_REEDIT);
						MessageBox(s1,s2);
						return;
					}
				}

			m_pMap->RemoveKey((LPCTSTR)m_origKey);
			m_pMap->SetAt(mKey,mValue);
			m_listctrl.SetItemText(nPos,0,mValue.GetBuffer(mValue.GetLength()));
			m_listctrl.SetItemText(nPos,1,mKey.GetBuffer(mKey.GetLength()));
			}
		}
		
	}
}

void CPhoneBookDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	

	
}

void CPhoneBookDlg::OnRclickListPhonebook(NMHDR* pNMHDR, LRESULT* pResult) 
{
		CPoint point(GetMessagePos());
	
	//ClientToScreen(&point);
	LVHITTESTINFO LVHitInfo;
	LVHitInfo.pt = point;
	LVHitInfo.flags = LVHT_ONITEM;
	m_nRowInFocus = m_listctrl.HitTest(&LVHitInfo);
	
	CMenu *m_pSubMenu=m_pContextMenu->GetSubMenu(0);
	POSITION pos=m_listctrl.GetFirstSelectedItemPosition();
	if(pos==NULL){
		m_pContextMenu->EnableMenuItem(IDM_EDIT_PHONEBOOK,MF_GRAYED);
		m_pSubMenu->EnableMenuItem(IDM_DEL_PHONEBOOK,MF_GRAYED);
	}else{
		m_pContextMenu->EnableMenuItem(IDM_EDIT_PHONEBOOK,MF_ENABLED);
		m_pSubMenu->EnableMenuItem(IDM_DEL_PHONEBOOK,MF_ENABLED);
	}
	m_pSubMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
	//d_pContextMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
 
	
	*pResult = 0;
}

void CPhoneBookDlg::InsertRow(CString name, CString phonenum)
{
	LV_ITEM         lvitem;
	int             iIcon, iSubItem, iActualItem;
	CString         strUsername, strPhonenum;
	LPTSTR          pStrTemp1, pStrTemp2;
	strUsername = name;
	strPhonenum = phonenum;
	CNetproApp     *pApp;



	pApp = (CNetproApp *)AfxGetApp();
	// calculate the main and sub-item strings for the current item
	pStrTemp1= strPhonenum.GetBuffer(strPhonenum.GetLength());
	pStrTemp2= strUsername.GetBuffer(strUsername.GetLength());
			
		for (iSubItem = 0; iSubItem < 2; iSubItem++)
		{
			if (iSubItem == 0)
				iIcon = 0;  // choose the icon and legend for the entry

			lvitem.mask = LVIF_TEXT | (iSubItem == 0? LVIF_IMAGE : 0);
			lvitem.iItem = (iSubItem == 0)? iItem : iActualItem;
			lvitem.iSubItem = iSubItem;

			lvitem.pszText = iSubItem == 0? pStrTemp2 : pStrTemp1;

			lvitem.iImage = iIcon;
			if (iSubItem == 0)
				iActualItem = m_listctrl.InsertItem(&lvitem); // insert new item
			else
				m_listctrl.SetItem(&lvitem); // modify existing item (the sub-item text)
		}
		iItem=iActualItem+1;


}

void CPhoneBookDlg::OnAddPhonebook() 
{
		CPhonebookModify m_dlgModify;
		m_dlgModify.m_sTitle.LoadString(IDS_ADD);
		CString mKey,mValue,m_origKey,m_origValue;
		CString value;
		POSITION pos=m_listctrl.GetFirstSelectedItemPosition();
		POSITION pos2;
		CString cValue;
		CString cKey;
		CString s1,s2;
		
	if(m_dlgModify.DoModal()==IDOK)
	{
		//Modify Listview content
		mKey = m_dlgModify.m_sNum;
		mValue = m_dlgModify.m_sName;
		if(mKey==""||mValue==""){
				s1.LoadString(IDS_EMPTY_NAME_OR_NUM);
				s2.LoadString(IDS_PLS_REEDIT);
				MessageBox(s1,s2);
			//MessageBox("电话号码或姓名不能为空","请重新编辑");
			OnAddPhonebook();
			return;
		}
		if(m_pMap->Lookup((LPCTSTR)mKey,(CString&)value))//要保证电话号码不跟已有的重复
		{
				s1.LoadString(IDS_DUPLICATE_PHONENUM);
				s2.LoadString(IDS_PLS_REEDIT);
				MessageBox(s1,s2);
			return;
		}
		pos2= m_pMap->GetStartPosition();
		while(pos2!=NULL)
		{
			m_pMap->GetNextAssoc(pos2,cKey,cValue);
			if(cValue==mValue){
				s1.LoadString(IDS_DUPLICATE_NAME);
				s2.LoadString(IDS_PLS_REEDIT);
				MessageBox(s1,s2);
			return;
			}
		}
		m_pMap->SetAt(mKey,mValue);
		InsertRow(mValue,mKey);	
		m_listctrl.UpdateData(FALSE);
	}	
}

void CPhoneBookDlg::OnDelPhonebook() 
{
	POSITION pos=m_listctrl.GetFirstSelectedItemPosition();
	int nPos,Count,PosArray[100];
	CString m_Text,m_origKey,m_origValue;
	Count=0;
	CString s1,s2;

	if (pos == NULL)
		TRACE0("No items were selected!\n");
	else
	{
	   	m_Text.Format(IDS_CONFIRM_DEL,m_listctrl.GetSelectedCount( ));
		s2.LoadString(IDS_DEL);
		if(MessageBox(m_Text,s2,MB_OKCANCEL|MB_ICONQUESTION|MB_SYSTEMMODAL)==IDOK){
			while (pos)
			{
			nPos = m_listctrl.GetNextSelectedItem(pos);
			TRACE1("Item %d was selected!\n", nPos);
			// you could do your own processing on nItem here
			m_origValue=m_listctrl.GetItemText(nPos,0);
			m_origKey=m_listctrl.GetItemText(nPos,1);
			m_pMap->RemoveKey(m_origKey);
			PosArray[Count++] = nPos;
			}
			for(int i=Count-1;i>=0;i--)
			{
				m_listctrl.DeleteItem(PosArray[i]);
			}
			
		
			m_listctrl.UpdateData(FALSE);
		}
	}
	

}

void CPhoneBookDlg::OnQueryPhonebook() 
{
	CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT_QUERY);
	pEdit->SetSel(0,pEdit->GetWindowTextLength());
	pEdit->SetFocus();

	
}


void CPhoneBookDlg::OnButtonAdd() 
{
	OnAddPhonebook();
}

void CPhoneBookDlg::OnChangeEditQuery() 
{
	int iType,i;
	CString value;
	LVFINDINFO lvFindInfo;
	memset(&lvFindInfo,0,sizeof(LVFINDINFO));
	iType = m_cComboQuery.GetCurSel( );
	iType = m_cComboQuery.GetItemData(iType);
	m_cEditQuery.GetWindowText((CString&)value);

	int nSelected = m_listctrl.GetSelectedCount();
	int nSelectedIndex = -1;
	for ( i = 0; i < nSelected; i++)
	{
		nSelectedIndex = m_listctrl.GetNextItem(nSelectedIndex,  LVNI_ALL |	LVNI_SELECTED);
	    m_listctrl.SetItemState(nSelectedIndex, ~LVIS_SELECTED, LVIS_SELECTED);
	}

	lvFindInfo.flags = LVFI_PARTIAL;
	lvFindInfo.psz = (LPCTSTR)value;
	//lvFindInfo.lparam = ;


	if(iType==0)
	{
		//按姓名
		i = m_listctrl.FindItem( &lvFindInfo) ;
		if(i!=-1)
			m_listctrl.SetItemState(i,LVIS_FOCUSED|LVIS_SELECTED,LVIS_SELECTED | LVIS_FOCUSED);
		
	}else{
		//按电话号码
	}
	m_listctrl.EnsureVisible( i,FALSE); 
	m_listctrl.UpdateData(FALSE);
}



void CPhoneBookDlg::OnNcDestroy() 
{
	if(m_pContextMenu)
	{
		m_pContextMenu->DestroyMenu( );

		delete m_pContextMenu;
	}
	delete m_pImageList;
	delete m_pImageListSmall;
	delete m_pImageHdrSmall;
	CDialog::OnNcDestroy();
	
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -