我在编写一个打印程序时碰到一个问题,请各位高手解答
这个api 声明如下
Public Declare Function AddForm Lib "winspool.drv" Alias "AddFormA" (ByVal hPrinter As Long, ByVal Level As Long, pForm As Byte) As Long
其中第三个参数要求是: pForm As Byte,这是一个引用传递,应该是传地址吧,
我建立一个自定义类型(根据系统声明)
Dim myform As FORM_INFO_1(API定义的类型)
myform.ImageableArea.Bottom = 1
myform.ImageableArea.Left = 1
myform.ImageableArea.Right = 1
myform.ImageableArea.Top = 1
myform.pName = "myform"
myform.Size.cx = 100
myform.Size.cy = 100
根据说明应该把这个自定义类型的一个实例传给AddForm函数,也就是pForm参数是一个指向myform的指针,我的理解正确吗?怎样把myform转换成Byte类型?这个函数该怎样用?
这个api 声明如下
Public Declare Function AddForm Lib "winspool.drv" Alias "AddFormA" (ByVal hPrinter As Long, ByVal Level As Long, pForm As Byte) As Long
其中第三个参数要求是: pForm As Byte,这是一个引用传递,应该是传地址吧,
我建立一个自定义类型(根据系统声明)
Dim myform As FORM_INFO_1(API定义的类型)
myform.ImageableArea.Bottom = 1
myform.ImageableArea.Left = 1
myform.ImageableArea.Right = 1
myform.ImageableArea.Top = 1
myform.pName = "myform"
myform.Size.cx = 100
myform.Size.cy = 100
根据说明应该把这个自定义类型的一个实例传给AddForm函数,也就是pForm参数是一个指向myform的指针,我的理解正确吗?怎样把myform转换成Byte类型?这个函数该怎样用?
解决方案 »
- vb变量命名
- 用webb提交了表单,用inet来获取源码,但是不完整
- 请问如何实现---在MSFLexGrid中的某一个单元格右击 来参照数另外一个窗体的数据来更新或插入这一个单元格的数据?
- 有人用过ActiveBar没有?
- datareport的页标头里面放label,的动态添加数据的操作
- 在打开文件对话框中选择一个文件夹即返回?
- 如何设置print对象.papersize属性的值?
- 一个很简单的DataGrid控件的问题,大家帮帮忙,谢谢
- getvolumeinformation获得的硬盘序列号可以修改吗?
- 一个菜鸟免进的问题!高手的擂台!!分可不断加!!!!!!!!
- 请教,SQL统计问题?
- 请教:如何将文本文件转换为pdf格式文件?
我按照你说的改了声明,但一运行程序就提示错误“vb.exe产生了错误,会被windows关闭。您需要重新启动程序“
我调用的语句是r& = AddForm(hPtr&, 1, myform)
这是怎么回事?
r& = AddForm(hPtr&,ByVal 1, myform)
这个错误不是VB的问题,应该是DLL的问题。
可能是参数错误或引用传值错误。
r = AddForm(ByVal hptr, ByVal 1, VarPtr(myform))
我根据msdn的介绍 把FORM_INFO_1的定义增加了 Flags As Long 后,然后赋值 myform.Flags = FORM_USER 就不会出现错误了,但程序没有成功,没有添加成功新的格式,不知怎么办!应该是myform.Flags设置的不对 !!!