?? hanzidlg.cpp
字號:
m_listctrl.SetItemText(m_nItemCount,4,"━");
m_listctrl.SetItemText(m_nItemCount,5,"━");
m_listctrl.SetItemText(m_nItemCount,6,"━");
m_listctrl.SetItemText(m_nItemCount,7,"━");
m_listctrl.SetItemText(m_nItemCount,8,"━");
m_listctrl.SetItemText(m_nItemCount,9,"━");
m_listctrl.SetItemText(m_nItemCount,10,"━");
m_listctrl.SetItemText(m_nItemCount,11,"━");
m_listctrl.SetItemText(m_nItemCount,12,"━");
m_listctrl.SetItemText(m_nItemCount,13,"━");
m_listctrl.SetItemText(m_nItemCount,14,"━");
m_listctrl.SetItemText(m_nItemCount,15,"━");
m_listctrl.SetItemText(m_nItemCount,16,"┛");
}
if(m_WordType == 1) // 顯示24點陣字模
{
int a,b,c,i,j,k;
BYTE n,buffer[72] = ""; //設定一個(24點陣)字模的緩沖區
CString m[24];
DWORD dwRead;
a = m_quma;
b = m_weima;
if(a == 0 || b == 0 || a > 94 || b > 94)
{
AfxMessageBox("區碼、位碼不能等于0或大于94");
return;
}
c = 72 * (94 * (a - 1) + b - 1);
f.Seek(c,CFile::begin);
dwRead = f.Read(buffer,72);
for(i = 0 ; i < 24 ; i++)
{
for(k = 2 ; k >= 0 ; k--)
{
for(j = 0 ; j < 8 ; j++)
{
n = buffer[3 * i + k] >> j;
n = n & 0x01;
if(n == 0x01)
m[8*(2-k) + j] = "■";
else
m[8*(2-k) + j] = " ";
}
}
int m_nItemCount = m_listctrl.GetItemCount();
m_listctrl.InsertItem(m_nItemCount,m[23]);
m_listctrl.SetItemText(m_nItemCount,1,m[22]);
m_listctrl.SetItemText(m_nItemCount,2,m[21]);
m_listctrl.SetItemText(m_nItemCount,3,m[20]);
m_listctrl.SetItemText(m_nItemCount,4,m[19]);
m_listctrl.SetItemText(m_nItemCount,5,m[18]);
m_listctrl.SetItemText(m_nItemCount,6,m[17]);
m_listctrl.SetItemText(m_nItemCount,7,m[16]);
m_listctrl.SetItemText(m_nItemCount,8,m[15]);
m_listctrl.SetItemText(m_nItemCount,9,m[14]);
m_listctrl.SetItemText(m_nItemCount,10,m[13]);
m_listctrl.SetItemText(m_nItemCount,11,m[12]);
m_listctrl.SetItemText(m_nItemCount,12,m[11]);
m_listctrl.SetItemText(m_nItemCount,13,m[10]);
m_listctrl.SetItemText(m_nItemCount,14,m[9]);
m_listctrl.SetItemText(m_nItemCount,15,m[8]);
m_listctrl.SetItemText(m_nItemCount,16,m[7]);
m_listctrl.SetItemText(m_nItemCount,17,m[6]);
m_listctrl.SetItemText(m_nItemCount,18,m[5]);
m_listctrl.SetItemText(m_nItemCount,19,m[4]);
m_listctrl.SetItemText(m_nItemCount,20,m[3]);
m_listctrl.SetItemText(m_nItemCount,21,m[2]);
m_listctrl.SetItemText(m_nItemCount,22,m[1]);
m_listctrl.SetItemText(m_nItemCount,23,m[0]);
}
}
}
void CHanziDlg::OnSourcefile()
{
static char BASED_CODE szFilter[] = "字庫文件 (*.bin *.hzk)|*.bin;*.hzk|所有文件 (*.*)|*.*||";
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, NULL);
if(dlg.DoModal() == IDCANCEL)
return;
m_FileName1 = dlg.GetPathName();
}
void CHanziDlg::OnObjectfile()
{
static char BASED_CODE szFilter[] = "字庫文件 (*.bin *.hzk)|*.bin;*.hzk|所有文件 (*.*)|*.*||";
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, NULL);
if(dlg.DoModal() == IDCANCEL)
return;
m_FileName2 = dlg.GetPathName();
}
void CHanziDlg::OnBeginwrite()
{
UpdateData(TRUE);
CFile fsource,fobject;
//打開源文件并把光標移到文件頭
if(!fsource.Open(m_FileName1,CFile::modeRead,NULL))
{
CString str;
str.Format("打開%s源文件時出錯!",m_FileName1);
AfxMessageBox(str);
return;
}
fsource.SeekToBegin();
//打開目標文件并把光標移到指定位置
int i,j;
i = 32 * 94 * 15;
j = 72 * 94 * 15;
if(!fobject.Open(m_FileName2,CFile::modeReadWrite,NULL))
{
CString str;
str.Format("打開%s目標文件時出錯!",m_FileName2);
AfxMessageBox(str);
return;
}
if(m_writeplace == -1)
{
AfxMessageBox("請選擇寫入目標文件位置");
return ;
}
if(m_writeplace == 0)
fobject.Seek(i,CFile::begin);
if(m_writeplace == 1)
fobject.Seek(j,CFile::begin);
if(m_writeplace == 2)
fobject.SeekToBegin();
if(m_writeplace == 3)
fobject.SeekToEnd();
BYTE buffer[8]; //設定8字節的讀寫緩存
DWORD dwRead;
//循環把源文件寫入目標文件
do
{
dwRead = fsource.Read(buffer,8);
fobject.Write(buffer,dwRead);
}
while(dwRead > 0);
//關閉源文件和目標文件
fsource.Close();
fobject.Close();
AfxMessageBox("寫文件成功");
}
void CHanziDlg::OnSourcefileC()
{
// TODO: Add your control notification handler code here
static char BASED_CODE szFilter[] = "字庫文件 (*.bin *.hzk)|*.bin;*.hzk|所有文件 (*.*)|*.*||";
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, NULL);
if(dlg.DoModal() == IDCANCEL)
return;
m_FileNameC1 = dlg.GetPathName();
}
void CHanziDlg::OnObjectfileC()
{
// TODO: Add your control notification handler code here
static char BASED_CODE szFilter[] = "字庫文件 (*.bin *.hzk)|*.bin;*.hzk|所有文件 (*.*)|*.*||";
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, NULL);
if(dlg.DoModal() == IDCANCEL)
return;
m_FileNameC2 = dlg.GetPathName();
}
void CHanziDlg::OnBeginwriteC()
{
CFile fsource,fobject;
//打開源文件并把光標移到文件頭
if(!fsource.Open(m_FileNameC1,CFile::modeRead,NULL))
{
CString str;
str.Format("打開%s源文件時出錯!",m_FileName1);
AfxMessageBox(str);
return;
}
fsource.SeekToBegin();
//創建目標文件并把光標移到指定位置
if(!fobject.Open(m_FileNameC2, CFile::modeCreate|CFile::modeWrite, NULL))
{
CString str;
str.Format("打開%s目標文件時出錯!",m_FileName2);
AfxMessageBox(str);
return;
}
BYTE buffer[32],BufferObject[32]; //設定32字節的讀寫緩存
DWORD dwRead;
//循環把源文件轉換后寫入目標文件
do
{
dwRead = fsource.Read(buffer,32);
BYTE m;
int i,j,k;
for(i=0 ; i < 32 ; i++)
BufferObject[i] = 0x00;
for(j = 0 ; j < 8 ; j++)
{
for(k = 2*j ; k < 16 ; k++)
{
switch(k)
{
case 0 : m = 0x80; break;
case 2 : m = 0x40; break;
case 4 : m = 0x20; break;
case 6 : m = 0x10; break;
case 8 : m = 0x08; break;
case 10 : m = 0x04; break;
case 12 : m = 0x02; break;
case 14 : m = 0x01; break;
default: m = 0x00;
}
if((buffer[k] >> 7) & 0x01 == 0x01) BufferObject[30] = BufferObject[30] | m;
if((buffer[k] >> 6) & 0x01 == 0x01) BufferObject[28] = BufferObject[28] | m;
if((buffer[k] >> 5) & 0x01 == 0x01) BufferObject[26] = BufferObject[26] | m;
if((buffer[k] >> 4) & 0x01 == 0x01) BufferObject[24] = BufferObject[24] | m;
if((buffer[k] >> 3) & 0x01 == 0x01) BufferObject[22] = BufferObject[22] | m;
if((buffer[k] >> 2) & 0x01 == 0x01) BufferObject[20] = BufferObject[20] | m;
if((buffer[k] >> 1) & 0x01 == 0x01) BufferObject[18] = BufferObject[18] | m;
if((buffer[k] >> 0) & 0x01 == 0x01) BufferObject[16] = BufferObject[16] | m;
}
for(k = 2*j +1 ; k < 16 ; k++)
{
switch(k)
{
case 1 : m = 0x80; break;
case 3 : m = 0x40; break;
case 5 : m = 0x20; break;
case 7 : m = 0x10; break;
case 9 : m = 0x08; break;
case 11 : m = 0x04; break;
case 13 : m = 0x02; break;
case 15 : m = 0x01; break;
default: m = 0x00;
}
if((buffer[k] >> 7) & 0x01 == 0x01) BufferObject[14] = BufferObject[14] | m;
if((buffer[k] >> 6) & 0x01 == 0x01) BufferObject[12] = BufferObject[12] | m;
if((buffer[k] >> 5) & 0x01 == 0x01) BufferObject[10] = BufferObject[10] | m;
if((buffer[k] >> 4) & 0x01 == 0x01) BufferObject[8] = BufferObject[8] | m;
if((buffer[k] >> 3) & 0x01 == 0x01) BufferObject[6] = BufferObject[6] | m;
if((buffer[k] >> 2) & 0x01 == 0x01) BufferObject[4] = BufferObject[4] | m;
if((buffer[k] >> 1) & 0x01 == 0x01) BufferObject[2] = BufferObject[2] | m;
if((buffer[k] >> 0) & 0x01 == 0x01) BufferObject[0] = BufferObject[0] | m;
}
}
for(j = 8 ; j < 16 ; j++)
{
for(k = 2*j ; k < 32 ; k++)
{
switch(k)
{
case 16 : m = 0x80; break;
case 18 : m = 0x40; break;
case 20 : m = 0x20; break;
case 22 : m = 0x10; break;
case 24 : m = 0x08; break;
case 26 : m = 0x04; break;
case 28 : m = 0x02; break;
case 30 : m = 0x01; break;
default: m = 0x00;
}
if((buffer[k] >> 7) & 0x01 == 0x01) BufferObject[31] = BufferObject[31] | m;
if((buffer[k] >> 6) & 0x01 == 0x01) BufferObject[29] = BufferObject[29] | m;
if((buffer[k] >> 5) & 0x01 == 0x01) BufferObject[27] = BufferObject[27] | m;
if((buffer[k] >> 4) & 0x01 == 0x01) BufferObject[25] = BufferObject[25] | m;
if((buffer[k] >> 3) & 0x01 == 0x01) BufferObject[23] = BufferObject[23] | m;
if((buffer[k] >> 2) & 0x01 == 0x01) BufferObject[21] = BufferObject[21] | m;
if((buffer[k] >> 1) & 0x01 == 0x01) BufferObject[19] = BufferObject[19] | m;
if((buffer[k] >> 0) & 0x01 == 0x01) BufferObject[17] = BufferObject[17] | m;
}
for(k = 2*j + 1 ; k < 32 ; k++)
{
switch(k)
{
case 17 : m = 0x80; break;
case 19 : m = 0x40; break;
case 21 : m = 0x20; break;
case 23 : m = 0x10; break;
case 25 : m = 0x08; break;
case 27 : m = 0x04; break;
case 29 : m = 0x02; break;
case 31 : m = 0x01; break;
default: m = 0x00;
}
if((buffer[k] >> 7) & 0x01 == 0x01) BufferObject[15] = BufferObject[15] | m;
if((buffer[k] >> 6) & 0x01 == 0x01) BufferObject[13] = BufferObject[13] | m;
if((buffer[k] >> 5) & 0x01 == 0x01) BufferObject[11] = BufferObject[11] | m;
if((buffer[k] >> 4) & 0x01 == 0x01) BufferObject[9] = BufferObject[9] | m;
if((buffer[k] >> 3) & 0x01 == 0x01) BufferObject[7] = BufferObject[7] | m;
if((buffer[k] >> 2) & 0x01 == 0x01) BufferObject[5] = BufferObject[5] | m;
if((buffer[k] >> 1) & 0x01 == 0x01) BufferObject[3] = BufferObject[3] | m;
if((buffer[k] >> 0) & 0x01 == 0x01) BufferObject[1] = BufferObject[1] | m;
}
}
fobject.Write(BufferObject,dwRead);
}
while(dwRead > 0);
//關閉源文件和目標文件
fsource.Close();
fobject.Close();
AfxMessageBox("寫文件成功");
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -