从Windows Vista开始,正确的方法是使用剪贴板格式的侦听器:
case WM_CREATE:
// ...
AddClipboardFormatListener(hwnd);
// ...
break;
case WM_DESTROY:
// ...
RemoveClipboardFormatListener(hwnd);
// ...
break;
case WM_CLIPBOARDUPDATE:
// Clipboard content has changed
break;
Run Code Online (Sandbox Code Playgroud)
请参阅监视剪贴板内容:
有三种监视剪贴板更改的方法。最古老的方法是创建剪贴板查看器窗口。Windows 2000添加了查询剪贴板序列号的功能,Windows Vista添加了对剪贴板格式侦听器的支持。支持剪贴板查看器窗口,以便与早期版本的Windows向后兼容。新程序应使用剪贴板格式的侦听器或剪贴板的序列号。
看一下监视剪贴板内容:
剪贴板查看器窗口显示剪贴板的当前内容,并在剪贴板内容更改时接收消息。要创建剪贴板查看器窗口,您的应用程序必须执行以下操作:
Run Code Online (Sandbox Code Playgroud)Add the window to the clipboard viewer chain. Process the WM_CHANGECBCHAIN message. Process the WM_DRAWCLIPBOARD message. Remove the window from the clipboard viewer chain before it is destroyed.
将窗口添加到剪贴板查看器链:
case WM_CREATE:
// Add the window to the clipboard viewer chain.
hwndNextViewer = SetClipboardViewer(hwnd);
break;
Run Code Online (Sandbox Code Playgroud)
处理 WM_CHANGECBCHAIN 消息:
case WM_CHANGECBCHAIN:
// If the next window is closing, repair the chain.
if ((HWND) wParam == hwndNextViewer)
hwndNextViewer = (HWND) lParam;
// Otherwise, pass the message to the next link.
else if (hwndNextViewer != NULL)
SendMessage(hwndNextViewer, uMsg, wParam, lParam);
break;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3216 次 |
| 最近记录: |