【发布时间】:2013-03-27 11:00:21
【问题描述】:
您好,我使用的是Delphi 2010 + Windows XP,您可以在Delphi的Windows XP中调用照片打印向导。
How do I show the Windows photo-printing wizard?
以上提示仅适用于 Windows 7
谢谢。
【问题讨论】:
您好,我使用的是Delphi 2010 + Windows XP,您可以在Delphi的Windows XP中调用照片打印向导。
How do I show the Windows photo-printing wizard?
以上提示仅适用于 Windows 7
谢谢。
【问题讨论】:
MSDN 包含示例代码:
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<IDropTarget> 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);
Delphi 代码是这样的:
uses
ActiveX, ComObj;
const
CLSID_PrintPhotosDropTarget: TGUID = '{60FD46DE-F830-4894-A628-6FA81BC0190D}';
procedure InvokePhotoPrintingWizard;
var
Effect: LongInt;
Position: TPoint;
DataObject: IDataObject;
DropTarget: IDropTarget;
begin
// create the Photo Printing Wizard drop target
OleCheck(CoCreateInstance(CLSID_PrintPhotosDropTarget, nil,
CLSCTX_INPROC_SERVER, IDropTarget, DropTarget));
// drop the data object onto the drop target
Position.X := 0;
Position.Y := 0;
Effect := DROPEFFECT_LINK or DROPEFFECT_MOVE or DROPEFFECT_COPY;
OleCheck(DropTarget.DragEnter(DataObject, MK_LBUTTON, Position, Effect));
OleCheck(DropTarget.Drop(DataObject, MK_LBUTTON, Position, Effect));
end;
【讨论】:
IDataObject 的东西的一些建议,请参阅 How can I create a IDataObject instance with Delphi?。您可以自己实现接口,也可以按照the link 的一些示例代码构建文件列表,然后调用GetUIObjectOf 来获取代表所有文件的数据对象。
DataObject,我已经给你链接证明了这一点。我知道你说这很难,但生活就是这样。 Windows API 的这个特定部分并非微不足道。坐下,仔细阅读,遇到没见过的功能,咨询一下MSDN,你就学会了。如果您仍然迷路,请在此处发布一个新问题,询问您不了解的特定部分。