⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hanzidlg.cpp

📁 用8052写的一个LED大屏幕显示程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			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 + -