为什么只能打印出一半句子?附源码,帮我看看。(谢谢阿福帮忙解决)
本帖最后由 snjjj7 于 2010-12-21 18:21 编辑利用WinPrint.au3能打印,但我自己写的打印每个句子都是半句的,如下图:(看6楼解决方法)
我写的程序:
#include "WinPrint.au3"
Global $hPrintDC
Local $s_DefaultPrinter, $DOCINFO, $result, $hFont, $hOldFont, $s_TextOut
$s_DefaultPrinter = _WinSpool_GetDefaultPrinter()
If $s_DefaultPrinter = "" Then Return SetError(1, 0, 0)
$hPrintDC = _WinAPI_CreateDC("winspool", $s_DefaultPrinter)
If $hPrintDC = 0 Then Return SetError(1, 0, 0)
$DOCINFO = DllStructCreate($tagDOCINFO)
$result += _WinAPI_StartDoc($hPrintDC, $DOCINFO)
$result += _WinAPI_StartPage($hPrintDC)
$hFont = _WinAPI_CreateFont(50, 0, 0, 0, $FW_NORMAL, False, False, False, $GB2312_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $ANTIALIASED_QUALITY, $FIXED_PITCH, '黑体')
$hOldFont = _WinAPI_SelectObject($hPrintDC, $hFont)
$s_TextOut = "让我一一面对"
$result += _WinAPI_TextOut($hPrintDC, 100, 200, $s_TextOut)
$s_TextOut = "让我1一面对让我1一面对"
$result += _WinAPI_TextOut($hPrintDC, 100, 400, $s_TextOut)
$result += _WinAPI_EndPage($hPrintDC)
$result += _WinAPI_EndDoc($hPrintDC)
_WinAPI_ReleaseDC(0, $hPrintDC)
_WinAPI_DeleteDC($hPrintDC)
Return $result
另附:WinPrint.au3
{:face (207):}有点汗了,提问题的付钱还收费呀 晕倒,没留意,改不收费了。 怎么没人帮忙呀?看来只能每句连续两次了。 我之前也遇到过这样的问题,你这样试试!在打印的内容后面加几个空白符试试!
比如:“这是要打印的内容” 这里一共8个中文字符,那就在后面加8个空白,如“这是要打印的内容 ” 看看结果如何? 将Func _WinAPI_TextOut中的StringLen($sString)改为_AnsiStringLen($sString)
Func _WinAPI_TextOut($hDC, $iXStart, $iYStart, $sString = "")
Local $aResult
$aResult = DllCall("GDI32.dll", "long", "TextOut", "hwnd", $hDC, "long", $iXStart, "long", $iYStart, "str", $sString, "long", _AnsiStringLen($sString))
Return $aResult
EndFunc ;==>_WinAPI_TextOut
Func _AnsiStringLen($sString)
Local $iLen = DllCall("kernel32.dll", "int", "lstrlen", "str", $sString)
Return $iLen
EndFunc
谢谢阿福。
页:
[1]