当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 一、基本概念 MILY: 宋体; mso-ascii-fon
 

 

    摘要: 协议开发 中移动cmpp2.0协议api(三) 云网(jimzj@21cn.com) 接上篇... 五、发送接口 对于api来说,最重要的一部分就是去做发送数据了。通过socket套接字与网关相连接后,将自己的数据发送出去。 在发送数据前,组装好要发送的数据包,将数据copy一份到发送窗口,对于不要回应的数据包,只要发送成功,就可以退出发送进程。对于要等待回应的包,启动一个......
 ·drag & drop (二)    »显示摘要«
    摘要: 五、ole拖放实现 mfc本身的cview类是支持拖放操作的,通过研究cview类的源码,大体知道它的实现原理是这样的:cview类中有一个coledroptarget类的对象,在视图窗口初始化时,调用coledroptarget类成员函数register(),以此在系统中注册该视图窗口为拖放接收窗口。当进行拖放操作的鼠标指针处于视图窗口范围内时,coledroptarge类会做出反应,它的o......


Drag & Drop 全解析 (一)

一.基本概念

二.两种拖放方式 【程序编程相关:const修饰指针和引用释疑

拖放,是指用鼠标拖动的方法,在不同程序的窗口之间.同一个程序的不同窗口之间或同一程序同一窗口的不同控件之间,进行移动.复制与粘贴等操作的技术.拖放操作是在操作系统的帮助下完成的.被拖动的对象首先向操作系统注册它使用的数据格式,并按指定的数据格式提供数据,拖放操作结束时,接收拖放的窗口按指定的数据格式提取有关数据,并根据提取的数据生成相应的对象. 【推荐阅读:快速初始化内存(1)

三.文件管理器拖放原理及实例 【扩展信息:C++中的mutable和const

拖放有两种类型:ole拖放与文件管理器拖放.这两种方式是完全不同的机制.文件管理器拖放只能处理文件名,通过映射目的窗口的wm_dropfiles消息,窗口就可以收到拖放进来的文件名.ole拖放则更加通用一些,它允许你拖放可同时被保存在剪贴板上的任何数据.本文首先介绍文件管理器拖放,然后再介绍ole拖放,最后给出一个用ole实现的,支持文件拖放操作的增强列表控件clistctrlex.

这种方式的实质就是产生一个消息wm_dropfiles.技术上没有什么难点,主要用到下面几个api函数:dragqueryfile.dragquerypoint.dragfinish.它们的原型与注解分别如下:

uint dragqueryfile(hdrop hdrop, uint ifile, lptstr lpszfile, uint cch)

本函数用来取得拖放的文件名.其中,hdrop是一个指向含有被拖放的文件名的结构体的句柄;ifiles是要查询的文件序号,因为一次可能同时拖动很多个文件;lpszfiles是出口缓冲区指针,保存ifiles指定序号的文件的路径名,cch指定该缓冲区的大小.有两点值得注意,第一,如果我们在调用该函数的时候,指定ifile为0xffffffff,则dragqueryfile将忽略lpszfile与cch参数,返回本次拖放操作的文件数目;第二,如果指定lpszfile为null,则函数将返回实际所需的缓冲区长度.

bool dragquerypoint(hdrop hdrop, lppoint lppt);

本函数用来获取,当拖放操作正在进行时,鼠标指针的位置.第二个参数lppt是一个指向point结构体的指针,用来保存文件放下时,鼠标指针的位置.窗口可以调用该函数以查询文件是否落在自己的窗口矩形中.

void dragfinish(hdrop hdrop);

当拖放操作处理完毕后需调用该函数释放系统分配来传输文件名的内存.


...   下一页
 ·一个智能指针的实现    »显示摘要«
    摘要: 一个智能指针的实现 用c++写程序的人都知道内存泄漏这个问题(除非他从来不动态分内存),对stl有了解的人都知道有auto_ptr这么个智能指针,可因为它只能有一个拥有权,所以不能支持标准容器,一直不太喜欢这点。能开发出一个共享访问的智能指针就好多了(这有点像windows内核对象)。所以,需要有个对象来管理计数问题,这个对象只能和要管理的指针共存亡,当有新的对象指向这块内存时只要把指......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE