gpt4 book ai didi

c++ - GetClipboardData(CF_HDROP) 剪切和粘贴失败

转载 作者:行者123 更新时间:2023-11-28 05:03:34 25 4
gpt4 key购买 nike

我有一个 MFC 应用程序可以在剪贴板中查找文件,它在复制文件时工作正常但在剪切和粘贴操作期间失败。当我实时调试时,它显示 GetClipboardData(CF_HDROP) 失败并返回错误号 1418。这是我的代码

        TCHAR   lpszFileName[MAX_PATH];
bool bStart = true;
CString csFile ="",
strErr = "";
bool bOpen = OpenClipboard(0);
if(!bOpen)
{
strErr.Format("clipboard Error %d",GetLastError());
WriteLog(TYPECAST_T0_LPTSTR strErr,1,1);
}
HGLOBAL hGlobal = (HGLOBAL)GetClipboardData(CF_HDROP);
if (hGlobal)
{
HDROP hDrop = (HDROP)GlobalLock(hGlobal);
if (hDrop)
{
UINT fileCount = DragQueryFile(hDrop, 0xFFFFFFFF, 0, 0);
UINT filenameLength;
for (UINT i = 0; i < fileCount; ++i)
{
filenameLength = DragQueryFile(hDrop, i, 0, 0);
DragQueryFile(hDrop, i, lpszFileName, filenameLength+1);
csFile = (CString)lpszFileName;
AddFileList(csFile);
}
}
}

else
{
strErr.Format("clipboard Error %d",GetLastError());
WriteLog(TYPECAST_T0_LPTSTR strErr,1,1);
}
CloseClipboard();
GlobalUnlock(hGlobal);

如果有人知道如何解决这个问题,请分享

最佳答案

错误 1418 是 ERROR_CLIPBOARD_NOT_OPEN。我认为这是因为您忘记了没有正确关闭剪贴板。 GlobalUnlock(hGlobal); 应该驻留在 if (hDrop) block 内,并在 关闭剪贴板之前被调用。此外 OpenClipboard 返回 BOOL,而不是 bool 并且 CloseClipboard 返回的 BOOL 值应该接受检查。

关于c++ - GetClipboardData(CF_HDROP) 剪切和粘贴失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45347710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com