DEVNAMES结构

DEVNAMES结构具有如下形式:
typedef struct tagDEVNAMES
{ /* dvnm */
  WORD wDriverOffset;
  WORD wDeviceOffset;
  WORD wOutputOffset;
  WORD wDefault;
  /* wDefault后面是驱动程序,设备和端口名字符串*/
} DEVNAMES;

DEVNAMES结构中包含的字符串指定了打印机的驱动程序,设备和输出端口的名字。PrintDlg函数使用这些字符串来初始化系统定义的Print对话框中的成员。当用户关闭对话框时,将在这个结构中返回有关选中的打印机的信息。

成员:
wDriverOffset(输入/输出)指定了一个以null结尾的字符串的偏移,其中包含了设备驱动程序的文件名(没有扩展名)。对于输入,这个字符串将被用于确定要显示在对话框中的打印机。
wDeviceOffset(输入/输出)指定了以null结尾的字符串(包括null在内,最多有32个字节),其中包含了设备的名字。这个字符串必须与DEVMODE结构中的dmDeviceName成员相同。
wOutputOffset(输入/输出)指定了以null结尾的字符串,其中包含了物理输出设备(输出端口)的DOS设备名。这个字符串必须与DEVMODE结构中的dmDeviceName成员相同。
wDefault指定DEVNAMES结构中包含的字符串是否表示了缺省打印机。这个字符串被用来检验自最近一次打印操作以来,缺省打印机是否发生变化。对于输入操作,如果设置了DN_DEFAULTPRN标志,DEVNAMES结构中的其它值将被检验,与当前的缺省打印机作比较。如果有字符串不匹配,就会显示一个警告信息,通知用户可能需要重新格式化文档。对于输出操作,只有当显示了Print Setup对话框并且用户选择了OK按钮时,wDefault成员才会发生改变。如果选择了缺省的打印机,就会设置DN_DEFAULTPRN标志。如果选择了一个其它打印机,则不会设置这个标志。这个成员中其它所有的位都是保留的,被Print对话框过程内部使用。

请参阅:CPrintDialog::CreatePrinterDC