首 页最新软件下载排行文章资讯投稿发布下载专题
维维下载站
您的位置:首页编程开发网络编程编程其它 → vc++消息映射/初始化对话框/数据库/弹出各种窗口/精确查询/模糊查询相关操作示例代码

vc++消息映射/初始化对话框/数据库/弹出各种窗口/精确查询/模糊查询相关操作示例代码

来源:维维整理 发布时间:2017-8-16 16:36:11 人气:

vc++消息映射/初始化对话框/数据库/弹出各种窗口/精确查询/模糊查询相关操作示例代码是小编为大家整理的一个VC++ 函数集文件,这并不是一个完成某种功能的文件,而是一些函数集,包括了消息映射 初始化对话框 数据库 在标题栏显示记录条数 弹出各种窗口 以文本格式保存记录 精确查询 模糊查询 单击列表时显示高亮等操作,有喜欢的朋友可以先收藏起来,以备以后编程所需,代码分享如下,,赶紧来详细了解一下吧:

//类名:CMainDlg
//功能:通讯录主界面
#include "stdafx.h"
#include "Address.h"
#include "MainDlg.h"
#include "PersonSet.h"
#include "ChangePswDlg.h"
#include "AddInfoDlg.h"
#include "Aboutdlg.h"
#include "ModifyDlg.h"
#include "SearchDlg.h"
// Download by http://www.srcfans.com
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// CMainDlg dialog
//名称:构造函数
//功能:对象产生则调用此函数
CMainDlg::CMainDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CMainDlg::IDD, pParent)
{
	m_input = _T("");
	m_field = _T("");
}
//功能:实现数据交换
void CMainDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMainDlg)
	DDX_Control(pDX, IDC_FIELD_COMBO, m_ctrlfield);
	DDX_Control(pDX, IDC_LIST1, m_ctrlperson);
	DDX_Text(pDX, IDC_INPUT_EDIT, m_input);
	DDX_CBString(pDX, IDC_FIELD_COMBO, m_field);
	//}}AFX_DATA_MAP
}
//功能:消息映射
BEGIN_MESSAGE_MAP(CMainDlg, CDialog)
	//{{AFX_MSG_MAP(CMainDlg)
	ON_COMMAND(ID_MENU_MODPSW, OnMenuModpsw)
	ON_COMMAND(ID_MENU_ABOUT, OnMenuAbout)
	ON_BN_CLICKED(IDC_RADIO_ADD, OnRadioAdd)
	ON_COMMAND(ID_MENU_DEL, OnMenuDel)
	ON_BN_CLICKED(IDC_RADIO_DEL, OnRadioDel)
	ON_COMMAND(ID_MENU_ADD, OnMenuAdd)
	ON_COMMAND(ID_MENU_HELP, OnMenuHelp)
	ON_COMMAND(ID_MENU_EXIT, OnMenuExit)
	ON_BN_CLICKED(IDC_RADIO_MOD, OnRadioMod)
	ON_BN_CLICKED(IDC_RADIO_SEARCH, OnRadioSearch)
	ON_COMMAND(ID_MENU_MOD, OnMenuMod)
	ON_COMMAND(ID_MENU_SAVE, OnMenuSave)
	ON_COMMAND(ID_MENU_SEARCH, OnMenuSearch)
	ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
	ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
	ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
///////////////////////////////////////////////////////////////////////
// CMainDlg message handlers
//////////////////////////////////////////////////////////////////////
//名称:OnInitDialog
//功能:初始化对话框图
//////////////////////////////////////////////////////////////////////
BOOL CMainDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	// TODO: Add extra initialization here
	//默认为“精确查询”按钮被选中
	CDialog::CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);
	//默认“姓名”项被选中
	m_ctrlfield.SetCurSel(0);
	//让窗口出现时居中
	CenterWindow();
	//为标题栏加图标
	m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	this->SetIcon(m_hIcon,TRUE);
	//设定列的颜色
	m_ctrlperson.SetTextColor(RGB(100,0,100));
	m_ctrlperson.SetTextBkColor(RGB(240,247,233));
	//确定列名
	m_ctrlperson.InsertColumn(0,"序号");
	m_ctrlperson.InsertColumn(1,"姓名");
	m_ctrlperson.InsertColumn(2,"性别");
	m_ctrlperson.InsertColumn(3,"关系");
	m_ctrlperson.InsertColumn(4,"联系电话");
	m_ctrlperson.InsertColumn(5,"手机号码");
	m_ctrlperson.InsertColumn(6,"家庭住址");
	m_ctrlperson.InsertColumn(7,"工作单位");
	m_ctrlperson.InsertColumn(8,"E_mail地址");
	m_ctrlperson.InsertColumn(9,"OICQ号码");
	//重新分配列宽
	m_ctrlperson.SetColumnWidth(0,40);
	m_ctrlperson.SetColumnWidth(1,60);
	m_ctrlperson.SetColumnWidth(2,40);
	m_ctrlperson.SetColumnWidth(3,80);
	m_ctrlperson.SetColumnWidth(4,100);
	m_ctrlperson.SetColumnWidth(5,100);
	m_ctrlperson.SetColumnWidth(6,150);
	m_ctrlperson.SetColumnWidth(7,150);
	m_ctrlperson.SetColumnWidth(8,150);
	m_ctrlperson.SetColumnWidth(9,80);
	//扩展风格
	m_ctrlperson.SetExtendedStyle(LVS_EX_FULLROWSELECT| LVS_EX_GRIDLINES);//|LVS_SHOWSELALWAYS);
	//查找记录并按ID升序排列
	m_query.Format("select * from person order by ID ASC");
	RefreshData();
	//为操作区增加工具条提示
	m_addTip.Create(this);
	CButton* m_radio_add=(CButton*)GetDlgItem(IDC_RADIO_ADD);
	m_addTip.AddTool(m_radio_add,"单击此按钮,可以为通讯录增加记录。");
	m_modTip.Create(this);
	CButton* m_radio_mod=(CButton*)GetDlgItem(IDC_RADIO_MOD);
	m_modTip.AddTool(m_radio_mod,"先选取列表框中要修改的记录,再单击此按钮就可以修改相应的记录。");
	m_delTip.Create(this);
	CButton* m_radio_del=(CButton*)GetDlgItem(IDC_RADIO_DEL);
	m_delTip.AddTool(m_radio_del,"先选取列表框中要删除的记录,再单击此按钮就可以彻底将此记录删除。");
	m_searchTip.Create(this);
	CButton* m_radio_search=(CButton*)GetDlgItem(IDC_RADIO_SEARCH);
	m_searchTip.AddTool(m_radio_search,"单击此按钮可以查到你想要的记录。");
	//使对话框居中显示
	CRect dlgrect;
	GetWindowRect(&dlgrect);
	CRect desktoprect;
	GetDesktopWindow()->GetWindowRect(&desktoprect);
	CRect rect1,rect2;
	GetDlgItem(IDC_SEARCH_STATIC)->GetWindowRect(&rect1);
	GetDlgItem(IDC_FLAG_STATIC)->GetWindowRect(&rect2);
	m_nReduceHeight=rect1.Height()+(rect1.top-rect2.bottom)/2;//收缩后窗体的高度
	dlgrect.bottom-=(rect1.Height()-(rect1.top-rect2.bottom)/2);
	MoveWindow(&dlgrect);
	m_bflag=false;
	m_bsearchflag=true;
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
//////////////////////////////////////////////////////////////////////
//名称:RefreshData
//功能:刷新数据显示
//////////////////////////////////////////////////////////////////////
void CMainDlg::RefreshData()
{
	//首先确保数据库打开
	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_query);
	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);
}
//////////////////////////////////////////////////////////////////////
//功能:弹出更改口令窗口
//////////////////////////////////////////////////////////////////////
void CMainDlg::OnMenuModpsw()
{
	// TODO: Add your command handler code here
	CChangePswDlg dlg;
	dlg.DoModal();
}
//////////////////////////////////////////////////////////////////////
//功能:弹出"关于"窗口
//////////////////////////////////////////////////////////////////////
void CMainDlg::OnMenuAbout()
{
	// TODO: Add your command handler code here
	CAboutdlg dlg;
	dlg.DoModal();
}
//////////////////////////////////////////////////////////////////////
//功能:弹出增加记录窗口
//////////////////////////////////////////////////////////////////////
void CMainDlg::OnRadioAdd()
{
	//本对话框对应的数据库连接关闭
	m_database.Close();
	//新建一个CAddInfoDlg的对象
	CAddInfoDlg dlg;
	//新对话框建立到数据库连接
	dlg.m_database.Open(_T("addresslist"));
	//弹出新对话框
	dlg.DoModal();
	//新对话框关闭后,在原对话框中刷新数据显示
	RefreshData();
}
//////////////////////////////////////////////////////////////////////
//功能:弹出删除记录窗口
//////////////////////////////////////////////////////////////////////
void CMainDlg::OnMenuDel()
{
	// TODO: Add your command handler code here
	//i是记录中所选的记录号,如果没有则返回
	int i=m_ctrlperson.GetSelectionMark();
	CString strSQL,msg,strname;
	strname=m_ctrlperson.GetItemText(i,1);
	msg.Format("第 %d 项,姓名为“%s”的记录将被删除!是否继续?",i+1,strname);
	//如果用户没有选择记录,则提示选取一条记录
	if(i==-1)
	{
		MessageBox("请选择一条要删除的记录!","提示",MB_OK|MB_ICONINFORMATION);
	}
	else
	{
		if(MessageBox(msg,"提示",MB_YESNO|MB_ICONINFORMATION)==IDYES)
		{
			CString strname=m_ctrlperson.GetItemText(i,1);
			//从表中删除对应的记录
			strSQL.Format("delete from person where NAME='%s'",strname);
			m_database.ExecuteSQL(strSQL);
			m_database.Close();
			RefreshData();
		}
	}
}
//////////////////////////////////////////////////////////////////////
//功能:弹出删除记录窗口
//////////////////////////////////////////////////////////////////////
void CMainDlg::OnRadioDel()
{
	//i是记录中所选的记录号,如果没有则返回
	int i=m_ctrlperson.GetSelectionMark();
	CString strSQL,msg,strname;
	strname=m_ctrlperson.GetItemText(i,1);
	msg.Format("第 %d 项,姓名为“%s”的记录将被删除!是否继续?",i+1,strname);
	//如果用户没有选择记录,则提示选取一条记录
	if(i==-1)
	{
		MessageBox("请选择一条要删除的记录!","提示",MB_OK|MB_ICONINFORMATION);
	}
	else
	{
		if(MessageBox(msg,"提示",MB_YESNO|MB_ICONINFORMATION)==IDYES)
		{
			CString strname=m_ctrlperson.GetItemText(i,1);
			//从表中删除对应的记录
			strSQL.Format("delete from person where NAME='%s'",strname);
			m_database.ExecuteSQL(strSQL);
			m_database.Close();
			RefreshData();
		}
	}
}
//////////////////////////////////////////////////////////////////////
//功能:弹出增加数据窗口
//////////////////////////////////////////////////////////////////////
void CMainDlg::OnMenuAdd()
{
	// TODO: Add your command handler code here
	//本对话框对应的数据库连接关闭
	m_database.Close();
	//新建一个CAddInfoDlg的对象
	CAddInfoDlg dlg;
	//新对话框建立到数据库连接
	dlg.m_database.Open(_T("addresslist"));
	//弹出新对话框
	dlg.DoModal();
	//新对话框关闭后,在原对话框中刷新数据显示
	RefreshData();
}
//////////////////////////////////////////////////////////////////////
//功能:弹出help窗口
//////////////////////////////////////////////////////////////////////
void CMainDlg::OnMenuHelp()
{
	// TODO: Add your command handler code here
}
//////////////////////////////////////////////////////////////////////
//功能:退出系统
//////////////////////////////////////////////////////////////////////
void CMainDlg::OnMenuExit()
{
	// TODO: Add your command handler code here
	CMainDlg::OnCancel();
}
//////////////////////////////////////////////////////////////////////
//功能:弹出修改记录窗口
//////////////////////////////////////////////////////////////////////
void CMainDlg::OnRadioMod()
{
	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_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()
{
	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)
{
	//得到所选取项的标号
	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()
{
	m_bsearchflag=true;
}
///////////////////////////////////////////////////////////////////////////
//功能:模糊查询按钮
//////////////////////////////////////////////////////////////////////////
void CMainDlg::OnRadio2()
{
	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(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);
}
相关下载
栏目导航
本类热门阅览