联机打印向导 - Win32 apps
Windows Vista 联机打印向导可帮助用户订购参与在线打印零售商的照片打印。 此向导旨在使它可由任何希望为用户提供订购照片打印功能的应用程序以编程方式调用。 照片打印向导在 Windows Vista 上可用。 PIX for Windows
联机打印向导提供的 功能
支持的照片文件格式
以编程方式启动联机打印向导
访问联机打印向导图标
联机打印向导 MRU 属性
联机打印向导提供的功能
Windows Vista 联机打印向导使用户可以从一系列参与的在线打印零售商订购打印。 调用时,向导:
接受要为其排序打印的文件或文件列表。
自动检索参与在线打印零售商的当前列表,并使用户能够选择从中购买照片打印的零售商。
指导用户完成流程或订购打印。
任何应用程序都可以受益于 Windows Vista 联机打印向导提供的功能。 应用程序只需要传入将为其排序打印的文件或文件,向导会引导用户完成排序过程。
下图显示了 Windows Vista 联机打印向导,其中显示了参与在线打印零售商的示例列表。
支持的照片文件格式
Windows Vista 联机打印向导支持安装 Windows 映像组件(WIC)编解码器的任何图像文件格式。 WIC 提供了多个标准编解码器,包括:
位图 (BMP)
图形交换格式 (GIF)
图标格式 (ICO)
联合摄影专家组(JPEG)
可移植网络图形 (PNG)
标记的图像文件格式 (TIFF)
Windows 媒体照片格式
有关 WIC 和 WIC 编解码器的详细信息,请参阅 Windows 映像组件。
在线打印零售商支持的文件格式因零售商而异;特定零售商可能不支持 Windows Vista 联机打印向导支持的所有文件格式。 如果用户尝试以所选零售商不支持的格式订购打印,Windows Vista 联机打印向导会通知用户所选零售商不支持提交的文件格式。
以编程方式启动联机打印向导
若要调用 Windows Vista 联机打印向导,请使用以下类标识符(CLSID)调用 IDropTarget 接口:
CLSID_PublishDropTarget
此 CLSID 在 Shobjidl.h 和 Shobjidl.idl 中定义。 Windows Vista 联机打印向导要处理的文件在 IDataObject 对象中指定。
下面的代码示例演示如何调用 Windows Vista 联机打印向导。
// A data object that contains the list of photos to print.
IDataObject* pDataObject;
// Create the Photo Printing Wizard drop target.
CComPtr
hr = CoCreateInstance(CLSID_PublishDropTarget,
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);}
访问联机打印向导图标
Windows Vista Online 打印向导导出可由调用它的应用程序访问和显示的图标。 下图显示了 Windows Vista 联机打印向导图标。
下面的代码示例演示如何通过读取 OPWIcon 属性来检索 Windows Vista 联机打印向导图标的索引。
// Create the Online Printing Wizard drop target.
CComPtr
HRESULT hr = CoCreateInstance(CLSID_PublishDropTarget,
NULL,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&spDropTarget));
// Get the Online Printing Wizard properties.
CComPtr
spDropTarget->QueryInterface(IID_PPV_ARGS(&spPropsBag));
// Read the icon index from the properties set.
CComVariant vtIcon;
int nIndex;
hr = spPropsBag->Read(L"OPWIcon", &vtIcon, NULL);
if SUCCEEDED(hr)
{
nIndex = vtIcon.lVal;
}
联机打印向导 MRU 属性
Windows Vista 联机打印向导定义了三个与最近使用(MRU)在线打印零售商相关的属性。
属性名称
属性值/函数
MRUIcon
可以从此属性中读取最近使用的联机打印零售商的图标索引。
MRUName
可以从此属性中读取最近使用过的在线印刷零售商的名称。
UseMRU
VARIANTVT_BOOL 值,该值指示向导是否应跳过在线打印零售商选择页面,而只需改用最近使用的联机打印零售商。 将此属性设置为 VARIANT_TRUE 跳过零售商选择页。
下面的代码示例演示如何设置 UseMRU 属性,以便 Windows Vista 联机打印向导绕过在线打印零售商选择页面,并自动选择最近使用的零售商。
// A data object that contains the list of photos to order prints for.
IDataObject* pDataObject;
// Create the Online Printing Wizard drop target.
CComPtr
HRESULT hr = CoCreateInstance(CLSID_PublishDropTarget,
NULL,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&spDropTarget));
// Set the UserMRU property to true to skip retailer selection and use
// the MRU retailer instead.
CComQIPtr
if(spPropsBag)
{
VARIANT varTrue = {0};
varTrue.vt = VT_BOOL;
varTrue.boolVal = VARIANT_TRUE;
spPropsBag->Write(L"UseMRU", &varTrue);
}
// 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);
下面的代码示例演示如何读取 MRUName 和 MRUIcon 属性。
// Create the Online Printing Wizard drop target.
CComPtr
HRESULT hr = CoCreateInstance(CLSID_PublishDropTarget,
NULL,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&spDropTarget));
// Get the Online Printing Wizard properties.
CComPtr
spDropTarget->QueryInterface(IID_PPV_ARGS(&spPropsBag));
CComVariant vtMRUName, vtMRUIconIndex;
CComBSTR bstrMRUName;
int nMRUIconIndex;
// Get the MRU name value.
hr = spPropsBag->Read(L"MRUName", &vtMRUName, NULL);
if SUCCEEDED(hr)
{
bstrMRUName = vtMRUName.bstrVal;
}
// Get the MRU icon index value.
hr = spPropsBag->Read(L"MRUIcon", &vtMRUIconIndex, NULL);
if SUCCEEDED(hr)
{
nMRUIconIndex = vtMRUIconIndex.lVal;
}
