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

📄 readtxt.cpp

📁 一个通过PCI卡向LED屏发送股票实时行情的系统
💻 CPP
📖 第 1 页 / 共 4 页
字号:
			continue;
		}
		else if(m_buf[kk]=='\n')
		{
			kk++;
			goto ll;
		}
		if(m_buf[kk]=='@'&&m_buf[kk+2]=='['&&(m_buf[kk+4]==']'||m_buf[kk+5]==']'||
									m_buf[kk+6]==']'||m_buf[kk+13]==']')) 
		{
			kk++;
	        ch=tolower(m_buf[kk++]);
			jj=0;
			kk++;
			while(m_buf[kk]!=']')
            {
			    m_str1[jj++]=m_buf[kk];
				kk++;
			}
			m_str1[jj]=0;
			m_value=atol(m_str1);

			HTime_start=m_str1;//wanli
			kk++;
			jj=0;
			m_str1[0];
			if(m_buf[kk]=='['&&(m_buf[kk+2]==']'||m_buf[kk+3]==']'||m_buf[kk+4]==']'||m_buf[kk+11]==']'))
			{
				kk++;
				while(m_buf[kk]!=']')
				{
					m_str1[jj++]=m_buf[kk];
					kk++;
				}
				m_str1[jj]=0;
				HTime_end=m_str1;
				kk++;
			}
			switch((int)ch)
			{
				case 't'://top txt
					m_txt=(BYTE)m_value;
					if(m_txt==0)
					{
						if(m_ptopdrawtxt)
						{
							m_hight+=(m_ptopdrawtxt->maxhight+m_ptopdrawtxt->space);						
							delete m_ptopdrawtxt;
							m_ptopdrawtxt=NULL;
						}
						if(m_pbottomdrawtxt)
						{
							m_hight+=(m_pbottomdrawtxt->maxhight+m_pbottomdrawtxt->space);						
							delete m_pbottomdrawtxt;
							m_pbottomdrawtxt=NULL;
						}
						int rt=m_topdrawtxtList.GetCount();
						m_topdrawtxtList.RemoveAll();
						m_bottomdrawtxtList.RemoveAll();

						m_showrect=m_oldrect;
					}
					break;
				case 'q'://no use
					bClrScreen=TRUE;
					break;
				case 'b'://行间距
					font_space=(WORD)m_value;
		    		m_drawtxt->space=m_value;
					break;
				case 'c'://字体颜色
					font_color=(BYTE)m_value;
					if(old_colorcur!=m_cur)
					{
						CColorDraw * m_demo;

						m_demo=new CColorDraw;
						m_demo->m_curx=m_cur;
						m_demo->m_color=(BYTE)m_value;
						old_colorcur=m_cur;
						m_drawtxt->m_colordrawlist.AddTail(m_demo);
					}
					old_colorcur=m_cur;
					break;
				case 'd':  //延时-速度
					font_delay=(BYTE)m_value;
					break;
				case 'y'://停顿时间
					font_s=(BYTE)m_value;
					break;
				case 'f': //字体
					font_name=(BYTE)m_value;
					if(old_fontcur!=m_cur)
					{
						CFontDraw * m_demo;

						m_demo=new CFontDraw;
						m_demo->m_curx=m_cur;
						m_demo->m_name=(BYTE)m_value;
						old_fontcur=m_cur;
						m_drawtxt->m_fontdrawlist.AddTail(m_demo);
					}
					old_fontcur=m_cur;
					break;
				case 'm'://模式
					font_mode=(BYTE)m_value;
					
					goto llll;//设置了模式控制
					break;		    
				case 's':  //字体尺寸
					font_width=(BYTE)m_value/2;
					if(strlen(m_str1)>0)
						font_hight=atoi(m_str1);
					else
						font_hight=(BYTE)m_value;
					font_hight=atoi(m_str1);//???

					if(font_hight>m_hight)		
						goto lll;//字体高于屏高
					if(font_hight>m_drawtxt->maxhight)
						m_drawtxt->maxhight=font_hight;
					if(m_cur!=old_fontsize)
					{
						CFontSizeDraw * m_demo;
						m_demo=new CFontSizeDraw;
						m_demo->m_curx=m_cur;
						m_demo->m_cx=font_width;
						m_demo->m_cy=font_hight;
						m_drawtxt->m_fontsizelist.AddTail(m_demo);
					}
					old_fontsize=m_cur;
					break;
				case 'h':  //定时控制
					if(!OnCheckTxtPlayTime(HTime_start,HTime_end))	
						return -1;//当前时间不许播放
					break;

  			}
		}
		else
		{//无任何控制符时
			if(m_hight<m_drawtxt->maxhight)
				goto ll;

			if(m_cur==0)
			{
				CFontDraw * m_demofont;

				m_demofont=new CFontDraw;
				m_demofont->m_curx=0;
				m_demofont->m_name=font_name;
				m_drawtxt->m_fontdrawlist.AddTail(m_demofont);

				CColorDraw * m_democolor;

				m_democolor=new CColorDraw;
				m_democolor->m_curx=0;
				m_democolor->m_color=font_color;
				m_drawtxt->m_colordrawlist.AddTail(m_democolor);

				CFontSizeDraw * m_demosize;

				m_demosize=new CFontSizeDraw;
				m_demosize->m_curx=0;
				m_demosize->m_cx=font_width;
				m_demosize->m_cy=font_hight;
				m_drawtxt->m_fontsizelist.AddTail(m_demosize);
			}
			if (m_buf[kk]&0x80) 
			{
				if(((cur_len+2*font_width)<=m_len)||m_txt>0)
				{
					m_str[m_cur++]=m_buf[kk++];
					m_str[m_cur++]=m_buf[kk++];
					cur_len+=2*font_width;
				}
				else
					goto lll; //return TRUE;
			}
			else 
			{
				if(((cur_len+font_width)<=m_len)||m_txt>0)
				{
					m_str[m_cur++]=m_buf[kk++];
					cur_len+=font_width;
				}
				else 
					goto lll; //return TRUE;
			}
		}
	}//end while

lll://字体高于屏高
	if(m_buf[kk]=='\r'||m_buf[kk]=='\n')
		kk++;
	if(m_buf[kk]=='\r'||m_buf[kk]=='\n')
		kk++;
ll:		//一般
	m_txtfile.Seek(-(len-kk),CFile::current);
	////////////////////////////wanli
	Duan_len=kk;
	if(len==0)
		Duan_len=m_showrect.Width()/font_width;
	////////////////////////////
	m_str[m_cur]=0;
	m_drawtxt->m_showstr=m_str;
	if(m_cur==0&&kk>2)
		return 0;
	if(m_cur==0&&kk<=2&&m_hight<m_drawtxt->maxhight)
		return -1;
	return 1;

llll://设置了模式控制
	if(m_buf[kk]=='\r'||m_buf[kk]=='\n')
		kk++;
	if(m_buf[kk]=='\r'||m_buf[kk]=='\n')
		kk++;
	m_txtfile.Seek(-(len-kk),CFile::current);
	if(m_cur==0)
		return 0;
	
	m_str[m_cur]=0;
	m_drawtxt->m_showstr=m_str;
	
	return 2;
}
BOOL CShowTxt::OnCheckTxtPlayTime(CString Time_start, CString Time_end)//wanli
{
	CString str1,str2;
	TCHAR buf[256];
	VERIFY(GetDateFormat(LOCALE_SYSTEM_DEFAULT,0,NULL,"MM/dd",buf,256));
	str1=buf;
	VERIFY(GetTimeFormat(LOCALE_SYSTEM_DEFAULT,0,NULL,"HH:mm",buf,256));
	str2=buf;
	str1+=str2;
	if(str1>=Time_start&&str1<Time_end)
		return TRUE;
	else
		return FALSE;

}
void CShowTxt::CheckMode(CDrawTxt *m_drawtxt)
{
	int ii,jj,len, m_cur;
	CShowDraw* m_demoshowdraw;
	CFontDraw* m_demofontdraw;
	CFontSizeDraw* m_demofontsize;
	CColorDraw* m_democolordraw;
	POSITION m_pos;

	BYTE m_str[1024];
	BYTE m_colorstr[1024];
	BYTE m_fontstr[1024];
	BYTE m_sizestr[1024];

	memset(m_str,0,1024);
	memset(m_fontstr,0,1024);
	memset(m_colorstr,0,1024);
	memset(m_sizestr,0,1024);

	for(ii=0;ii<m_drawtxt->m_fontdrawlist.GetCount();ii++)
	{
		m_pos=m_drawtxt->m_fontdrawlist.FindIndex(ii);
		m_demofontdraw=(CFontDraw *)m_drawtxt->m_fontdrawlist.GetAt(m_pos);
		m_str[m_demofontdraw->m_curx]=1;
		m_cur=m_demofontdraw->m_curx;
		if(ii==(m_drawtxt->m_fontdrawlist.GetCount()-1))
			len=m_drawtxt->m_showstr.GetLength();
		else
		{
			m_pos=m_drawtxt->m_fontdrawlist.FindIndex(ii+1);
			m_demofontdraw=(CFontDraw *)m_drawtxt->m_fontdrawlist.GetAt(m_pos);
			len=m_demofontdraw->m_curx;
		}
		for(jj=m_cur;jj<len;jj++)
			m_fontstr[jj]=ii;
	}
	for(ii=0;ii<m_drawtxt->m_fontsizelist.GetCount();ii++)
	{
		m_pos=m_drawtxt->m_fontsizelist.FindIndex(ii);
		m_demofontsize=(CFontSizeDraw *)m_drawtxt->m_fontsizelist.GetAt(m_pos);
		m_str[m_demofontsize->m_curx]=1;
		m_cur=m_demofontsize->m_curx;
		if(ii==(m_drawtxt->m_fontsizelist.GetCount()-1))
			len=m_drawtxt->m_showstr.GetLength();
		else
		{
			m_pos=m_drawtxt->m_fontsizelist.FindIndex(ii+1);
			m_demofontsize=(CFontSizeDraw *)m_drawtxt->m_fontsizelist.GetAt(m_pos);
			len=m_demofontsize->m_curx;
		}
		for(jj=m_cur;jj<len;jj++)
			m_sizestr[jj]=ii;
	}
	for(ii=0;ii<m_drawtxt->m_colordrawlist.GetCount();ii++)
	{
		m_pos=m_drawtxt->m_colordrawlist.FindIndex(ii);
		m_democolordraw=(CColorDraw *)m_drawtxt->m_fontdrawlist.GetAt(m_pos);
		m_str[m_democolordraw->m_curx]=1;
		m_cur=m_democolordraw->m_curx;
		if(ii==(m_drawtxt->m_colordrawlist.GetCount()-1))
			len=m_drawtxt->m_showstr.GetLength();
		else
		{
			m_pos=m_drawtxt->m_colordrawlist.FindIndex(ii+1);
			m_democolordraw=(CColorDraw *)m_drawtxt->m_colordrawlist.GetAt(m_pos);
			len=m_democolordraw->m_curx;
		}
		for(jj=m_cur;jj<len;jj++)
			m_colorstr[jj]=ii;
	}
	for(ii=0;ii<m_drawtxt->m_showstr.GetLength();ii++)
	{
		if(m_str[ii]==1)
		{
			m_demoshowdraw=new CShowDraw;
			m_pos=m_drawtxt->m_fontdrawlist.FindIndex(m_fontstr[ii]);
			m_demofontdraw=(CFontDraw *)m_drawtxt->m_fontdrawlist.GetAt(m_pos);
			m_demoshowdraw->m_curx=ii;
			m_demoshowdraw->m_name=m_demofontdraw->m_name;
			m_pos=m_drawtxt->m_fontsizelist.FindIndex(m_sizestr[ii]);
			m_demofontsize=(CFontSizeDraw *)m_drawtxt->m_fontsizelist.GetAt(m_pos);
			m_demoshowdraw->m_cx=m_demofontsize->m_cx;
			m_demoshowdraw->m_cy=m_demofontsize->m_cy;
			m_pos=m_drawtxt->m_colordrawlist.FindIndex(m_colorstr[ii]);
			m_democolordraw=(CColorDraw *)m_drawtxt->m_colordrawlist.GetAt(m_pos);
			m_demoshowdraw->m_color=m_democolordraw->m_color;
			m_drawtxt->m_showdrawlist.AddTail(m_demoshowdraw);
		}
	}
}

void CShowTxt::ToMemDC(CDC * m_pmemdc,BOOL b_pos,WORD m_scale,BYTE m_color)
{
	int m_off=0;
	CDrawTxt* m_demo;
	POSITION m_pos;
//	POSITION m_strpos;
	int ii;
	CRect m_rc;
	CBrush	m_brush;
    
    m_brush.CreateSolidBrush(RGB(0,0,0));
	
	m_rc.SetRect(0,0,m_showrect.Width(),m_showrect.Height());//??? not Height()
	m_pmemdc->FillRect(m_rc,&m_brush);

	if(b_pos==TRUE)
	{
		m_pos=m_listdrawtxt.GetHeadPosition();
		while(m_pos)
		{
			m_demo=(CDrawTxt*)m_listdrawtxt.GetNext(m_pos);
			if(m_scale==1)
				m_off+=(m_demo->maxhight+m_demo->space);
			else
				m_off+=(int)(((m_demo->maxhight)/((float)m_scale/100)))/2*2;
		}
		m_off=(m_showrect.Height()-m_off)/2;
	}
	else{
		m_off=0;
	}
	if(m_off<0)		m_off=0;
	
	//m_off+=m_showrect.top;
	for(ii=0;ii<m_listdrawtxt.GetCount();ii++)
	{
		m_pos=m_listdrawtxt.FindIndex(ii);
		m_demo=(CDrawTxt *)m_listdrawtxt.GetAt(m_pos);
		
		ToOneTxtMemDC(m_pmemdc,m_demo,0,m_off,m_color,m_scale,0);
		//ToOneTxtMemDC(m_pmemdc,m_demo,m_scale==1?0:(m_showrect.Width()*(1-1/((float)m_scale/100))/2)/2*2,m_off,m_color,m_scale,0);
//		m_off+=m_demo->maxhight/m_scale;
		m_off+=(m_demo->maxhight+m_demo->space)/m_scale;///////行间距

	}
}

void CShowTxt::ToOneTxtMemDC(CDC * m_pmemdc,CDrawTxt* m_demo,int m_x,int m_off,BYTE m_color,WORD m_scale,BYTE m_c)
{
	int jj;
	int cur_x;
	POSITION m_strpos;
	CShowDraw* m_demostr;
	POSITION m_pos;
	CFont* m_pfont;
	CFont* m_poldfont;
	CString m_str;
	CString m_str1;
	CString m_str2;
	BYTE color=1;
	int cur_pos;
	int cur_len;
	if(bClrScreen)
	{
		CRect m_rc;
		CBrush	m_brush;
		CDC * m_dc;
	    m_dc=m_pshowwnd->GetDC();
    
		m_brush.CreateSolidBrush(RGB(0,0,0));
		m_rc.SetRect(0,0,m_size.cx,m_size.cy);			
		m_dc->FillRect(m_rc,&m_brush);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -