snjjj7 发表于 2010-12-20 13:39:41

为什么只能打印出一半句子?附源码,帮我看看。(谢谢阿福帮忙解决)

本帖最后由 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

都市浪子666 发表于 2010-12-20 16:42:08

{:face (207):}有点汗了,提问题的付钱还收费呀

snjjj7 发表于 2010-12-20 19:06:55

晕倒,没留意,改不收费了。

snjjj7 发表于 2010-12-21 11:37:40

怎么没人帮忙呀?看来只能每句连续两次了。

水木子 发表于 2010-12-21 11:43:19

我之前也遇到过这样的问题,你这样试试!在打印的内容后面加几个空白符试试!

比如:“这是要打印的内容” 这里一共8个中文字符,那就在后面加8个空白,如“这是要打印的内容      ” 看看结果如何?

阿福 发表于 2010-12-21 15:09:29

将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

snjjj7 发表于 2010-12-21 18:20:17

谢谢阿福。
页: [1]
查看完整版本: 为什么只能打印出一半句子?附源码,帮我看看。(谢谢阿福帮忙解决)