注意的几点问题:
1、WM_DRAWCLIPBOARD 与WM_PAINTCLIPBOARD的区分,WM_PAINTCLIPBOARD是由剪贴板查看器发给使用CF_OWNERDISPLAY剪贴板格式的程序的。
WM_DRAWCLIPBOARD则是由Windows发给当前剪贴板查看器的。
2、当程序想从剪贴板查看器链中退出时,必须调用ChangeClipboardChain,Windows会向当前剪贴板查看器发送一个WM_CHANGECBCHAIN消息。
当程序收到WM_CHANGECBCHAIN消息,则必须检查wParam是否等于你保存的hwndNextViewer值。相等,则把hwndNextViewer设为lParam。这个操作确保将来你得到的任何WM_CHANGECBCHAIN消息不会被发送给从链里退出的那个窗口。(这部分不是太理解)如果wParam不等于hwndNextViewer,并且hwndNextViewer不为NULL,就把消息发送给下一个剪贴板查看器,如果hwndNextViewer值为NULL意味着执行这段代码的程序是链里最后一个剪贴板查看器,在这种情况下,消息不应该再传递。
第二段话不太懂,以后慢慢来理解。
本文深入探讨了剪贴板查看器链中的WM_DRAWCLIPBOARD与WM_PAINTCLIPBOARD的区别,以及如何通过ChangeClipboardChain和WM_CHANGECBCHAIN消息实现程序间的剪贴板交互。重点解释了退出剪贴板查看器链时的正确操作流程,确保消息传递的准确性和完整性。

1276

被折叠的 条评论
为什么被折叠?



