用DeviceCapabilities(),DC_MAXEXTENT参数,MSDN上说返回一个POINT 结构,可函数的返回值是DWORD,有谁能帮小弟解困,谢谢了!

解决方案 »

  1.   

    DeviceCapabilities()函数说明如下:DWORD DeviceCapabilities(
      LPCTSTR pDevice,    // pointer to a printer-name string
      LPCTSTR pPort,      // pointer to a port-name string
      WORD fwCapability,  // device capability to query
      LPTSTR pOutput,     // pointer to the output
      CONST DEVMODE *pDevMode 
                          // pointer to structure with device data
    );
    返回值是放在pOutput指向的buffer中的,而函数的返回值,一般用来判断成功与否。举例如下:如果fwCapability值为DC_MAXEXTENT,即要获取打印机纸张大小,则:POINTS ptOutput;
    DWORD dwRtn = DeviceCapabilities(
      lpDevice,
      lpPort,
      DC_MAXEXTENT,
      &ptOutput,     
      NULL // 这里填NULL以获取缺省打印机的设置 
    );if(dwRtn != (DWORD)-1)
    {
      int nPaperWidth = ptOutput.x;
      int nPaperHeight = ptOutput.y;
      ......
    }
      

  2.   

    一开始就试过了,如果参数是DC_PAPER,pOutput中的确存了若干组POINT结构,不过当参数是DC_MAXEXTENT或者DC_MINEXTEXT时,pOutput所指向的地址中无有意义的值,困惑中