剪贴簿(二十三)

2010-12-30 21:14:24 · 作者: · 浏览: 20194
从链中删除它。您可以在处理WM_DESTROY讯息时呼叫ChangeClipboardChain来完成这项工作。

Windows还有一个允许程式获得第一个剪贴簿浏览器视窗代号的函式:

一般来说不需要这个函式。如果没有目前的剪贴簿浏览器,则传回值为NULL。

下面是一个说明剪贴簿浏览器链如何工作的例子。当Windows刚启动时,目前剪贴簿浏览器是NULL:

剪贴簿浏览器: NULL

一个具有hwnd1视窗代号的程式呼叫SetClipboardViewer。这个函式传回的NULL成为这个程式中的hwndNextViewer值:

目前剪贴簿浏览器: hwnd1

hwnd1的下一个浏览器: NULL

第二个具有hwnd2视窗代号的程式呼叫SetClipboardViewer ,并传回hwnd1:

目前的剪贴簿浏览器: hwnd2

hwnd2的下一个浏览器: hwnd1

hwnd1的下一个浏览器: NULL

每三个程式 (hwnd3)和第四个程式 (hwnd4) 也呼叫SetClipboardViewer ,并且传回hwnd2和hwnd3:

目前的剪贴簿浏览器: hwnd4

hwnd4的下一个浏览器: hwnd3

hwnd3的下一个浏览器: hwnd2

hwnd2的下一个浏览器: hwnd1

hwnd1的下一个浏览器: NULL

当剪贴簿的内容发生变化时, Windows发送一个WM_DRAWCLIPBOARD讯息给hwnd4, hwnd4发送讯息给hwnd3,hwnd3发送讯息给hwnd2,hwnd2发送讯息给hwnd1,hwnd1传回。

现在hwnd2决定通过下列呼叫从链中删除自己:

ChangeClipboardChain (hwnd2, hwnd1) ;

Windows将wParam等於hwnd2、lParam等於hwnd1的WM_CHANGECBCHAIN讯息发送给hwnd4。由於hwnd4的下一个测览器是hwnd3,所以hwnd4把这个讯息传给hwnd3。现在hwn