EmptyClipboard之后调用SetClipboardData

问题描述 投票:0回答:1

当使用

SetClipboardData
参数打开剪贴板时,在调用
EmptyClipboard
后是否需要调用
nullptr
?清除剪贴板内容时,对
SetClipboardData
的调用可以省略吗?

    if (!OpenClipboard(nullptr)) {
        return false;
    }
    EmptyClipboard();
    SetClipboardData(CF_TEXT, nullptr); // is this needed as-is
    CloseClipboard();

该代码用于清除剪贴板内容。不需要剪贴板所有者。省略

SetClipboardData(CF_TEXT, nullptr);
调用是否安全?

c++ winapi
1个回答
0
投票

如果你想清除剪贴板,调用

SetClipboardData()
将数据项放入剪贴板是没有意义的。所以是的,省略它。

特别是因为文档明确指出您无论如何都不能将

SetClipboardData()
与空所有者一起使用。

如果应用程序在 hwnd 设置为 NULL 的情况下调用 OpenClipboard,则 EmptyClipboard 将剪贴板所有者设置为 NULL;这会导致 SetClipboardData 失败。

© www.soinside.com 2019 - 2024. All rights reserved.