📄 maindlg.cpp
字号:
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 + -