|
ws提供格式名,Windows给程式提供一个序号,它可以用作SetClipboardData和GetClipboardData的格式参数。一般来说,采用这种方法的程式也要以一种标准格式把资料复制到剪贴簿。这种方法允许剪贴簿浏览器在它的显示区域中显示资料(没有与CF_OWNERDISPLAY相关的冲突),并且允许其他程式从剪贴簿上复制资料。
例如,假定我们已经编写了一个以点阵图格式、metafile格式和自己的已注册的剪贴簿格式把资料复制到剪贴簿中的向量绘图程式。剪贴簿浏览器将显示metafile或者点阵图,其他从剪贴簿上读取点阵图和metafile的程式将获得这几种格式。但是,当我们的向量绘图程式需要从剪贴簿上读数据时,它会按照自己已注册的格式复制资料,这是因为这种格式可能包含著比点阵图档案或者metafile更多的资讯。
程式透过下面的呼叫来注册一个新的剪贴簿格式:
iFormat的值介於0xC000和0xFFFF之间。剪贴簿浏览器(或一个通过呼叫EnumClipboardFormats取得目前所有剪贴簿资料格式的程式)可以取得这种资料格式的ASCII名称,这是通过下面呼叫实作的:
Windows将多达iMaxCount个字元复制到psBuffer中。
使用这种方法把资料复制到剪贴簿中的程式写作者,可能需要公开资料格式名称和实际的资料格式。如果这个程式流行起来,那么其他程式就会以这种格式从剪贴簿中复制资料。
实作剪贴簿浏览器
监视剪贴簿内容变化的程式称为「剪贴簿浏览器」。您可以在Windows中得到一个剪贴簿浏览器,但是您也可以编写自己的剪贴簿浏览器程式。剪贴簿浏览器通过传递到浏览器视窗讯息处理程式的讯息来监视剪贴簿内容的变化。
剪贴簿浏览器链
任意数量的剪贴簿浏览器应用程式都可以同时在Windows下执行,它们都可以监视剪贴簿内容的变化。但是,从Windows的角度来看,只存在一个剪贴簿浏览器,我们称之为「目前剪贴簿浏览器」。Windows只保留一个识别目前剪贴簿浏览器的视窗代号,并且当剪贴簿的内容发生变化时只把讯息发送到那个视窗中。
剪贴簿浏 |