2011-08-19 75 views
4

我試圖用TextOut函數打印新行。使用TextOut功能打印新行

我試圖

TextOut(hDC, 10, 20, "Hello\nWorld", strlen(text)); 

但輸出的 「HelloWorld」。

如何使用TextOut打印新行?

+0

你有沒有試過\ r \ n? –

+0

是的,輸出相同。 –

回答

3

簡單。 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); 
+0

在'TextOut'函數中,我只給出x和y座標。現在很難用「DrawText」來定位文本。但我會嘗試使用它。 –

2

TextOut不格式化特殊字符如回車符,您可以使用DrawText來代替?

1

所有你可以用的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);