需要打印多行文本,我采用多个textout分别输出的方法。由下面代码实现int ix1 = 400 , ix2 = 1700 ,ix3= 3200,iy = 800;printDC.TextOut(ix1, iy,"姓  名: " + strUser);
printDC.TextOut(ix2, iy,"性  别: " + strSex);
printDC.TextOut(ix3, iy,"年  龄: " + strAge);
printDC.TextOut(ix1, iy + 100,"地   址: " + strAddress);
printDC.TextOut(ix3, iy + 100,"电  话: " + strTel);
 
printDC.TextOut(ix1, iy + 300,"1");
printDC.TextOut(ix1, iy + 400,"2: " + strh1 + " " + strh2);
printDC.TextOut(ix2, iy + 400,"3: " + strh3 + " " + strh4);
printDC.TextOut(ix3, iy + 400,"4: "+ strh5 + " " + strh6);
printDC.TextOut(ix1, iy + 500,"5: "+ strh7);
printDC.TextOut(ix2, iy + 500,"6: "+ strh8 + " " + strh9);
printDC.TextOut(ix3, iy + 500,"7: "+ strh10 + " " + strh11);
printDC.TextOut(ix1, iy + 600,"8: " + strh12 + " " + strh13);
printDC.TextOut(ix2, iy + 600,"9: " + strh14);“1”没有对齐姓名,退后了几个位置
“8”则是向前了几个位置
还有其他几个位置也没有对齐这是怎么回事?

解决方案 »

  1.   

    呵呵,到现在还没有搞定啊,不要太死板了,还是使用DrawText吧
      

  2.   

    唉。to vcleaner(我没做大哥已经很久了.......) 
    我不是不想用DrawText,但DrawText用起来也不简单啊,他需要rect。居中那个问题暂且就用其他
    因为我可以指定rect的范围,但是后面的内容我没办法挨个指定啊
      

  3.   

    By default, the current position is not used or updated by this function. However, an application can call the SetTextAlign function with the fMode parameter set to TA_UPDATECP to permit the system to use and update the current position each time the application calls TextOut for a specified device context. When this flag is set, the system ignores the nXStart and nYStart parameters on subsequent TextOut calls. 他说设了TA_UPDATECP 标记会忽略nXStart和nYStart参数,不知道会不会是这个关系。
      

  4.   

    楼上,那个标记我没有用这段程序是在对话框中打印的部分
    我把这段代码放到view里就没错。
    郁闷
      

  5.   

    唉,搞定了
    原来是printDC.SetTextAlign(TA_CENTER | TA_TOP);这句话的毛病(在textout前)结合我上一个问题,为什么settextalign总是不对
    是用的毛病还是怎么回事?不管怎么样,先结贴