文本输出 如何在单文档里把文本文件里的内容按每行26个汉字的形式输出。谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把代码贴出来看看,View是不是用的CEditView?判断到一行满52个字符是插入一个"\r\n"就能换行了。 是不是用OnDraw输出了,先计算出每个字的高度,然后就每次读26个字,再自己换行。 我用OnDraw输出了,再就是文本文件里面的回车换行怎么辨别。如何计算给定文本文件里字的高度以及字符间距呢。const int bufflen=52; CFile file; int i=1; char buff[bufflen]; memset(buff,0,bufflen); file.Open("text.txt",CFile::modeRead); int length=file.GetLength(); while (52*i<length) { file.Read(buff,bufflen); file.Seek(52*i,CFile::begin); strcat(buff,"\r\n"); pDC->TextOut(0,0,buff); i++; } file.Read(buff,bufflen*i-length); strcat(buff,"\r\n"); pDC->TextOut(0,0,buff); file.Close();各位老大帮帮忙啊。 每個循環後把TextOut的第二個參數加一個數不就行了 你的程序怎麽那麽亂char ch[3];//處理漢字int iX=0,iY=0;while(file.Read(ch,1)!=0){ch[1]=0;ch[2]=0;if(ch[0]<0){if(file.Read(&ch[1],1)!=0){pDC->TextOut(i,j,ch);i+=40;}else{break;}else//if(ch[0]<0){pDC->TextOut(i,j,ch);i+=20;}if(i>200)//一行距離{i=0;j+=40;}}} 重新搞一下,不知道有沒有錯誤了char ch[3];//處理漢字int i=0,i=0;while(file.Read(ch,1)!=0){ ch[1]=0;ch[2]=0; if(ch[0]<0) { if(file.Read(&ch[1],1)!=0) { pDC->TextOut(i,j,ch); i+=40; }else { break; } }else//if(ch[0]<0) { pDC->TextOut(i,j,ch); i+=20; } if(i>200)//一行距離 { i=0; j+=40; }} 我只是給你做一個例子,你看懂了的話就好,我在給你加一下回車換行char ch[3];//處理漢字int i=0,i=0;while(file.Read(ch,1)!=0){ ch[1]=0;ch[2]=0; if(ch[0]<0||ch[0]==0x0d||ch[0]==0a0a) { if(file.Read(&ch[1],1)!=0) { //兩個回車換行符 if((ch[0]==0x0d&&ch[1]==0x0a)||(ch[0]==0x0a&&ch[1]==0x0d)) { i=0;j+=40; }else if((ch[0]==0x0d||ch[0]==0x0a)&&ch[1]!=0x0d&&ch[1]!=0x0a)//一個 { i=0;j+=40; file.Seek(-1,CFile::當前位置); }else { pDC->TextOut(i,j,ch); i+=40; } }else { break; } }else//if(ch[0]<0) { pDC->TextOut(i,j,ch); i+=20; } if(i>200)//一行距離 { i=0; j+=40; }} pDC->TextOut(0,0,buff);所有TextOut都相同坐标试试pDC->TextOut(0,20*i,buff); const int bufflen=52; CFile file; int i=1; char buff[bufflen]; file.Open("text.txt",CFile::modeRead); int length=file.GetLength(); while (52*i<length) { file.Read(buff,bufflen); file.Seek(52*i,CFile::begin); pDC->TextOut(0,20*i,buff); i++; } file.Read(buff,bufflen*i-length); pDC->TextOut(0,20*(i-1),buff); file.Close();最后一行怎么是乱码呢? 26个汉字,占52个字节,每次我Read 52个字节放入缓冲区中,然后再把它输出,此话有何不妥呀,请指教。 第一你的buff除非全是中文(没有数字、字母等),否则就可能产生问题第二最后一个TextOut和上一个TextOut输出到了一行 OpenNI 的简介与初步应用(5) 大家帮我看下CEdit的代码,为什么显示不出来呢 生成子对话框的问题 web控件为什么不自动刷新屏幕!!! ActiveX控件使用问题,高分求解 ADO和DAO可以混用吗? 请问vc中如何设置定时器,相关类是什么?谢谢! 请问用什么阅读工具可以打开一个后缀名为.001、.002之类的文件,急! 那儿有光驱编程接口的资料? 是不是mfc类中不能调用自定义的构造函数 如何禁止其他进程窗口接收键盘消息? spy能完好的运行在win2kserver上吗?
判断到一行满52个字符是插入一个"\r\n"就能换行了。
CFile file;
int i=1;
char buff[bufflen];
memset(buff,0,bufflen);
file.Open("text.txt",CFile::modeRead);
int length=file.GetLength();
while (52*i<length)
{
file.Read(buff,bufflen);
file.Seek(52*i,CFile::begin);
strcat(buff,"\r\n");
pDC->TextOut(0,0,buff);
i++;
}
file.Read(buff,bufflen*i-length);
strcat(buff,"\r\n");
pDC->TextOut(0,0,buff);
file.Close();
各位老大帮帮忙啊。
char ch[3];//處理漢字
int iX=0,iY=0;
while(file.Read(ch,1)!=0)
{
ch[1]=0;ch[2]=0;
if(ch[0]<0)
{
if(file.Read(&ch[1],1)!=0)
{
pDC->TextOut(i,j,ch);
i+=40;
}else
{
break;
}else//if(ch[0]<0)
{
pDC->TextOut(i,j,ch);
i+=20;
}
if(i>200)//一行距離
{
i=0;
j+=40;
}
}}
int i=0,i=0;
while(file.Read(ch,1)!=0)
{
ch[1]=0;ch[2]=0;
if(ch[0]<0)
{
if(file.Read(&ch[1],1)!=0)
{
pDC->TextOut(i,j,ch);
i+=40;
}else
{
break;
}
}else//if(ch[0]<0)
{
pDC->TextOut(i,j,ch);
i+=20;
}
if(i>200)//一行距離
{
i=0;
j+=40;
}
}
int i=0,i=0;
while(file.Read(ch,1)!=0)
{
ch[1]=0;ch[2]=0;
if(ch[0]<0||ch[0]==0x0d||ch[0]==0a0a)
{
if(file.Read(&ch[1],1)!=0)
{
//兩個回車換行符
if((ch[0]==0x0d&&ch[1]==0x0a)||(ch[0]==0x0a&&ch[1]==0x0d))
{
i=0;j+=40;
}else if((ch[0]==0x0d||ch[0]==0x0a)&&ch[1]!=0x0d&&ch[1]!=0x0a)//一個
{
i=0;j+=40;
file.Seek(-1,CFile::當前位置);
}else
{
pDC->TextOut(i,j,ch);
i+=40;
}
}else
{
break;
}
}else//if(ch[0]<0)
{
pDC->TextOut(i,j,ch);
i+=20;
}
if(i>200)//一行距離
{
i=0;
j+=40;
}
}
所有TextOut都相同坐标
试试pDC->TextOut(0,20*i,buff);
CFile file;
int i=1;
char buff[bufflen];
file.Open("text.txt",CFile::modeRead);
int length=file.GetLength();
while (52*i<length)
{
file.Read(buff,bufflen);
file.Seek(52*i,CFile::begin);
pDC->TextOut(0,20*i,buff);
i++;
}
file.Read(buff,bufflen*i-length);
pDC->TextOut(0,20*(i-1),buff);
file.Close();
最后一行怎么是乱码呢?
第二最后一个TextOut和上一个TextOut输出到了一行