我正在尝试使用TextOut函数打印一个新行。
我试过了
TextOut(hDC, 10, 20, "Hello\nWorld", strlen(text));但是输出是"HelloWorld“。
如何使用TextOut打印新行
发布于 2011-08-19 22:51:10
很简单。TextOut没有任何格式化功能。请改用DrawText。请参见将标志设置为居中文本、计算矩形等。您不必使用DT_EDITCONTROL标志来完成DrawText格式设置。例如,
HDC dc = ::GetDC(0);
RECT rc;
char *lpsz= "Hello\r\nWorld";
::SetRect(&rc,0,0,300,300);
::DrawText(dc,lpsz,::strlen(lpsz),&rc,DT_LEFT | DT_EXTERNALLEADING | DT_WORDBREAK);
::ReleaseDC(0,dc);发布于 2011-08-19 22:52:02
TextOut不会格式化像回车符这样的特殊字符,您可以使用DrawText吗?
发布于 2016-07-27 04:51:54
你能用TextOut做的就是每次你需要一个新行的时候调用它,并根据所选的字体大小和打印机等设置增加y坐标(如果所选的打印机在文件端口是“通用/仅文本”,只需一个接一个地保留)。否则,如果文本根本不出现,它将被打乱。考虑到这一点,这个函数适用于纯文本意图,并根据字体属性准确地知道文本的长度。因此,最好的用法是使用POS打印机或使用等宽字体,将所有文本包装操作留给您关注。
int
increment,
y;
char
*text,
*text0;
increment=25;
y=0;
text="Hello";
text0="World";
TextOut(hDC,10,y+=increment,text,strlen(text));
TextOut(hDC,10,y+=increment,text0,strlen(text0));
TextOut(hDC,10,y+=increment,"",0);
TextOut(hDC,10,y+=increment,"",0);https://stackoverflow.com/questions/7123343
复制相似问题