照片打印向导 - Win32 apps

2025-12-15 23:25:27 7667

照片打印向导通过提供易于使用的向导界面帮助用户打印照片。 向导使用户能够指定照片打印大小和其他打印选项,然后将照片发送到打印机。 该向导的设计目的是,任何希望为用户提供打印照片并指定大小调整和其他打印选项的应用程序都可以以编程方式调用它。 照片打印向导在 Windows XP 和 Windows Vista 上可用。

照片打印向导提供的功能

支持的照片文件格式

以编程方式启动照片打印向导

照片打印向导提供的功能

照片打印向导提供了一些在常见打印机对话框中可能不可用的选项,例如具有准确尺寸的多布局模板。 布局模板使用户能够最有效地利用照片打印纸上的可用空间。 可通过照片打印向导指定或访问的其他选项包括:

从可用打印机或虚拟打印目标列表中选择打印机, (例如 Microsoft XPS 文档编写器) 。 在 Windows Vista 上,以下选项可能可用,具体取决于打印机或虚拟打印目标的功能:

纸张尺寸。 例如,“Letter”、“Legal”、“A3”。

打印质量,每英寸支持的点数 (dpi) 分辨率。

纸张类型。 例如,“Plain”或“Glossy”。

启动特定打印机的打印首选项和属性。

设置 Windows Vista 上 每个图片 (的副本) 或 Windows XP 上 每个图片 (使用次数) 旋转框值。

指定打印版式模板。 例如, 整页照片 或 电子钱包打印。

选择“ 适合框架的图片 ”选项 (仅适用于 Windows Vista) 。

使用当前指定的选项预览打印的照片。

访问高级打印选项,例如 用于打印的锐化 和 颜色管理 (仅在 Windows Vista) 。

任何应用程序都可以受益于照片打印向导提供的功能和照片打印功能。 应用程序可以传入要打印的文件。 然后,照片打印向导会根据用户指定的选项准备要打印的文件,并将准备好的文件发送到打印机。

下图显示了 Windows Vista 上的照片打印向导界面

下图显示了 Windows XP 上的照片打印向导界面

支持的照片文件格式

在 Windows XP 上,照片打印向导支持 Windows GDI+ 支持的所有图形文件格式。 目前,这些文件格式包括:

位图 (BMP)

图形交换格式 (GIF)

联合图像专家组 (JPEG)

可交换图像文件 (EXIF)

可移植网络图形 (PNG)

标记图像文件格式 (TIFF)

有关 GDI+ 支持的图形文件格式的详细信息,请参阅 位图类型。

在 Windows Vista 上,照片打印向导支持安装了 Windows 图像处理组件 (WIC) 编解码器的任何图像文件格式。 WIC 提供多个标准编解码器,包括:

位图 (BMP)

GIF

图标 格式 (ICO)

JPEG

PNG

TIFF

Windows Media 照片格式

有关 WIC 和 WIC 编解码器的详细信息,请参阅 Windows 映像组件

以编程方式启动照片打印向导

若要调用照片打印向导,请使用以下类标识符 (CLSID) 调用 IDropTarget 接口:

static const CLSID CLSID_PrintPhotosDropTarget =

{0x60fd46de, 0xf830, 0x4894, {0xa6, 0x28, 0x6f, 0xa8, 0x1b, 0xc0, 0x19, 0x0d}};

照片打印向导要处理的文件在 IDataObject 对象中指定。

下面的代码示例演示如何调用照片打印向导。

static const CLSID CLSID_PrintPhotosDropTarget =

{0x60fd46de, 0xf830, 0x4894, {0xa6, 0x28, 0x6f, 0xa8, 0x1b, 0xc0, 0x19, 0x0d}};

// A data object that contains the list of photos to print.

IDataObject* pDataObject;

// Create the Photo Printing Wizard drop target.

CComPtr spDropTarget;

hr = CoCreateInstance(CLSID_PrintPhotosDropTarget,

NULL,

CLSCTX_INPROC_SERVER,

IID_PPV_ARGS(&spDropTarget));

// Drop the data object onto the drop target.

POINTL pt = {0};

DWORD dwEffect = DROPEFFECT_LINK | DROPEFFECT_MOVE | DROPEFFECT_COPY;

spDropTarget->DragEnter(pDataObject, MK_LBUTTON, pt, &dwEffect);

spDropTarget->Drop(pDataObject, MK_LBUTTON, pt, &dwEffect);}