?? winsorthzdlg.cpp
字號:
m_targetFile.WriteString("\n};\n");
m_targetFile.Close();
hzkLib.Close();
}
void CWinSortHzDlg::OnCancel()
{
// TODO: Add extra cleanup here
CDialog::OnOK();
}
void CWinSortHzDlg::InitOutput()
{
m_pMemDC = new CDC;
m_pWnd = GetDlgItem(IDC_OUTPUT);
m_pWnd->GetClientRect(&m_rect);
m_pDC = m_pWnd->GetDC();
m_pMemDC->CreateCompatibleDC(m_pDC);
m_memBitmap.CreateCompatibleBitmap(m_pDC,m_rect.right,m_rect.bottom);
m_pOldBmp = m_pMemDC->SelectObject(&m_memBitmap);
m_pMemDC->Rectangle(&m_rect);
m_pMemDC->PatBlt(m_rect.left,m_rect.top,m_rect.right,m_rect.bottom,BLACKNESS);
m_pDC->BitBlt(m_rect.left,m_rect.top,m_rect.right,m_rect.bottom,m_pMemDC,0,0,SRCCOPY);
// m_pMemDC->SetBkMode(TRANSPARENT);
m_pMemDC->SetTextColor(RGB(125,0,125));
}
void CWinSortHzDlg::OnDestroy()
{
CDialog::OnDestroy();
// TODO: Add your message handler code here
if(m_pMemDC != NULL)
{
m_pMemDC->SelectObject(m_pOldBmp);
delete m_pMemDC;
m_pMemDC = NULL;
m_pOldBmp = NULL;
}
if(m_pDC != NULL)
{
delete m_pMemDC;
m_pMemDC = NULL;
}
if(m_memBitmap.m_hObject != NULL)
{
m_memBitmap.DeleteObject();
}
}
void CWinSortHzDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
DisplayLib();
m_pDC->BitBlt(m_rect.left,m_rect.top,m_rect.right,m_rect.bottom,m_pMemDC,0,0,SRCCOPY);
CDialog::OnTimer(nIDEvent);
}
void CWinSortHzDlg::OnDisplay()
{
unsigned short i,j,k;
unsigned char dianzhen[288];
unsigned short row,col;
m_position += m_byteNum;
if(m_position/m_byteNum > m_hzNum)
{
m_position = 0;
}
col = m_byteNum / m_rows;
row = m_rows;
// m_tempFile.Open(m_OpenFile, CFile::modeRead);
m_tempFile.Seek(m_position,SEEK_SET);
m_tempFile.Read(dianzhen,m_byteNum);
for(i=0;i<m_rows;i++)
{
for(j=0;j<col;j++)
{
for(k=0;k<8;k++)
{
if((dianzhen[i*col+j] & (0x80>>k)) != 0)
{
m_pMemDC->SetPixel(j*8+k,i,RGB(255,0,0));
}
else
{
m_pMemDC->SetPixel(j*8+k,i,RGB(0,0,0));
}
}
}
}
// m_tempFile.Close();
OnPaint();
}
void CWinSortHzDlg::OnHzlib()
{
// TODO: Add your control notification handler code here
CString str;
BROWSEINFO bi;
char name[MAX_PATH];
ZeroMemory(&bi,sizeof(BROWSEINFO));
bi.hwndOwner=GetSafeHwnd();
bi.pszDisplayName=name;
bi.lpszTitle="";
bi.ulFlags=0;
LPITEMIDLIST idl=SHBrowseForFolder(&bi);
if(idl==NULL)
return;
SHGetPathFromIDList(idl,str.GetBuffer(MAX_PATH));
str.ReleaseBuffer();
m_hzLibDir=str;
if(str.GetAt(str.GetLength()-1)!='\\')
m_hzLibDir+="\\";
UpdateData(FALSE);
}
void CWinSortHzDlg::OnPredisplay()
{
// TODO: Add your control notification handler code here
m_position -= m_byteNum * 2;
if(m_position < -m_byteNum)
{
m_position = -m_byteNum;
}
OnDisplay();
}
void CWinSortHzDlg::OnBrowselib()
{
UpdateData(TRUE);
if(m_bDisplay)
{
m_browseLibButton.SetWindowText("顯示漢字庫");
m_bDisplay = 0;
KillTimer(1);
}
else
{
if(m_dianzhenSel == "12")
{
if(m_fontSel == "ASC")
{
m_byteNum = 12;
}
else
{
m_byteNum = 24;
}
m_rows = 12;
}
else if(m_dianzhenSel == "16")
{
if(m_fontSel == "ASC")
{
m_byteNum = 16;
}
else
{
m_byteNum = 32;
}
m_rows = 16;
}
else if(m_dianzhenSel == "24")
{
m_byteNum = 72;
m_rows = 24;
}
else if(m_dianzhenSel == "40")
{
m_byteNum = 200;
m_rows = 40;
}
else if(m_dianzhenSel == "48")
{
m_byteNum = 288;
m_rows = 48;
}
m_position = 0;
m_browseLibButton.SetWindowText("停止顯示");
m_bDisplay = 1;
SetTimer(1, 200, NULL);
}
}
void CWinSortHzDlg::DisplayLib()
{
unsigned short i,j,k;
unsigned char dianzhen[288];
unsigned short row,col;
col = m_byteNum / m_rows;
row = m_rows;
m_position += m_byteNum;
m_libFile.Open(m_OpenFile, CFile::modeRead);
m_libFile.Seek(m_position,SEEK_SET);
m_libFile.Read(dianzhen,m_byteNum);
for(i=0;i<m_rows;i++)
{
for(j=0;j<col;j++)
{
for(k=0;k<8;k++)
{
if((dianzhen[i*col+j] & (0x80>>k)) != 0)
{
m_pMemDC->SetPixel(j*8+k,i,RGB(255,0,0));
}
else
{
m_pMemDC->SetPixel(j*8+k,i,RGB(0,0,0));
}
}
}
}
m_libFile.Close();
}
void CWinSortHzDlg::OnAscii()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_targetFile.Open(m_ToFile, CFile::modeCreate|CFile::modeWrite);
m_targetFile.WriteString("/**************************點陣數組********************/");
m_targetFile.WriteString("\ncode char asciiFontOrg[] =\n{\n");
unsigned char dianzhen[288];
unsigned int offse = 0;
CFile hzkLib;
CString m_path;
m_path = m_hzLibDir + m_fontSel + m_dianzhenSel;
unsigned short byteNum;
CString str;
int i,j;
hzkLib.Open(m_path, CFile::modeRead);
if(m_dianzhenSel == "12")
{
byteNum = m_byteNum = 12;
m_rows = 12;
}
else if(m_dianzhenSel == "16")
{
byteNum = m_byteNum = 16;
m_rows = 16;
}
else if(m_dianzhenSel == "24")
{
byteNum = m_byteNum = 48;
m_rows = 24;
}
else if(m_dianzhenSel == "40")
{
byteNum = m_byteNum = 120;
m_rows = 40;
}
else if(m_dianzhenSel == "48")
{
byteNum = m_byteNum = 144;
m_rows = 48;
}
m_position = 0;
m_tempFile.SeekToBegin();
for(i=' '; i<='~'; i++)
{
offse = (i-0x20)*byteNum;
hzkLib.Seek(offse,SEEK_SET);
hzkLib.Read(dianzhen, byteNum);
str.Format("/* %c */\n",i);
m_targetFile.WriteString(str);
for(j=0;j<m_byteNum;j++)
{
if(i==m_hzNum-1 && j==m_byteNum-1)
{
str.Format("0x%02X",dianzhen[j]);
}
else
{
str.Format("0x%02X,",dianzhen[j]);
}
m_targetFile.WriteString(str);
if(((j+1)%m_rows == 0) || j==m_byteNum-1)
{
m_targetFile.WriteString("\n");
}
}
m_tempFile.Write(dianzhen, m_byteNum);
}
m_targetFile.WriteString("\n};\n");
m_targetFile.Close();
hzkLib.Close();
}
void CWinSortHzDlg::OnCreateCarry()
{
// TODO: Add extra validation here
UpdateData(TRUE);
/*************************************************
文件讀取過程
*************************************************/
int j;
long length;
m_sourceFile.Open(m_OpenFile, CFile::modeRead);
CString str;
m_targetFile.Open(m_ToFile, CFile::modeCreate|CFile::modeWrite);
/*************************************************
點陣數組寫入文件
*************************************************/
m_targetFile.WriteString("/**************************點陣數組********************/");
m_targetFile.WriteString("\ncode char chineseFontOrg[] =\n{\n");
unsigned char dianzhen[288];
unsigned short byteNum;
if(m_dianzhenSel == "12")
{
if(m_fontSel == "ASC")
{
byteNum = m_byteNum = 12;
}
else
{
byteNum = m_byteNum = 24;
}
m_rows = 12;
}
else if(m_dianzhenSel == "16")
{
byteNum = m_byteNum = 32;
m_rows = 16;
}
else if(m_dianzhenSel == "24")
{
byteNum = m_byteNum = 72;
m_rows = 24;
}
else if(m_dianzhenSel == "40")
{
byteNum = m_byteNum = 200;
m_rows = 40;
}
else if(m_dianzhenSel == "48")
{
byteNum = m_byteNum = 288;
m_rows = 48;
}
m_position = 0;
m_tempFile.SeekToBegin();
length = m_sourceFile.GetLength();
m_hzNum = length / m_byteNum;
while(m_position < length)
{
m_sourceFile.Seek(m_position,SEEK_SET);
m_sourceFile.Read(dianzhen, byteNum);
m_position += byteNum;
for(j=0;j<m_byteNum;j++)
{
if((m_position>=length) && (j==m_byteNum-1))
{
str.Format("0x%02X",dianzhen[j]);
}
else
{
str.Format("0x%02X,",dianzhen[j]);
}
m_targetFile.WriteString(str);
if(((j+1)%m_rows == 0) || j==m_byteNum-1)
{
m_targetFile.WriteString("\n");
}
}
m_tempFile.Write(dianzhen, m_byteNum);
}
m_targetFile.WriteString("\n};\n");
m_targetFile.Close();
m_sourceFile.Close();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -