|
讯息处理程式发送一个WM_RENDERFORMAT讯息,wParam的值是所要求的格式。在处理WM_RENDERFORMAT讯息时,不要打开或清空剪贴簿。为wParam所指定的格式建立一个整体记忆体块,把数据传给它,并用正确的格式和相应代号呼叫SetClipboardData。很明显地,为了在处理WM_RENDERFORMAT时正确地构造出此资料,需要在程式中保留这些资讯。当另一个程式呼叫EmptyClipboard时,Windows给您的程式发送一个WM_DESTROYCLIPBOARD讯息,告诉您不再需要构造剪贴簿资料的资讯。您的程式不再是剪贴簿的所有者。
如果程式在它自己仍然是剪贴簿所有者的时候就要终止执行,并且剪贴簿上仍然包含著该程式用SetClipboardData设定的NULL资料代号,它将收到WM_RENDERALLFORMATS讯息。这时,应该打开剪贴簿,清空它,把资料载入记忆体块中,并为每种格式呼叫SetClipboardData,然後关闭剪贴簿。WM_RENDERALLFORMATS讯息是视窗讯息处理程式最後收到的讯息之一。它後面跟有WM_DESTROYCLIPBOARD讯息(由於已经提出了所有资料),然後是正常的WM_DESTROY讯息。
如果您的程式只能向剪贴簿传输一种格式的资料(例如文字),那么您可以把WM_RENDERALLFORMATS和WM_RENDERFORMAT处理结合在一起。这些程式码应该类似下面这样:
如果您的程式使用好几种剪贴簿格式,那么您可能想为wParam所要求的格式处理WM_
RENDERFORMAT。除非程式在存放构造资料所需的资讯时遇到困难,否则不需要处理WM_DESTROYCLIPBOARD讯息。
自订资料格式
到目前为止,我们仅处理了Windows定义的标准剪贴簿资料格式。但是,您 |