如果,在下是说如果,您不嫌逐个字符处理慢的话,可以这样:
void ShowMsg(int x,int y,int s,int wide)
{
int bak_x,i,slen;
char str[3];
if (wide>26) wide=26;//强行处理大于屏幕边缘的情况
bak_x=x;//保留原始横坐标
for(;;)//开始进入循环
{
str[0]=*s++;
if (str[0]==0)return;//判断是否结束
if (str[0]>0xA0)//汉字
{
if (x<wide*6-6)//注意这里减6的意义
{
str[1]=*s++;
str[2]=0;
TextOut(x,y,str,1);
x=x+12;
}
else//换行
{
s--;
x=bak_x;
y=y+12;
}
}
else
{
if (x<wide*6)
{
str[1]=0;
TextOut(x,y,str,1);
x=x+6;
}
else//换行
{
s--;
x=bak_x;
y=y+12;
}
}
}
}
这是在下个人理解您所需要的功能而写的,不知道跟您想的是否符合,函数初步测试没有问题~~
[此贴子已经被作者于2004-12-19 20:46:56编辑过]
|