字库管理程序源码

CStringArray *CAy = new CStringArray;
CStringArray *CBy = new CStringArray;
CStringArray *CCy = new CStringArray;//声明三个数组用于存放BCD三类的字库;
ReadData();//读文件
void CTest003Dlg::ReadData()
{
CString str, cst;
int col= 0;
CFile file(_T("c:\\ziku.txt"),CFile::modeRead);//读取文件;
char *pBuf;
int iLen=file.GetLength();
pBuf =new char[iLen+1];
ZeroMemory(pBuf, iLen+1);
file.Read(pBuf,iLen);
file.Close();
CString sTextB(pBuf);
}


CString 用法示例
int c1b = sTextB.Find(_T("#BEGIN__[B]"));//截取B类文件;
int c2b = sTextB.Find(_T("#END__[B]"));
CString scb = sTextB.Mid(c1b+11, c2b-c1b-11);
while (!scb.IsEmpty())
{
int n = scb.Find(_T("\r\n"));
CString tmp;
tmp = scb.Mid(0, n);
CAy->Add(tmp);
scb = scb.Mid(n + 2);
}
//sTextD.Trim();
int c1d = sTextD.Find(_T("#BEGIN__[D]"));//截取D类文件;
int c2d = sTextD.Find(_T("#END__[D]"));
CString scd = sTextD.Mid(c1d+11, c2d-c1d-11);
//scd.Trim();
while (!scd.IsEmpty())
{
int n = scd.Find(_T("\r\n"));
CString tmp;
tmp = scd.Mid(0, n);
tmp.Trim();
CCy->Add(tmp);
scd = scd.Mid(n + 2);
}
GetDlgItem(IDC_BUTTON6)->EnableWindow(FALSE);按钮变灰色;
GetDlgItem(IDC_BUTTON6)->EnableWindow(TRUE);
delete []pBuf;释放内存;
}
//Listctrl的插入与删除;
void CTest003Dlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
Flag = 1;
m_List1.DeleteAllItems();
m_List2.DeleteAllItems();
int Count = CAy->GetSize();
int colb = 0, i;
CString cstb;
for( i = 1;i < Count; i++)//第零个为空;
{
if (i< 16)
{
cstb = CAy->GetAt(i);
m_List1.InsertItem(colb++,cstb);//list插入一行;

else
{
cstb = CAy->GetAt(i);
m_List2.InsertItem(i-16,cstb);
}
m_List1.InsertItem(colb,_T(" "));
}
}
void CTest003Dlg::OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
*pResult = 0;
//NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
//if(-1!=pNMListView->iItem)
//{
// CString s1;
// s1 = m_List1.GetItemText(pNMListView->iItem,0);//i是行,j是列
// CString s2(_T(""));
// CEdit_1.GetWindowText(s2);


// //SetDlgItemText( IDC_EDIT1 , s2+s1);
// CEdit_1.SetWindowText(s2 + s1);
//}
POSITION pos = m_List1.GetFirstSelectedItemPosition();
if (pos)
{
int i = m_List1.GetNextSelectedItem(pos);//获得选 中行的行标
s1 = m_List1.GetItemText(i,0);//i是行
CString s2(_T(""));
CEdit_1.GetWindowText(s2);
SetDlgItemText( IDC_EDIT1 , s2 + s1);
}


}


void CTest003Dlg::OnNMClickList2(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
*pResult = 0;
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;//获得句柄;
if(-1!=pNMListView->iItem)
{
CString s1;
s1 = m_List2.GetItemText(pNMListView->iItem,0);//i是行,j是列
CString s2(_T(""));
CEdit_1.GetWindowText(s2);
//SetDlgItemText( IDC_EDIT1 , s2+s1);
CEdit_1.SetWindowText(s2 + s1);
}
}


void CTest003Dlg::OnBnClickedButton6()
{
//TODO: Add your control notification handler code here
GetDlgItem(IDC_BUTTON6)->EnableWindow(FALSE);
SFlag == 1;
if (DFlag == 1||RFlag == 1)
{
CFile file(_T("c:\\ziku.txt"),CFile::modeWrite|CFile::modeCreate);//写文件;
CString Blei, strcon;;
strcon=_T("#BEGIN__[B]");
for(int i= 0; i < CAy->GetSize();i++)//B类字;
{
Blei=CAy->GetAt(i);
strcon=strcon + Blei+_T("\r\n");
}
strcon=strcon+_T("#END__[B]\r\n");
strcon=strcon+_T("#BEGIN__[C]");
for(int i= 0; i < CBy->GetSize();i++)//C类字;
{
Blei=CBy->GetAt(i);
strcon=strcon + Blei+ _T("\r\n");
}
strcon=strcon+_T("#END__[C]\r\n");
strcon=strcon+_T("#BEGIN__[D]");
for(int i= 0; i < CCy->GetSize();i++)//D类字;
{
Blei=CCy->GetAt(i);
strcon=strcon + Blei + _T("\r\n");
}
strcon=strcon+_T("#END__[D]\r\n");
int n = strcon.GetLength();
int len = WideCharToMultiByte(CP_ACP,0,strcon,strcon.GetLength(),NULL,0,NULL,NULL);
char * pFileName = new char[len + 1];
WideCharToMultiByte(CP_ACP,0,strcon,strcon.GetLength(),pFileName,len,NULL,NULL);//宽字符转化为多字符;
pFileName[len + 1]= '\0';
file.Write(pFileName,len+1);
file.Close();
delete []pFileName;


}
//CString str = _T("你好,世界!Hello,World");
////注意:以下n和len的值大小不同,n是按字符计算的,len是按字节计算的
//int n = str.GetLength();  
////获取宽字节字符的大小,大小是按字节计算的
//int len = WideCharToMultiByte(CP_ACP,0,str,str.GetLength(),NULL,0,NULL,NULL);
////为多字节字符数组申请空间,数组大小为按字节计算的宽字节字节大小
//char * pFileName = new char[len+1];   //以字节为单位
////宽字节编码转换成多字节编码
//WideCharToMultiByte(CP_ACP,0,str,str.GetLength(),pFileName,len,NULL,NULL);
//pFileName[len+1] = ‘\0‘;   //多字节字符以’\0′结束
}




void CTest003Dlg::OnBnClickedButton7()
{
// TODO: Add your control notification handler code here
if (DFlag == 1||RFlag ==1)
{
if(SFlag!=1)
{


int resul=MessageBox(_T("字库已发生变化,要保存吗?"),_T("字库提示"),MB_ICONQUESTION|MB_YESNOCANCEL);


if(resul==IDYES)//6
{
OnBnClickedButton6();
//CDialog::OnClose(); //关闭窗口;
AfxGetMainWnd()->SendMessage(WM_CLOSE);
}
else if(resul==IDNO)//7
{


//CDialog::OnClose(); //关闭窗口;
AfxGetMainWnd()->SendMessage(WM_CLOSE);
}
else
{
//////////////////////////////////////////////////////////////////////////
}
}
}
else
{
//CDialog::OnClose(); //关闭窗口;
AfxGetMainWnd()->SendMessage(WM_CLOSE);
}


else

{
AFxGetMainWnd()->SendMessage(WM_CLOSE);
}
}

猜你喜欢

转载自blog.csdn.net/u014162133/article/details/38898487