Private Type DEVMODE
          dmDeviceName   As String * 32
          dmSpecVersion   As Integer
          dmDriverVersion   As Integer
          dmSize   As Integer
          
  End Type   Private Declare Function DeviceCapabilities Lib "winspool.drv" _
         Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, ByVal lpPort As String, _
          ByVal iIndex As Long, ByVal lpOutput As String, lpDevMode As DEVMODE) As Long    
请问以上代码中定义的这个DEVMODE类型,其中包含的各个变量(个数,名称,类型)是随便定义的,还是依据 Function DeviceCapabilities 的固定要求定义的,也就是说DEVMODE中的各变量的名称、个数、类型都是DeviceCapabilities的要求固定的?谢谢大家。

解决方案 »

  1.   

    有关打印的系统函数需要特定的结构类型DEVMODE,其中的成员应该与该API所要求的相同
      

  2.   

    开始菜单里的API浏览器,就是"C:\Program Files\Microsoft Visual Studio\Common\Tools\Winapi\APILOAD.EXE"
      

  3.   

    参数个数不能变,数据类型可以酌情变化
    对于传递的结构,必须保证结构的总长度符合要求,结构各成员的数据类型,则可以变通使用。由于结构在内存中是连续排列的,你有时甚至可以不管成员的个数,一次性用Byte数组传递整个结构
      

  4.   

    顶~~~引用 5 楼 homezj 的回复:参数个数不能变,数据类型可以酌情变化
    对于传递的结构,必须保证结构的总长度符合要求,结构各成员的数据类型,则可以变通使用。由于结构在内存中是连续排列的,你有时甚至可以不管成员的个数,一次性用Byte数组传递整个结构
      

  5.   

    变量的名称可以改,它们只是给编程者看的一个标识,运行时CPU可不认识这些,它只认内存地址与数据。
    修改时要注意不能与系统关键字冲突就行。