更新时间:2016-01-26 21:47:21浏览次数:1+次
StartDoc函数开始一个作业:
int StartDoc(
_In_ HDC hdc,
_In_ const DOCINFO *lpdi
);
参数里面,第二个参数相比较第一个参数没那么重要,我们只要指定一个既定且明确的设备描述表,然后引用这个函数就行了。第二个参数是一个结构体变量,我们可以随便定义变量名。
typedef struct {
int cbSize;
LPCTSTR lpszDocName;
LPCTSTR lpszOutput;
LPCTSTR lpszDatatype;
DWORD fwType;
} DOCINFO, *LPDOCINFO;
具体参数解释请看MSDN,我就不详述了。
CPrintDialog类有三个构造函数,一般来讲都是CPrintDialog(
BOOL bPrintSetupOnly,
DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE | PD_NOSELECTION,
CWnd* pParentWnd = NULL
);
对于CPrintDialog类的对象初始化函数参数中,其中有个构造函数的第二个参数是一个DWORD,我们在这里面可以设置PD_RETURNDEFAULT风格,当我们创建对话框的时候就不会创建默认的windows打印对话框了,当然你也可以直接设置参数为true而不是false。typedef struct _devicemode {
TCHAR dmDeviceName[CCHDEVICENAME];
WORD dmSpecVersion;
WORD dmDriverVersion;
WORD dmSize;
WORD dmDriverExtra;
DWORD dmFields;
union {
struct {
short dmOrientation;
short dmPaperSize;
short dmPaperLength;
short dmPaperWidth;
short dmScale;
short dmCopies;
short dmDefaultSource;
short dmPrintQuality;
};
struct {
POINTL dmPosition;
DWORD dmDisplayOrientation;
DWORD dmDisplayFixedOutput;
};
};
short dmColor;
short dmDuplex;
short dmYResolution;
short dmTTOption;
short dmCollate;
TCHAR dmFormName[CCHFORMNAME];
WORD dmLogPixels;
DWORD dmBitsPerPel;
DWORD dmPelsWidth;
DWORD dmPelsHeight;
union {
DWORD dmDisplayFlags;
DWORD dmNup;
};
DWORD dmDisplayFrequency;
#if (WINVER >= 0x0400)
DWORD dmICMMethod;
DWORD dmICMIntent;
DWORD dmMediaType;
DWORD dmDitherType;
DWORD dmReserved1;
DWORD dmReserved2;
#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
DWORD dmPanningWidth;
DWORD dmPanningHeight;
#endif
#endif
} DEVMODE, *PDEVMODE, *LPDEVMODE;
具体的请看MSDN
不过,我们得先调用GetDevMode函数来引用这个结构体:
LPDEVMODE dv = dlg.GetDevMode();
接下来的一篇文章,就是利用这个结构体来实现打印方向的控制。
相关资讯