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

📄 maindlg.cpp

📁 是一个简单的通讯录
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		
		m_recordset.GetFieldValue(temp,varValue);
		dlg.m_modid=varValue.m_lVal;

		m_recordset.GetFieldValue(1,varValue);
		dlg.m_modname=varValue.m_pstring->GetBuffer(1);

		m_recordset.GetFieldValue(2,varValue);
		dlg.m_modsex=varValue.m_pstring->GetBuffer(1);

		m_recordset.GetFieldValue(3,varValue);
		dlg.m_modrelation=varValue.m_pstring->GetBuffer(1);
		
		m_recordset.GetFieldValue(4,varValue);
		dlg.m_modtelephone=varValue.m_pstring->GetBuffer(1);

		m_recordset.GetFieldValue(5,varValue);
		dlg.m_modhandphone=varValue.m_pstring->GetBuffer(1);

		m_recordset.GetFieldValue(6,varValue);
		dlg.m_modaddress=varValue.m_pstring->GetBuffer(1);

		m_recordset.GetFieldValue(7,varValue);
		dlg.m_modworkplace=varValue.m_pstring->GetBuffer(1);

		m_recordset.GetFieldValue(8,varValue);
		dlg.m_modemail=varValue.m_pstring->GetBuffer(1);

		m_recordset.GetFieldValue(9,varValue);
		dlg.m_modoicq=varValue.m_pstring->GetBuffer(1);
		//m_database.Close();//此处不能断开与数据库的连接
		dlg.DoModal();
		RefreshData();
	}
}

//////////////////////////////////////////////////////////////////////
//功能:展开查询记录窗口

//////////////////////////////////////////////////////////////////////
void CMainDlg::OnRadioSearch() 
{
	// TODO: Add your control notification handler code here
	m_bflag=!m_bflag;
	if(m_bflag==false)//没有展开对话框(退出查询)
	{
		GetDlgItem(IDC_RADIO_SEARCH)->SetWindowText(_T("查询记录"));
		SizeWindow(m_nReduceHeight,true);
		RefreshData();
	}
	else
	{
		GetDlgItem(IDC_RADIO_SEARCH)->SetWindowText(_T("退出查询"));
		//在“关键字”框中设置光标
		GetDlgItem(IDC_INPUT_EDIT)->SetFocus();
		SizeWindow(m_nReduceHeight,false);
	}
}

//////////////////////////////////////////////////////////////////////
//功能:弹出修改记录窗口

//////////////////////////////////////////////////////////////////////
void CMainDlg::OnMenuMod() 
{
	// TODO: Add your command handler code here
m_database.Close();//本对话框断开与数据库的连接
	CModifyDlg dlg;
	dlg.m_database.Open(_T("addresslist"));
	int i=m_ctrlperson.GetSelectionMark();
	CString strSQL;
	int id=atoi(m_ctrlperson.GetItemText(i,0));
	CPersonSet m_recordset;
	CDBVariant varValue;
	if(i==-1)
	{
		MessageBox("请选择一条要修改的记录!","提示",MB_OK|MB_ICONINFORMATION);
	}
	else
	{
		int temp=0;
		strSQL.Format("select * from person where ID=%d",id);
		m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
		
		m_recordset.GetFieldValue(temp,varValue);
		dlg.m_modid=varValue.m_lVal;

		m_recordset.GetFieldValue(1,varValue);
		dlg.m_modname=varValue.m_pstring->GetBuffer(1);

		m_recordset.GetFieldValue(2,varValue);
		dlg.m_modsex=varValue.m_pstring->GetBuffer(1);

		m_recordset.GetFieldValue(3,varValue);
		dlg.m_modtelephone=varValue.m_pstring->GetBuffer(1);

		m_recordset.GetFieldValue(4,varValue);
		dlg.m_modtelephone=varValue.m_pstring->GetBuffer(1);

		m_recordset.GetFieldValue(5,varValue);
		dlg.m_modhandphone=varValue.m_pstring->GetBuffer(1);

		m_recordset.GetFieldValue(6,varValue);
		dlg.m_modaddress=varValue.m_pstring->GetBuffer(1);

		m_recordset.GetFieldValue(7,varValue);
		dlg.m_modworkplace=varValue.m_pstring->GetBuffer(1);

		m_recordset.GetFieldValue(8,varValue);
		dlg.m_modemail=varValue.m_pstring->GetBuffer(1);

		m_recordset.GetFieldValue(9,varValue);
		dlg.m_modoicq=varValue.m_pstring->GetBuffer(1);
		//m_database.Close();//此处不能断开与数据库的连接
		dlg.DoModal();
		RefreshData();
	}
}

//////////////////////////////////////////////////////////////////////
//功能:以文本格式保存记录

//////////////////////////////////////////////////////////////////////
void CMainDlg::OnMenuSave() 
{
	// TODO: Add your command handler code here
	CFileDialog filedlg(FALSE,_T("txt"),_T("*.txt"));
	filedlg.DoModal();
}

//////////////////////////////////////////////////////////////////////
//功能:展开查询窗口

//////////////////////////////////////////////////////////////////////
void CMainDlg::OnMenuSearch() 
{
	// TODO: Add your command handler code here
	m_bflag=!m_bflag;
	if(m_bflag==false)
	{
		GetDlgItem(IDC_RADIO_SEARCH)->SetWindowText(_T("查询记录"));
		SizeWindow(m_nReduceHeight,true);
		RefreshData();
	}
	else
	{
		GetDlgItem(IDC_RADIO_SEARCH)->SetWindowText(_T("退出查询"));
		//在“关键字”框中设置光标
		GetDlgItem(IDC_INPUT_EDIT)->SetFocus();
		SizeWindow(m_nReduceHeight,false);
	}
}

BOOL CMainDlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if(pMsg->message==WM_MOUSEMOVE)
	{
		m_addTip.RelayEvent(pMsg);
		m_delTip.RelayEvent(pMsg);
		m_modTip.RelayEvent(pMsg);
		m_searchTip.RelayEvent(pMsg);
	}
	return CDialog::PreTranslateMessage(pMsg);
}

//////////////////////////////////////////////////////////////////////
//功能:单击列表时显示高亮

//////////////////////////////////////////////////////////////////////
void CMainDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	//得到所选取项的标号
	int i=m_ctrlperson.GetSelectionMark();
	//为所选的项设为高亮
	m_ctrlperson.SetHotItem(i);
	*pResult = 0;
}

/////////////////////////////////////////////////////////////////////////
//名称:SizeWindow//自定义函数
//功能:展开对话框,出现查询对话框

/////////////////////////////////////////////////////////////////////////
void CMainDlg::SizeWindow(int ReduceHeight, bool bflag)
{
	CRect rect;
	GetWindowRect(&rect);
	if(bflag)
	{
		for(int i=0;i<ReduceHeight;i++)
		{
			rect.bottom--;
			MoveWindow(&rect);
		}
	}
	else
	{
		for(int i=0;i<ReduceHeight;i++)
		{
			rect.bottom++;
			MoveWindow(&rect);
		}
	}
	UpdateWindow();
}

/////////////////////////////////////////////////////////////////////////
//名称:OnOk
//功能:提交通讯录果询结果

////////////////////////////////////////////////////////////////////////
void CMainDlg::OnOK() 
{
	// TODO: Add extra validation here
	if(m_bsearchflag)//如果flag=true,则调用精确查询
	{
		ExactSearch();
	}
	else//否则调用模糊查询
	{
		BlurSearch();
	}
	//CDialog::OnOK();
}

//////////////////////////////////////
//名称:ExactSearch
//功能:实现精确查询

///////////////////////////////////////
void CMainDlg::ExactSearch()
{
	//如果数据库没有打开,先将其打开
	if(!m_database.IsOpen())
	{
		m_database.Open(_T("addresslist"));
	}

	UpdateData(TRUE);
	CPersonSet m_personset;//定义CPersonset类的对象
	CString m_tablefield;
	if(m_field.Compare("姓名")==0)
	{
		m_tablefield.Format("NAME");
	}

	if(m_field.Compare("所在城市")==0)
	{
		m_tablefield.Format("ADDRESS");
	}

	if(m_field.Compare("手机号码")==0)
	{
		m_tablefield.Format("HANDPHONE");
	}

	if(m_field.Compare("OICQ号码")==0)
	{
		m_tablefield.Format("OICQ");
	}
	if(!m_input.IsEmpty())
	{
		m_searchSQL.Format("select * from person where %s='%s'",m_tablefield,m_input);
		SearchData();
	}
	else
	{
		MessageBox("请填写查询关键字","提示",MB_OK|MB_ICONINFORMATION);
		GetDlgItem(IDC_INPUT_EDIT)->SetFocus();
	}
}
//////////////////////////////////////
//名称:BlurSearch
//功能:实现模糊查询

///////////////////////////////////////
void CMainDlg::BlurSearch()
{
		//如果数据库没有打开,先将其打开
	if(!m_database.IsOpen())
	{
		m_database.Open(_T("addresslist"));
	}

	UpdateData(TRUE);
	CPersonSet m_personset;//定义CPersonset类的对象
	CString m_tablefield,m_str="%";
	m_str=m_str+m_input+"%";
	if(!m_input.IsEmpty())
	{
		if(m_field.Compare("姓名")==0)
		{
			m_tablefield.Format("NAME");
		}

		if(m_field.Compare("所在城市")==0)
		{
			m_tablefield.Format("ADDRESS");
		}

		if(m_field.Compare("手机号码")==0)
		{
			m_tablefield.Format("HANDPHONE");
		}

		if(m_field.Compare("OICQ号码")==0)
		{
			m_tablefield.Format("OICQ");
		}
		m_searchSQL.Format("select * from person where %s like '%s'",m_tablefield,m_str);
		SearchData();
	}
	else
	{
		MessageBox("请填写查询关键字","提示",MB_OK|MB_ICONINFORMATION);
		GetDlgItem(IDC_INPUT_EDIT)->SetFocus();
	}
}

///////////////////////////////////////////////////////////////////////////
//功能:精确查询按钮

//////////////////////////////////////////////////////////////////////////
void CMainDlg::OnRadio1() 
{
	// TODO: Add your control notification handler code here
	m_bsearchflag=true;
}

///////////////////////////////////////////////////////////////////////////
//功能:模糊查询按钮

//////////////////////////////////////////////////////////////////////////
void CMainDlg::OnRadio2() 
{
	// TODO: Add your control notification handler code here
	m_bsearchflag=!m_bsearchflag;
}

///////////////////////////////////////////////////////////////////////////
//名称:SearchData
//功能:实现记录查询

//////////////////////////////////////////////////////////////////////////
void CMainDlg::SearchData()
{
	//首先确保数据库打开
	if(!m_database.IsOpen())
	{
		m_database.Open(_T("addresslist"));
	}
	//对列表控件的内容更新,清空原来的内容
	m_ctrlperson.DeleteAllItems();
	//创建记录集
	CPersonSet m_personset(&m_database);
	m_personset.Open(AFX_DB_USE_DEFAULT_TYPE,m_searchSQL);
	CDBVariant varValue;
	char buf[20];
	//用来记录当前记录的序号
	int i=0;
	//如果表中有记录,打开后将游标定在第一位,使记录集中的第一条记录成为当前记录
	if(m_personset.GetRecordCount()!=0)		m_personset.MoveFirst();
	while(!m_personset.IsEOF())
	{
		int temp=0;
		//对整型数字的处理
		m_personset.GetFieldValue(temp,varValue);
		sprintf(buf,"%d",varValue.m_lVal);m_ctrlperson.InsertItem(i,buf);
		//对字符串显示处理
		//m_personset.GetFieldValue(0,varValue);
		//m_ctrlperson.SetItemText(i,0,varValue.m_pstring->GetBuffer(1));

		m_personset.GetFieldValue(1,varValue);
		m_ctrlperson.SetItemText(i,1,varValue.m_pstring->GetBuffer(1));

		m_personset.GetFieldValue(2,varValue);
		m_ctrlperson.SetItemText(i,2,varValue.m_pstring->GetBuffer(1));
		
		m_personset.GetFieldValue(3,varValue);
		m_ctrlperson.SetItemText(i,3,varValue.m_pstring->GetBuffer(1));

		m_personset.GetFieldValue(4,varValue);
		m_ctrlperson.SetItemText(i,4,varValue.m_pstring->GetBuffer(1));

		m_personset.GetFieldValue(5,varValue);
		m_ctrlperson.SetItemText(i,5,varValue.m_pstring->GetBuffer(1));

		m_personset.GetFieldValue(6,varValue);
		m_ctrlperson.SetItemText(i,6,varValue.m_pstring->GetBuffer(1));

		m_personset.GetFieldValue(7,varValue);
		m_ctrlperson.SetItemText(i,7,varValue.m_pstring->GetBuffer(1));

		m_personset.GetFieldValue(8,varValue);
		m_ctrlperson.SetItemText(i,8,varValue.m_pstring->GetBuffer(1));

		m_personset.GetFieldValue(9,varValue);
		m_ctrlperson.SetItemText(i,9,varValue.m_pstring->GetBuffer(1));
		m_personset.MoveNext();
		i++;	
	}
	//在标题栏中显示共有记录条数
	int counts=m_personset.GetRecordCount();
	CString str;
	str.Format("通讯录 V1.0 试用版     符合条件的记录数: %d",counts);	
	this->SetWindowText(str);
}

⌨️ 快捷键说明

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