找回密码
 加入
搜索
查看: 2344|回复: 6

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

  [复制链接]
发表于 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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-12-20 16:42:08 | 显示全部楼层
有点汗了,提问题的付钱还收费呀
 楼主| 发表于 2010-12-20 19:06:55 | 显示全部楼层
晕倒,没留意,改不收费了。
 楼主| 发表于 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[0]
EndFunc ;==>_WinAPI_TextOut
Func _AnsiStringLen($sString)
        Local $iLen = DllCall("kernel32.dll", "int", "lstrlen", "str", $sString)
        Return $iLen[0]
EndFunc

评分

参与人数 1金钱 +50 贡献 +2 收起 理由
afan + 50 + 2

查看全部评分

 楼主| 发表于 2010-12-21 18:20:17 | 显示全部楼层
谢谢阿福。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-21 16:43 , Processed in 0.075933 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表