转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
使用OLE拖放不同程序间的数据         ★★★★

使用OLE拖放不同程序间的数据

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1956 更新时间:2009/4/23 18:37:36
  RegisterDragDrop(Form1.Memo1.Handle,self);//上文提到的函数

end;

 

destructor TDragAndDropOLE.Destroy;

begin

  RevokeDragDrop(Form1.Memo1.Handle);

  inherited;

end;

接下来实现Iunknown,不再做详细说明:

function TDragAndDropOLE._AddRef: integer;

begin

 result:=InterLockedDecrement(FRefCount);

 if Result=0 then Destroy;

end;

 

function TDragAndDropOLE._Release: integer;

begin

 result:=InterLockedIncrement(FRefCount);

end;

 

function TDragAndDropOLE.QueryInterface(const IID: TGUID;

  out Obj): HResult;

begin

 if GetInterface(IID,Obj) then

  result:=S_OK

 else result:=E_NOINTERFACE;

end;

最重要的IDropTarget实现:

function TDragAndDropOLE.DragEnter(const dataObj: IDataObject;

  grfKeyState: Integer; pt: TPoint; var dwEffect: Integer): HResult;

begin

 result:=E_FAIL;

 CanDrop:=E_Fail;

 if assigned(dataObj) then

 begin

  with fe do

  begin

   cfFormat:=CF_TEXT;

   ptd:=nil;

   dwAspect:=DVASPECT_CONTENT;

   lindex:=-1;

   tymed:=TYMED_HGLOBAL;

  end;

  //大家从上面看到的fe是一种我们处理内存数据时常用的转换格式

  //这里它表示将数据格式作为文字(cfFormat),并将其存入一块

  //全局的内存区域(tymed:=TYMED_HGLOBAL),更多的格式请在win32

  //帮助中搜索TFormatEtc

  CanDrop:=dataObj.QueryGetData(fe);//按照fe指定的格式检查数据

  result:=CanDrop;

  if not Failed(result) then

   dwEffect:=DROPEFFECT_COPY

  else dwEffect:=DROPEFFECT_NONE;

  //注意这里我们设置了dwEffect,更多的取值请查看win32帮助

 end;

end;

 

function TDragAndDropOLE.DragLeave: HResult;

begin

 result:=S_OK;

end;

 

function TDragAndDropOLE.DragOver(grfKeyState: Integer; pt: TPoint;

  var dwEffect: Integer): HResult;

begin

 result:=S_OK;

 //我们不需要在这里做其余的操作,当然你可以根据自己的需要完成自己的方法

end;

 

function TDragAndDropOLE.Drop(const dataObj: IDataObject;

  grfKeyState: Integer; pt: TPoint; var dwEffect: Integer): HResult;

var

 medium:stgMedium;

 hData:HGLOBAL;

begin

 result:=E_Fail;

 if not Fa

上一页  [1] [2] [3]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台