WIN32 IsClipboardFormatAvailable函数未设置错误码问题咨询
问题:IsClipboardFormatAvailable未设置错误码的原因
根据微软官方文档描述:如果剪贴板格式不可用,返回值为零。要获取扩展错误信息,请调用GetLastError。
运行以下代码时,输出为0:
#include <Windows.h> #include <cstdio> #include <winerror.h> int main() { //运行程序前已将图片复制到剪贴板 if(!IsClipboardFormatAvailable(CF_UNICODETEXT)) { printf("%lu", GetLastError()); } }
为何IsClipboardFormatAvailable函数未设置错误码?
解答
IsClipboardFormatAvailable返回0分两种情况:目标格式确实不在剪贴板中,或者函数本身调用失败(比如剪贴板被其他进程占用锁定)。- 只有当函数调用实际出错时,才会设置
GetLastError的错误码。如果只是格式不可用(比如你复制的是图片,CF_UNICODETEXT格式本来就不存在),这属于函数的正常预期返回,不会触发错误码设置,此时GetLastError返回的是之前系统或其他操作遗留的错误值(这里刚好是0)。 - 文档里提到的“获取扩展错误信息”是针对函数调用失败的场景,而非格式不存在的正常情况。你的场景就是后者,所以没有新的错误码被设置。
内容的提问来源于stack exchange,提问作者kaan
相关产品推荐
相关产品推荐

